AI search glossary
Product schema: required properties, merchant listings and an example
Product schema is structured data using the schema.org Product type, usually with a nested Offer, to describe an item for sale: its name, image, brand, identifiers such as GTIN and SKU, price, currency, availability and reviews.
Also called: Product structured data, product markup, Product JSON-LD
Why it matters for AI search
Shopping answers in AI engines repeat concrete facts: price, availability, brand, ratings, shipping and returns. Product markup states those facts in fields a crawler cannot misread, and Google uses it alongside Merchant Center feeds for its shopping features. When the price in your markup, your feed and your visible page agree, engines are less likely to quote a stale or wrong number about your product.
What Product schema describes
Schema.org defines Product as any offered product or service, from a pair of shoes to a car rental. The properties that matter most:
- name, image, description
- brand: a Brand or Organization
- sku, mpn and gtin: identifiers that let engines match your item to the same product elsewhere
- offers: an Offer with price, currency and availability
- aggregateRating and review: only if those reviews are visible on the page
What Google requires
Google's documentation splits Product markup into two experiences. Product snippets are for pages where people cannot buy directly, such as editorial reviews. Merchant listings are for pages where the customer buys from you. For merchant listings, Google requires:
| Level | Property |
|---|---|
| Product (required) | name, image, offers |
| Offer (required) | price and priceCurrency (or the same inside priceSpecification) |
| Product (recommended) | brand.name, gtin, sku, mpn, aggregateRating, review, color, size, material and more |
| Offer (recommended) | availability, itemCondition, shippingDetails, hasMerchantReturnPolicy, priceValidUntil, url |
Google also says that providing both page markup and a Merchant Center feed maximizes eligibility.
Example
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Burr Coffee Grinder G2",
"image": "https://www.example.com/img/g2.jpg",
"sku": "G2-BLK",
"gtin13": "0123456789012",
"brand": { "@type": "Brand", "name": "Example Coffee Co." },
"offers": {
"@type": "Offer",
"url": "https://www.example.com/grinder-g2",
"price": "129.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
Variants, reviews and feeds
A product sold in several sizes or colors can be described as one group with variants. Google supports variant markup for both experiences, using properties such as inProductGroupWithID and isVariantOf. Each variant still needs its own price and availability.
Review markup is only valid for reviews readers can see on the page. Third-party star widgets that load in an iframe or after a script often fail this test, so check what is actually in the HTML before marking it up.
If you run Google Merchant Center, keep the feed and the page markup in sync. The feed is what Google Shopping reads in bulk; the markup is what crawlers see on the page. Google says providing both gives the most eligibility, which only helps if they agree.
Common mistakes
- Price drift. The markup says one price, the page another. Generate both from the same source.
- JavaScript-only markup. Google says dynamically generated Product markup can make Shopping crawls less reliable. Put it in the server-rendered HTML; see JavaScript SEO.
- Ratings nobody can see. Only mark up reviews shown on the page.
- Missing brand link. Point
brandat the same entity as your Organization schema so engines connect products to the company.
Product markup is the commerce side of schema markup. Most store platforms output a basic version; check what yours emits (for example on Shopify or WooCommerce) before adding a second, conflicting block.
Questions
- What are the required properties for Product schema?
- For Google merchant listings, a Product needs name, image and offers, and the Offer needs price and priceCurrency (directly or through priceSpecification), with a price above zero. Product snippets have their own requirements based on reviews or ratings.
- What is the difference between product snippets and merchant listings?
- Google uses product snippets for pages where people cannot buy directly, such as review pages. Merchant listings are for pages where the customer can buy from you, and they support details like shipping and returns. Markup that meets the merchant listing requirements also makes the page eligible for product snippets.
- Should I add GTIN to Product schema?
- Yes, if your product has one. Google lists gtin (or gtin8, gtin12, gtin13, gtin14, isbn) as recommended. Schema.org says a valid GTIN is an 8, 12, 13 or 14 digit number with a correct check digit.
- Is Product markup generated by JavaScript OK?
- It works, but Google warns that dynamically generated markup can make Shopping crawls less frequent and less reliable, especially for price and availability, and recommends putting Product markup in the initial HTML.