Skip to content

Product schema generator

Generate Product markup that covers both of Google's product experiences: product snippets (ratings and price under a result) and merchant listings (Shopping surfaces).

@Product
Required for merchant listings.
Identifiers
Offer
Product snippets need one of offers, review or aggregateRating.
Returns & shipping
Leave empty to omit the return policy.
Ratings (only real, on-page reviews)

Your entries are saved in this browser only (localStorage). Privacy

Required
2/2
Recommended
2/3

All Google-required properties present. That makes the page eligible, not guaranteed. Google's docs

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Trailhead 2 waterproof hiking boot",
  "description": "Full-grain leather mid boot with a waterproof membrane and a Vibram outsole.",
  "image": [
    "https://example.com/img/trailhead2-1x1.jpg",
    "https://example.com/img/trailhead2-4x3.jpg"
  ],
  "brand": {
    "@type": "Brand",
    "name": "Example Outfitters"
  },
  "sku": "TH2-BRN-42",
  "gtin": "0123456789012",
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/p/trailhead-2",
    "price": 149,
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "US",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": 0,
        "currency": "USD"
      },
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "US"
      }
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.6,
    "ratingCount": 212,
    "reviewCount": 87
  }
}
</script>
  • ?Recommended for Product snippet: add review if it applies.review

Checked in your browser against the required and recommended properties Google documents for this type. Confirm with Google's Rich Results Test once it's live.

Example Outfittersexample.com/p/trailhead-2
Trailhead 2 waterproof hiking boot
Rating: 4.6/5 · 212 reviewsUSD 149In StockFree delivery30-day returns
Full-grain leather mid boot with a waterproof membrane and a Vibram outsole.

An illustration of what the markup can feed. Google decides what actually appears and valid markup never guarantees a rich result.

When to use Product markup

  • A page that sells one product, or one product with variants.
  • Review pages about a single product (use review or aggregateRating instead of offers).
  • Not for category pages listing many products.

Getting it right

  • Product snippets need a name plus at least one of offers, review or aggregateRating.
  • Merchant listings additionally need an image and an Offer with price and priceCurrency. Prices are plain numbers: 149.00, not $149.
  • Add a return policy and shipping details at offer level, or configure them once in Merchant Center or with Organization markup.
  • Only mark up ratings that shoppers can see on the page. Google's review snippet guidelines forbid invented or incentivised reviews that aren't disclosed.
  • Use a GTIN whenever the product has one; it helps Google match your offer to the product.

Source: Google Search Central, Product snippet structured data documentation, and schema.org/Product.

Google's property list

PropertyGoogle says
namerequired
review or aggregateRating or offersrequired
aggregateRatingrecommended
offersrecommended
reviewrecommended

Example output

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Trailhead 2 waterproof hiking boot",
  "description": "Full-grain leather mid boot with a waterproof membrane and a Vibram outsole.",
  "image": [
    "https://example.com/img/trailhead2-1x1.jpg",
    "https://example.com/img/trailhead2-4x3.jpg"
  ],
  "brand": {
    "@type": "Brand",
    "name": "Example Outfitters"
  },
  "sku": "TH2-BRN-42",
  "gtin": "0123456789012",
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/p/trailhead-2",
    "price": 149,
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "US",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": 0,
        "currency": "USD"
      },
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "US"
      }
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.6,
    "ratingCount": 212,
    "reviewCount": 87
  }
}

Product schema questions

What is the difference between product snippets and merchant listings?

Product snippets are the richer text results (stars, price) for pages about a product. Merchant listings power shopping experiences and require a purchasable offer with price, currency and image. The same Product markup can qualify for both.

Why does Search Console say "Missing field priceValidUntil"?

It is a recommended property, so it shows as a non-critical warning. Add it if the price genuinely expires; otherwise it is safe to leave out.

Can I add star ratings for my own products?

Yes, if the ratings come from real customers and are visible on the page. Ratings you write yourself, or ones pulled from another site, break Google's guidelines.

Related generators