DocsCommerceProduct / Offer schema
Product / Offer schema
Price, availability and identifiers an agent can quote.
Why an agent cares
It is the only machine-readable statement of what a product costs and whether it is in stock, so a wrong currency or an unrecognised availability value makes an agent quote something false. Several of these are Google profile requirements rather than schema.org requirements, and the reference says which.
Adoption
Web baseline. Standard equipment on the web. Its absence is the exception rather than its presence.
Direction of travel: ► flat, as at .
Mature and measured: 0.77% of pages via JSON-LD and 1.50% via microdata (Web Almanac 2024), concentrated on product pages. Note that OpenAI chose a product feed spec over crawled markup.
What we check
| Check | Severity | Raises | On whose authority |
|---|---|---|---|
| Product Schema Missing Price | high | usability | vendor profile: Google Search: product structured data |
Supporting documents: Google Search: product structured data Related guidance in Google Search: product structured data. Bad: an Offer has no price, so agents can't quote or compare the product. Fix: add "price" to the offer, e.g. "price": "49.99". | |||
| Product Schema Non-Numeric Price | high | usability | vendor profile: Schema.org Product |
Supporting documents: Schema.org Product Related guidance in Schema.org Product. Bad: the price isn't numeric (e.g. "$19.99" with the symbol embedded), so agents can't parse it. Fix: keep price purely numeric ("19.99") and put the currency in priceCurrency. | |||
| Product Schema Missing Currency | high | usability | vendor profile: Google Search: product structured data |
Supporting documents: Google Search: product structured data Related guidance in Google Search: product structured data. Bad: the Offer has no priceCurrency, so the price is ambiguous across markets. Fix: add the ISO 4217 code, e.g. "priceCurrency": "USD". | |||
| Product Schema Invalid Currency | medium | usability | vendor profile: Google Search: product structured data |
Supporting documents: Google Search: product structured data Related guidance in Google Search: product structured data. Bad: priceCurrency isn't a 3-letter ISO 4217 code (e.g. "$" or "US Dollars"), so agents can't reliably identify the currency. Fix: use the code, e.g. "USD", "GBP", "EUR". (Format is checked, not membership.) | |||
| Product Schema Missing Availability | medium | usability | Lumar readiness bar, beyond Google Search: product structured data, Schema.org Product |
Supporting documents: Google Search: product structured data, Schema.org Product Lumar readiness bar: no specification requires this. Bad: an individual Offer has no availability, so agents can't tell whether it's buyable right now (an AggregateOffer price range is exempt). Google lists this one as recommended rather than required, so it's a readiness gap, not a spec violation. Fix: add "availability": "https://schema.org/InStock" (or the accurate value). | |||
| Product Schema Invalid Availability Enum | medium | usability | vendor profile: Schema.org Product |
Supporting documents: Schema.org Product Related guidance in Schema.org Product. Bad: availability isn't a schema.org ItemAvailability value, so it's ignored. Fix: use one of the enum URLs, e.g. https://schema.org/InStock, OutOfStock, PreOrder. | |||
Examples
Both run through the same checks as a live scan: the first passes, the second is flagged.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Headphones",
"sku": "WH-1000",
"image": "https://example.com/img/wh-1000.jpg",
"brand": { "@type": "Brand", "name": "Example" },
"offers": {
"@type": "Offer",
"price": "199.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"url": "https://example.com/commerce/correct.html"
}
}
</script><script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Headphones",
"offers": {
"@type": "Offer",
"price": "cheap"
}
}
</script>Specifications
| Document | Revision | Kind |
|---|---|---|
| Schema.org Product | Version 30.1 | specification |
| Schema.org Offer | Version 30.1 | specification |
| Google Search: product structured data | Updated 10 December 2025 | vendor profile |
| Google Search: product snippet structured data | Updated 8 September 2026 | vendor profile |
| Google Search: merchant listing structured data | Updated 8 September 2026 | vendor profile |
Last re-read against the published documents: .