What you need to know
Product Schema is JSON-LD that identifies a product and its commercial data. For Google product snippets, Product needs a name and at least one of offers, review, or aggregateRating. For a sellable product, use Offer with price and priceCurrency, then add availability, URL, image, brand and identifiers when those values are real and visible on the page.
Product Schema.org describes a single product entity. Put descriptive fields such as name, description, image, brand, sku, gtin and mpn on Product. Put price, priceCurrency, availability, url and seller on Offer. Do not create Product markup for category pages that list unrelated products, and never fabricate ratings, identifiers, prices or stock states.
Key properties
The table below summarizes the fields that most often determine whether the entity is clear and internally consistent. Only provide values supported by the page.
| Property | Importance | How to use it |
|---|---|---|
name | Required | The product name. Match the visible product heading. |
offers | Key commercial field | Offer for one sellable offer or AggregateOffer for a real range/multiple offers of the same product. |
image | Strongly recommended | Crawlable HTTPS images that represent the actual product. |
description | Recommended | A concise description matching visible page content. |
sku | Recommended | The real internal catalogue identifier. |
brand | Recommended | A real Brand entity when the page provides a brand. |
gtin / mpn | When available | Use genuine identifiers only; never invent them. |
aggregateRating / review | Optional | Only mark up real visible rating/review data. |
What Product Schema is for
Product markup tells search engines that the primary entity on a page is a specific product. It belongs on product detail or variant pages, not on broad category pages, service pages or editorial articles. The visible page and JSON-LD should describe the same item.
How Product, Offer and AggregateOffer fit together
Product contains identity and descriptive information. Offer contains a concrete commercial offer such as price, currency, availability and purchase URL. AggregateOffer is appropriate when the same product genuinely has a price range or multiple offers.
Price, currency and availability
Keep price synchronized with the visible page and put the ISO 4217 currency code in priceCurrency. Use Schema.org ItemAvailability values such as InStock, OutOfStock, PreOrder or BackOrder. Stale price or stock data is worse than omitting a field you cannot maintain.
SKU, GTIN and MPN
SKU identifies the item in your own catalogue. GTIN and MPN should be genuine manufacturer/global identifiers. Consistent identifiers help search systems reconcile product entities across sources; fabricated identifiers create ambiguity.
Images
Use product images, not favicons, logos, category banners or tracking assets. Absolute HTTPS URLs are safest. Multiple relevant product images can be supplied as an array.
Ratings and reviews
aggregateRating and review must be backed by real user-visible data. ratingValue, reviewCount and authors should agree with the page. Never generate a five-star rating automatically.
Variants
When the page contains variants, keep selected variant, URL, image, price and availability synchronized. Google also documents ProductGroup for product families; stable sku or gtin values help distinguish variants.
Validation workflow
Validate JSON syntax, entity relationships and @id references, then compare every structured value against the rendered page. A valid result does not guarantee a rich result; it only makes the markup technically eligible for use.
JSON-LD examples
Complete Product + Offer JSON-LD example
Replace every example value with data actually visible on your product page.
{
"@context": "https://schema.org",
"@type": "Product",
"@id": "https://example.com/products/studio-monitor/#product",
"name": "Studio Monitor X1",
"description": "Active near-field studio monitor with a 5-inch woofer.",
"image": [
"https://example.com/images/x1-1x1.jpg",
"https://example.com/images/x1-4x3.jpg",
"https://example.com/images/x1-16x9.jpg"
],
"sku": "X1-BLK",
"gtin13": "0123456789012",
"brand": {
"@type": "Brand",
"name": "Example Audio"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/products/studio-monitor/",
"price": "299.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}Google, Bing and Yandex
Google documents Product for product snippets and merchant listings. Product snippets require name plus at least one of offers, review or aggregateRating; merchant-listing scenarios benefit from complete Offer data.
Bing supports Schema.org JSON-LD and can use structured annotations to understand page entities. Accurate Product and Offer data can help interpretation, but markup does not guarantee a particular result layout.
Yandex documents Product together with Offer or AggregateOffer for product snippets. Keep name, description, price/lowPrice and priceCurrency accurate and synchronized with the page.
Important: valid structured data does not guarantee a rich result. Each search engine decides whether to use the data and how to present it.
Common mistakes
- warningUsing Product on a category page that lists unrelated products.
- warningPutting price directly on Product instead of Offer/AggregateOffer.
- warningIncluding a currency symbol inside price.
- warningUsing a logo or banner as the product image.
- warningInventing GTIN, MPN, ratings or reviews.
- warningLeaving stale price or availability values.
Frequently asked questions
Does Product Schema improve rankings by itself?
No. It helps search engines understand the page and can make a page eligible for richer presentations, but it is not a shortcut to higher rankings.
Is Offer required for Product Schema?
For Google product snippets, Product needs at least one of offers, review or aggregateRating. For ecommerce pages, Offer is usually the most useful commercial model.
Can I use Product on a category page?
Not when the page primarily lists unrelated products. Mark up the individual product detail pages instead.
Should I include GTIN when I have one?
Yes, when it is a genuine identifier for the marked-up product. Never create a fake GTIN just to fill a field.