Product Structured Data: Complete Implementation Guide
Product structured data enables search engines to display rich product information directly in search results — including price, availability, review ratings, and imagery. For e-commerce websites, this is one of the most valuable schema types available. Rich product results significantly increase click-through rates by giving shoppers the information they need before they even visit your page.
Why Use Product Schema?
- Display price, currency, and availability directly in Google search results, helping users make faster purchasing decisions.
- Show aggregate star ratings and review counts beneath your product listings, building trust and increasing click-through rates.
- Become eligible for Google Shopping's free product listings, expanding your reach without additional advertising spend.
- Enable product-specific rich snippets including imagery, brand name, and condition (new, used, refurbished) in search results.
- Improve product discoverability through Google's product knowledge panels and comparison features.
Required Properties
These properties are required by Google for Product structured data to be eligible for rich results.
| Property | Description |
|---|---|
| name | The full product name as it appears on the page. This should match the visible product title exactly. |
| image | One or more high-quality images of the product. Google recommends at least 800 pixels wide with a clear white or neutral background. |
| offers | An Offer (or array of Offers) containing the price, priceCurrency, and availability of the product. This is essential for rich result eligibility. |
| offers.price | The numeric price of the product. Must be a valid number without currency symbols. Use priceCurrency to specify the currency. |
| offers.priceCurrency | The three-letter ISO 4217 currency code (e.g. "GBP", "USD", "EUR") corresponding to the listed price. |
Recommended Properties
Adding these properties improves your chances of appearing in rich results and provides more context to search engines.
| Property | Description |
|---|---|
| brand | A Brand or Organization object identifying the product's manufacturer or brand. Helps Google associate the product with a known entity. |
| description | A detailed product description. Keep it factual and relevant — avoid promotional language that does not describe the product itself. |
| sku | The stock keeping unit identifier for the product. Including SKU, MPN, or GTIN helps Google match your product to its catalogue. |
| aggregateRating | An AggregateRating object summarising customer reviews, including ratingValue and reviewCount. Enables star ratings in search results. |
| offers.availability | The availability status using a schema.org enumeration value such as "https://schema.org/InStock", "OutOfStock", or "PreOrder". |
JSON-LD Example
Here is a complete Product structured data example you can use as a starting point. Or use our Product generator to create one automatically.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Noise-Cancelling Headphones WH-500",
"image": [
"https://example.com/images/wh500-front.jpg",
"https://example.com/images/wh500-side.jpg"
],
"description": "Premium wireless headphones with active noise cancellation, 30-hour battery life, and comfortable over-ear design. Available in black and silver.",
"brand": {
"@type": "Brand",
"name": "AudioTech"
},
"sku": "WH500-BLK",
"gtin13": "5901234123457",
"offers": {
"@type": "Offer",
"url": "https://example.com/headphones/wh-500",
"price": 199.99,
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"seller": {
"@type": "Organization",
"name": "AudioTech Official Store"
},
"priceValidUntil": "2026-12-31"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.6,
"reviewCount": 342,
"bestRating": 5
},
"review": {
"@type": "Review",
"author": {
"@type": "Person",
"name": "Sarah J."
},
"datePublished": "2026-01-15",
"reviewRating": {
"@type": "Rating",
"ratingValue": 5,
"bestRating": 5
},
"reviewBody": "Exceptional sound quality and the noise cancellation is superb. Battery lasts well over the advertised 30 hours."
}
}
</script>How to Implement Product Schema
- 1Identify all product pages on your site that should carry Product markup. Each product page should have exactly one Product schema block.
- 2Build the base JSON-LD object with "@type": "Product", the product name, and at least one high-quality image URL.
- 3Add the offers property with price, priceCurrency, and availability. Ensure the price matches what is visible on the page — mismatches violate Google's guidelines.
- 4Include brand information and at least one product identifier (SKU, GTIN, or MPN) to help Google catalogue your product accurately.
- 5If your product has customer reviews, add aggregateRating with the average score and total review count. Optionally include individual Review objects.
- 6Validate each product page using Google's Rich Results Test. Monitor performance in Google Search Console under the Products enhancement report.
Common Mistakes to Avoid
- Listing a price in the structured data that differs from the price displayed on the page. Google may issue a manual action for price mismatches.
- Using a placeholder or generic image instead of an actual product photograph, which prevents rich result eligibility.
- Omitting the priceCurrency property, leaving Google unable to determine which currency the price is listed in.
- Marking products as InStock when they are actually out of stock, which erodes user trust and may result in penalties.
- Adding Product markup to category or listing pages instead of individual product detail pages, which does not meet Google's requirements.
Testing & Validation
Before deploying your Product structured data, validate it using these tools:
- 1Google Rich Results Test — Paste your page URL or code snippet to check if your structured data is eligible for rich results.
- 2Schema Markup Validator — Validates your JSON-LD syntax against the schema.org specification.
- 3Google Search Console — After deployment, monitor the Enhancements report for any errors or warnings.
Frequently Asked Questions
Can I use Product markup on a page that lists multiple products?
Google recommends applying Product structured data to individual product detail pages, not to category or listing pages. Each Product schema block should describe a single, specific product. For listing pages, consider using ItemList markup to reference individual product pages.
What happens if my product price changes frequently?
The structured data must always reflect the current price visible on the page. If your prices change dynamically, ensure your markup is generated server-side so it stays in sync. You can also use the priceValidUntil property to indicate when a price offer expires.
Do I need both aggregateRating and individual reviews?
No, but including both provides the richest possible result. At minimum, aggregateRating with a ratingValue and reviewCount is sufficient to display star ratings in search. Individual Review objects add further detail but are not strictly required.
Which product identifier should I use: SKU, GTIN, or MPN?
Use whichever identifiers you have available. GTIN (including EAN, UPC, and ISBN) is the most universally recognised. If you have a GTIN, always include it. SKU and MPN are useful supplementary identifiers, particularly for products without a global trade number.
Is Product markup required for Google Shopping free listings?
Product structured data is one way to supply product information for free listings, but Google also accepts product feeds via Google Merchant Centre. For the best results, use both — structured data on your product pages and a regularly updated product feed in Merchant Centre.
Ready to Generate Your Product Schema?
Use our free generator to create valid Product structured data in seconds.
Open Product Generator