Product schema: required vs recommended properties
Google distinguishes product snippets, which suit review pages and any product page, from merchant listings, which need a page where the product can be bought and are stricter. The table shows the properties for both.
| Property | Status | Format | Notes |
|---|---|---|---|
| Product name | Required | Text | |
| Image URLs | Recommended | List | One URL per line. Several images in different aspect ratios are recommended. |
| Description | Recommended | Text | |
| SKU | Recommended | Text | |
| Brand name | Recommended | Text | |
| Offer | Recommended | Group | At least one of Offer, rating or review is required by Google for a product snippet. |
| Manufacturer part number (MPN) | Optional | Text | |
| GTIN (barcode) | Optional | Text | The barcode number: 8, 12, 13 or 14 digits. |
| Offer › Price | Optional | Number | |
| Offer › Currency | Optional | ISO 4217 code | ISO 4217 code. Required for merchant listings. |
| Offer › Availability | Optional | One of a fixed set | |
| Offer › Price valid until | Optional | Date, YYYY-MM-DD | |
| Offer › Offer URL | Optional | URL | |
| Aggregate rating | Optional | Group | Only if the page shows real customer reviews for this product. |
| Aggregate rating › Rating value | Optional | Number | |
| Aggregate rating › Number of reviews | Optional | Number |
Is Product markup eligible for a Google rich result?
Product markup can produce product snippets (rating, price and availability in the result) and merchant listing experiences. Merchant listings need a page where the product can be bought, and stricter fields.
Status verified on 24 September 2026. Google’s documentation: https://developers.google.com/search/docs/appearance/structured-data/product-snippet
About Product structured data
Product markup can make a search result show a rating, a price and stock status. Which of those appear depends on the fields you provide and on whether the page is a product review, an aggregator, or a page where the product can be bought.
For a page where customers can buy, the merchant listing requirements apply: the offer needs a price and a currency as well as a name and image. Adding a GTIN, MPN and brand improves matching to Google’s product catalogue.
Common Product schema mistakes
- Marking up a product with no offer, rating or review. Google requires at least one of the three for a product snippet, and a name alone is not enough.
- Putting a price in text form, such as “$89.00”, in the price property. Price is a plain number; the currency belongs in priceCurrency as an ISO 4217 code.
- Marking up prices or availability that differ from what the page shows. The values in the markup must match the visible page.
- Using aggregateRating on a product with no visible customer reviews, or copying ratings from another site.
- Leaving out availability, then wondering why the result shows no stock status. Use the full schema.org URL or the enumeration name, such as InStock.
- Marking up a category or listing page as a single Product. Each Product markup should describe one product on a page about that product.
Product schema example
A backpack with two images, a brand, an in-stock offer and a rating of 4.6 from 132 reviews, as generated on this page, is shown below.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Trailblazer 40L Backpack",
"image": [
"https://example.com/img/trailblazer-40-front.jpg",
"https://example.com/img/trailblazer-40-side.jpg"
],
"description": "A 40-litre hiking backpack with a rain cover, padded hip belt and laptop sleeve.",
"sku": "TB-40-GRN",
"mpn": "TB40G",
"brand": {
"@type": "Brand",
"name": "Trailblazer"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/products/trailblazer-40",
"price": 89,
"priceCurrency": "USD",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.6,
"reviewCount": 132
}
}How to use it
- Fill in the product details — the form marks each field Required, Recommended or Optional.
- Watch the JSON-LD and the validation list update as you type.
- Copy the JSON-LD, the HTML script tag or the Next.js snippet, or download the .json file.
- Paste it into your page, then check it with Google’s Rich Results Test.
Frequently asked questions
Which fields are required for Product schema?
For a product snippet, Google requires a name and at least one of offers, aggregateRating or review. Merchant listings additionally need a price and a currency on the offer.
How do I write the price?
As a plain number in price, such as 89.00, with the currency as a separate ISO 4217 code in priceCurrency, such as USD. Do not include the currency symbol in the price.
What availability values can I use?
Values from schema.org ItemAvailability, such as InStock, OutOfStock, PreOrder, BackOrder, SoldOut, LimitedAvailability, OnlineOnly and Discontinued. This generator outputs the full schema.org URL.
Can I add reviews to my own product?
You can add aggregateRating and reviews when the page shows genuine customer reviews of that product. Do not mark up reviews you wrote yourself or copied from elsewhere.
Does Product markup guarantee a rich result?
No. Google decides whether to show one. Valid markup makes you eligible; it does not guarantee a rating, price or availability line in the result.
Valid markup makes a page eligible for a rich result; it does not guarantee one. Google decides what to show. Test your page with Google’s Rich Results Test before relying on it.