Product schema is the Schema.org structured data type that describes a product on a web page, including its name, image, brand, identifiers, price, availability and reviews. In structured data and SEO, it is the markup that makes a page eligible for product rich results such as price, stock status and star ratings shown directly in search.
The markup does not change what visitors see. It translates information already on the page into a machine-readable vocabulary, usually as JSON-LD, so search engines can understand the offer precisely and match it to shopping queries with confidence.
How product schema describes an item
Product schema describes an item through a Product entity with nested entities for the offer, ratings and reviews. The Product holds stable facts about the item itself, while the nested Offer holds commercial facts that can change daily, such as price and availability.
This separation mirrors how commerce works. The same product can have several offers from different sellers or conditions, and Schema.org models this with AggregateOffer for a price range. Reviews attach to the Product, not to the Offer, because opinions concern the item rather than one seller.
The table lists the most important properties and their purpose.
| Property | Content | Purpose |
|---|---|---|
| name | Product name | Identifies the item, required |
| image | One or more image URLs | Visual display in results |
| brand | Brand entity | Disambiguates similar products |
| gtin, mpn, sku | Global and seller identifiers | Matches the item across sites |
| offers | Offer with price, priceCurrency, availability | Shows price and stock |
| aggregateRating | Average rating and rating count | Enables star ratings |
| review | Individual review entities | Supports review snippets |
Rich result types enabled by product schema
Google distinguishes two families of product rich results that use the same vocabulary but serve different pages. Product snippets suit pages that review or describe products, while merchant listings suit pages where the product can actually be bought.
| Aspect | Product snippets | Merchant listings |
|---|---|---|
| Typical page | Review or comparison page | Product page in a shop |
| Minimum requirement | name plus review, rating or offer | name, image and an offer with price |
| Displayed information | Rating, price, review details | Price, availability, shipping, returns |
| Key extra properties | positiveNotes, negativeNotes | shippingDetails, hasMerchantReturnPolicy |
| Search surfaces | Standard results | Standard results and shopping surfaces |
Eligibility does not guarantee display. Search engines decide whether to show a rich result based on query, quality and trust, so valid markup is a necessary condition, not a promise.
The choice between the two families follows the page purpose. A retailer product page should aim for merchant listings with full offer details, whereas an independent review site should use product snippets with ratings and pros and cons, because it does not sell the item itself.
Product schema and neighboring structured data types
Product schema frequently appears alongside other Schema.org types on the same page. Knowing where each belongs avoids duplicated or conflicting entities, a common source of validation warnings.
| Type | Describes | Relation to product schema |
|---|---|---|
| Offer | Terms of sale for one seller | Nested inside Product |
| ProductGroup | Family of variants | Groups Products by size or color with hasVariant |
| Review snippet | Rating and review markup | Often embedded in Product |
| BreadcrumbList | Position in site hierarchy | Separate entity on the same page |
| Organization schema | Seller or manufacturer | Can be referenced as brand or seller |
| Article schema | Editorial content | Used for buying guides, not single products |
Variants deserve attention. A shirt sold in four sizes and three colors is best modeled as a ProductGroup with variesBy and individual Product variants, each with its own SKU and offer, rather than one Product with a confusing price range.
Implementing product schema correctly
Correct implementation means that every value in the markup matches the visible page and the data feed. Most e-commerce platforms generate product schema from the catalog, which keeps prices and stock synchronized, but templates still need review.
- Prefer JSON-LD. It keeps markup separate from HTML and is the format search engines recommend; Microdata and RDFa remain valid alternatives.
- Use ISO formats. Currency as a three-letter code such as USD and dates in ISO 8601.
- Express availability with Schema.org values. Use InStock, OutOfStock or PreOrder rather than free text.
- Add identifiers. A valid GTIN greatly improves product matching.
- Validate twice. The Rich Results Test checks search eligibility, while the Schema Markup Validator checks vocabulary correctness.
Placement and rendering also matter. JSON-LD can sit in the head or the body, but it should be present in the initial HTML or reliably rendered by JavaScript, because markup injected late or only after user interaction may be missed. Shops that also submit a product data feed should keep feed and markup values identical, since search engines cross-check both sources.
Common product schema errors
Product schema errors usually stem from mismatches between markup and reality. Search engines compare structured data with page content and feeds, and inconsistent data can remove eligibility or, in serious cases, lead to a manual action for spammy structured data.
| Error | Typical cause | Fix |
|---|---|---|
| Price mismatch | Cached markup after a price change | Generate markup from live catalog data |
| Missing offers or rating | Template outputs only name and image | Add at least one required nested entity |
| Invisible reviews | Ratings in markup but not on the page | Mark up only reviews users can see |
| Markup on category pages | Product type applied to listing pages | Use Product only on single-item pages |
| Wrong availability | Stock status not updated | Sync availability with inventory |
Put simply
Product schema is a label written in a language search engines read. A product page already shows the name, price and reviews to people, and product schema repeats those facts in a tidy, standard format for machines.
Think of the barcode on a box in a store. Shoppers read the packaging, while the scanner reads the barcode to know exactly what the item is and what it costs. With product schema, a search engine can show the price and rating right in the results, which helps shoppers decide before they even click.
In practice
A small online shop selling coffee grinders has product pages with prices and customer reviews, but its search results show only a plain title and description. The developer adds JSON-LD product schema to the product template, with name, images, brand, GTIN, an Offer with price in USD and InStock availability, plus aggregateRating from the review system.
The Rich Results Test confirms eligibility for merchant listings and product snippets. After the pages are recrawled over the following weeks, several results begin to show price, stock status and star ratings. When a grinder later sells out, the catalog updates availability automatically, so the markup never advertises stock the shop does not have.