Product Schema Markup
Product is the essential schema type for e-commerce. It enables Google to display rich product snippets with pricing, availability, and review ratings directly in search results — dramatically improving click-through rates for product pages.
Eligible Rich Results
When to Use Product
Properties
| Property | Type | Status | Description |
|---|---|---|---|
| name | Text | required | The product name. |
| image | URL or ImageObject | required | Product image(s). Google recommends multiple angles. |
| description | Text | recommended | Product description. |
| brand | Brand or Organization | recommended | The brand name. |
| offers | Offer or AggregateOffer | required | Pricing and availability information. |
| sku | Text | recommended | Stock keeping unit identifier. |
| gtin | Text | recommended | Global Trade Item Number (UPC, EAN, ISBN). |
| mpn | Text | optional | Manufacturer Part Number. |
| aggregateRating | AggregateRating | recommended | Overall customer rating. |
| review | Review | recommended | Individual customer reviews. |
| url | URL | recommended | Product page URL. |
| color | Text | optional | Product color. |
| material | Text | optional | Product material. |
| weight | QuantitativeValue | optional | Product weight. |
JSON-LD Examples
E-commerce Product with Reviews
A product listing with pricing, availability, and aggregate rating.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Ultra Comfort Running Shoes",
"image": [
"https://shoes.com/ultra-1.jpg",
"https://shoes.com/ultra-2.jpg"
],
"description": "Lightweight running shoes with responsive cushioning and breathable mesh upper.",
"brand": {
"@type": "Brand",
"name": "RunFast"
},
"sku": "RF-UC-2024-BLK",
"gtin13": "0123456789012",
"offers": {
"@type": "Offer",
"url": "https://shoes.com/ultra-comfort",
"price": "129.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2024-12-31",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "284",
"bestRating": "5"
}
} Product with Multiple Offers
A product available from multiple sellers with varying prices.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Organic Coffee Beans - 1lb Bag",
"image": "https://coffeeco.com/organic-beans.jpg",
"brand": {
"@type": "Brand",
"name": "Mountain Roast"
},
"offers": {
"@type": "AggregateOffer",
"lowPrice": "12.99",
"highPrice": "18.99",
"priceCurrency": "USD",
"offerCount": "3",
"availability": "https://schema.org/InStock"
}
} Common Mistakes
Putting price directly on the Product object instead of inside an Offer.
Using price: '$29.99' with the currency symbol — price must be a plain number ('29.99') with a separate priceCurrency.
Using short availability values like 'InStock' instead of the full URL 'https://schema.org/InStock'.
Missing priceCurrency — Google requires it alongside price.
Not including a GTIN/UPC when one exists — this helps Google match your product to its database.
Complete Guide to Product Schema Markup
Product schema markup is essential for any e-commerce site. It enables Google to display rich product snippets with pricing, availability, and star ratings directly in search results — features that can dramatically improve click-through rates. Studies show that products with rich results receive up to 30% more clicks than standard listings.
The Offer object within Product is where most of the magic happens. It must include price (as a plain number without currency symbols), priceCurrency (ISO 4217 code like USD), and availability (using the full schema.org URL like https://schema.org/InStock). Without all three, Google won't display the product snippet.
For products sold by multiple retailers or in multiple variants, use AggregateOffer instead of Offer. This lets you specify a price range with lowPrice and highPrice, along with the number of offers available.
Product identifiers (GTIN, UPC, EAN, ISBN, MPN) are increasingly important. Google uses these to match your product to its product database, which can unlock additional features like the Shopping tab, price comparison, and Google Shopping free listings. Always include the most specific identifier available.
The aggregateRating property shows star ratings in search results. Google requires ratingValue plus either ratingCount or reviewCount. Note that review markup must represent real customer reviews — Google explicitly prohibits fabricated or incentivized reviews in structured data.
Related Types
Ready to Create Product Markup?
Use our free generator to create valid Product JSON-LD markup with a visual form. No coding required.
Open Generator