Product Schema Markup: The Complete JSON-LD Guide for Rich Results
Understand with AI
Discuss with your preferred AI assistant
Rich results with stars and price can lift click-through versus a plain blue link.
A complete Product JSON-LD block takes minutes to generate, validate, and paste.
Google explicitly recommends JSON-LD over Microdata for product structured data.
Product schema is the structured data that lets Google understand exactly what you sell — the name, price, availability, condition, and how shoppers rate it. Add it correctly and your listings become eligible for product rich results: the star ratings, price, and stock status that appear right in the search results and pull in clicks before a shopper ever lands on your page.
This guide explains what Product schema is, which properties matter, how to mark it up with JSON-LD, and the mistakes that quietly disqualify pages from rich results.
What Is Product Schema?
Product schema is a vocabulary from schema.org that describes a product as machine-readable data. You embed it in a page using JSON-LD — a small block of JSON inside a <script type="application/ld+json"> tag in your HTML. Search engines read it to confirm the page is a product and to extract the details they display in enhanced listings.
A complete Product node usually nests two other types: an Offer (price, currency, availability, condition) and an AggregateRating (average rating and the number of reviews). Together they form the trio Google looks for when deciding whether a page qualifies for product rich results.
Which Product Properties Matter
Google distinguishes between required and recommended properties. Missing a required one disqualifies the page; missing recommended ones simply limits how rich the result can be.
| Property | Role | Notes |
|---|---|---|
| name | Required | The product title shoppers recognise. |
| image | Strongly recommended | Absolute https URLs; multiple sizes help. |
| offers (price, priceCurrency, availability) | Required for the price/stock result | Currency must be ISO 4217 (USD, EUR, INR). |
| aggregateRating (ratingValue, reviewCount) | Required for the star result | Must reflect ratings genuinely visible on the page. |
| sku / gtin / mpn | Recommended | Unique identifiers improve matching and eligibility. |
| brand, description, itemCondition | Recommended | Add context and unlock more display options. |
How to Add Product Schema with JSON-LD
1. Choose JSON-LD over Microdata
Google explicitly recommends JSON-LD because it lives in a single script block, separate from your visible HTML. That makes it far easier to generate, audit, and keep in sync than Microdata sprinkled across your markup.
2. Build the Product node
Start with @context and @type: "Product", then add the name, image, and description. Nest an Offer for commercial details and an AggregateRating for review data. Use the full schema.org URLs for enumerated values — for example https://schema.org/InStock for availability and https://schema.org/NewCondition for condition.
3. Use the correct GTIN property
Global Trade Item Numbers come in fixed lengths, and schema.org expects the matching property: an 8-digit code uses gtin8, a 12-digit UPC uses gtin12, a 13-digit EAN uses gtin13, and a 14-digit case code uses gtin14. Our generator detects the length and emits the right property automatically.
4. Paste it into your page and validate
Drop the script tag into the <head> or <body> of the product page, then run it through Google's Rich Results Test and the Schema.org validator. Green checks mean the page is eligible — though eligibility is not a guarantee the rich result will always show.
Product Schema Best Practices
- Match the visible page. The price, availability, and ratings in your markup must equal what a shopper actually sees, or Google may issue a manual action.
- Only mark up real reviews. AggregateRating must come from genuine, on-page reviews — never invented or self-serving ratings.
- Keep prices fresh. Add
priceValidUntiland update it; stale price data weakens eligibility over time. - Provide an identifier. Include at least one of SKU, GTIN, or MPN so Google can confidently match your product.
- Use absolute image URLs. Relative paths and data URIs are not reliably crawled.
Common Product Schema Mistakes
- Marking up ratings that do not appear anywhere on the page.
- Using a plain string for availability instead of the full
https://schema.org/InStockURL. - Omitting
priceCurrencywhile still declaring a price. - Putting a rating outside its scale (for example 4.6 when bestRating is 1).
- Marking up a category or listing page with a single Product instead of an ItemList.
Expert Tips
Match the markup to the page
Price, availability, and ratings in your schema must equal what a shopper actually sees. Mismatches can trigger a manual action and remove your rich results.
Always validate before shipping
Run every block through Google’s Rich Results Test and the Schema.org validator. Eligibility starts with zero errors — fix warnings to unlock the richest display.
Frequently Asked Questions
What is product schema used for?
Product schema tells search engines the structured details of an item — name, price, availability, condition, and ratings — so the page can qualify for product rich results that show stars, price, and stock status directly in search.
Is JSON-LD or Microdata better for product markup?
JSON-LD. Google recommends it because it sits in a single script block separate from your visible HTML, which makes it easier to generate, validate, and maintain than Microdata embedded throughout the page.
Do I need reviews to use Product schema?
No. Product, name, and Offer details work without reviews. AggregateRating is only required if you want the star rating shown — and it must reflect real reviews that appear on the page.
Will adding product schema guarantee rich results?
No. Valid schema makes a page eligible, but Google decides when to show rich results based on quality, relevance, and policy compliance. Always validate with the Rich Results Test and keep your markup matching the visible page.