Product Schema

Product Schema Generator

Generate Product JSON-LD schema for Google Shopping rich results and product snippets

Configure Schema

Article: Blog posts, news articles, guides

Generated Schema

// Fill in the form to generate schema markup

Other Schema Generators

About Product Schema Generator

Product schema markup enables rich product information to appear directly in Google Search results — including price, availability, star ratings, and review counts. These product rich results appear as enhanced snippets with visual elements that stand out from standard blue links, driving significantly higher click-through rates for e-commerce and product pages.

With Google's increasing integration of product information into search results through Google Shopping, Merchant Center, and product rich snippets, Product schema has become one of the most valuable structured data types for e-commerce businesses. Correctly implemented Product schema can get your product information into Google's Shopping Graph, which powers product results across Search, Images, and Shopping tabs.

The Product schema generator creates valid JSON-LD markup for your product pages including all required and recommended properties — name, description, image, price, availability, brand, SKU, and aggregate ratings. Our generator validates your inputs against Google's requirements and outputs schema that passes the Rich Results Test.

Product Schema and Google's Shopping Graph

Product schema connects your product pages to Google's Shopping Graph — a massive knowledge base of products, prices, and availability data that Google uses to power product results across its entire ecosystem. When you implement Product schema correctly, your products become discoverable not just in standard web search but also in Google Images, Google Shopping, and increasingly in Google's AI-powered shopping features.

The most impactful properties in Product schema for search visibility are AggregateRating (star ratings and review counts) and Offer (price and availability). Pages with AggregateRating schema frequently receive star rating display in search results, which multiple studies have shown increases click-through rates by 15-30%. The Offer properties enable price display in rich snippets and eligibility for Google's free product listings.

Google has become stricter about Product schema requirements over time. As of recent updates, Product schema must include either a Review, AggregateRating, or Offer property to be eligible for enhanced rich results. Standalone Product schema without pricing or review data receives less preferential treatment. This makes ensuring your Offer and AggregateRating data is accurate and up-to-date critical for maintaining rich result eligibility.

Key Considerations

Price and Availability Accuracy

Google requires that price and availability in your schema match what users see on the page. Discrepancies between schema data and page content can result in manual actions and rich result removal. Keep schema data dynamically generated and synchronized with your actual product data — never hardcode prices that could become outdated.

AggregateRating Requirements

For star ratings to appear in search results, AggregateRating must include ratingValue (average score), reviewCount or ratingCount (number of ratings), and bestRating (maximum possible score, typically 5). The rating must reflect genuine customer reviews — fabricated ratings violate Google's policies and can result in penalties.

Product Image Requirements

Product images in schema should be high quality, show the actual product, and be at least 160x90px (larger is better for Google Images). Include multiple images from different angles if available. Images must be crawlable by Googlebot — not behind authentication or blocked by robots.txt.

GTIN and Identifiers

Including product identifiers — GTIN (barcode), MPN (manufacturer part number), or ISBN for books — significantly improves Google's ability to match your product to its Shopping Graph knowledge base. Products with GTINs are more likely to appear in Google Shopping and product comparison features.

Common Product Issues

Data Accuracy Issues

  • Price in schema not matching price displayed on page
  • Availability showing 'InStock' when product is actually out of stock
  • Outdated prices after sales or price changes not reflected in schema
  • Currency not specified in priceCurrency property

Missing Required Properties

  • Missing name property — required for all Product schema
  • Missing Offer block — required for price rich results
  • AggregateRating missing ratingValue or reviewCount
  • Missing image property reducing rich result eligibility

Review and Rating Issues

  • Fabricated review ratings violating Google's policies
  • Self-reviews or incentivised reviews marked as organic
  • ratingValue outside the 1-5 range without specifying bestRating
  • reviewCount set to 0 but ratingValue provided — inconsistent data

Implementation Guide

Complete Product JSON-LD Schema

Full Product schema with all recommended properties for maximum rich result eligibility:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Premium Wireless Headphones",
  "description": "High-fidelity wireless headphones with 40-hour battery life and active noise cancellation.",
  "image": [
    "https://example.com/images/headphones-front.jpg",
    "https://example.com/images/headphones-side.jpg"
  ],
  "brand": {
    "@type": "Brand",
    "name": "AudioPro"
  },
  "sku": "WH-1000XM5",
  "gtin13": "4548736132276",
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/headphones",
    "priceCurrency": "USD",
    "price": "349.99",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "name": "Example Store"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "2847",
    "bestRating": "5",
    "worstRating": "1"
  },
  "review": {
    "@type": "Review",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5",
      "bestRating": "5"
    },
    "author": {
      "@type": "Person",
      "name": "Jane Smith"
    },
    "reviewBody": "Outstanding sound quality and comfort. Battery life exceeds the claimed 40 hours."
  }
}
</script>

Dynamic Product Schema in Next.js

Generate Product schema dynamically from your product data:

// app/products/[slug]/page.tsx
export default async function ProductPage({ params }) {
  const product = await getProduct(params.slug);

  const productSchema = {
    "@context": "https://schema.org",
    "@type": "Product",
    name: product.name,
    description: product.description,
    image: product.images,
    brand: { "@type": "Brand", name: product.brand },
    sku: product.sku,
    offers: {
      "@type": "Offer",
      priceCurrency: "USD",
      price: product.price.toString(),
      priceValidUntil: product.salePriceExpiry ?? "2026-12-31",
      availability: product.inStock
        ? "https://schema.org/InStock"
        : "https://schema.org/OutOfStock",
      itemCondition: "https://schema.org/NewCondition",
    },
    ...(product.rating && {
      aggregateRating: {
        "@type": "AggregateRating",
        ratingValue: product.rating.average.toString(),
        reviewCount: product.rating.count.toString(),
        bestRating: "5",
      },
    }),
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(productSchema) }}
      />
      {/* Product page content */}
    </>
  );
}

Merchant Center Integration

Connect your Product schema to Google Merchant Center for full Shopping integration:

// For Google Merchant Center eligibility, ensure:

// 1. Product schema matches your Merchant Center feed data exactly
// 2. Required fields: name, image, price, availability, brand, GTIN

// 3. Add merchant return policy schema:
{
  "@type": "MerchantReturnPolicy",
  "applicableCountry": "US",
  "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
  "merchantReturnDays": 30,
  "returnMethod": "https://schema.org/ReturnByMail",
  "returnFees": "https://schema.org/FreeReturn"
}

// 4. Add shipping details:
{
  "@type": "OfferShippingDetails",
  "shippingRate": {
    "@type": "MonetaryAmount",
    "value": "0",
    "currency": "USD"
  },
  "deliveryTime": {
    "@type": "ShippingDeliveryTime",
    "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1 },
    "transitTime": { "@type": "QuantitativeValue", "minValue": 3, "maxValue": 5 }
  }
}

Common Use Cases

  • E-commerce product pages targeting Google Shopping rich results
  • Product comparison pages with multiple product schemas
  • Review sites adding aggregate rating markup to product listings
  • SaaS pricing pages using Product schema for plan listings
  • Marketplace listings wanting price and availability in search snippets

Pro Tip

Keep your Product schema data dynamically generated and synchronized with your actual product database. Static or hardcoded schema that falls out of sync with real prices and availability is worse than no schema — Google may apply a manual action for misleading structured data. In Next.js, generate schema server-side from the same data source that powers your product page.

Frequently Asked Questions

What is the difference between Product schema and Google Merchant Center?+
Product schema is structured data markup on your web pages that helps Google understand product information for rich results in web search. Google Merchant Center is a platform where you submit a product feed for Google Shopping ads and free product listings. Both contribute to Google's Shopping Graph. For maximum visibility, implement both — Product schema for organic rich results and Merchant Center for Shopping tab presence.
Do I need a review to use Product schema?+
No. The Review and AggregateRating properties are recommended but not required for basic Product schema. However, without rating data, your schema is less likely to trigger enhanced rich results with star ratings. You do need at least an Offer property (with price and availability) for price rich results. A Product schema with only name, description, and image provides minimal rich result benefit.
How do I handle product variants in schema?+
For product variants (different colours, sizes), you can either implement separate Product schemas for each variant page, or use the ProductGroup schema type that contains multiple Product variants. Google recommends separate Product schema on each variant's individual URL, with each variant having its own accurate price, availability, and image data.
Can Product schema help with Google Images traffic?+
Yes. Product schema with high-quality images makes your product images eligible for product badge overlays in Google Images — showing the price and store name directly on the image thumbnail. This significantly increases the click-through rate from image search, which can be a substantial traffic source for visual products like clothing, furniture, and electronics.
How often should I update my Product schema?+
Product schema should update in real-time with your product data — especially price and availability. Ideally, schema is generated dynamically on each page request from your database. If you use static generation in Next.js, set appropriate revalidation intervals to ensure pricing data doesn't become stale. Google may penalise sites where schema data consistently doesn't match the page content.