# Product / Offer schema

Price, availability and identifiers an agent can quote.

**[Commerce](/docs/commerce)** · checked on every URL · 6 checks that can fail it

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** (L4)

Standard equipment on the web. Its absence is the exception rather than its presence. Direction of travel: ► flat, as of 2026-07-28.

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

Absence is never a finding: every check below runs only once `productSchemaPresent` is true, so a site that has not
adopted this is not assessed on it and appears in no report.

| Check | Kind | Raises | On whose authority |
|---|---|---|---|
| `productSchemaMissingPrice` | high severity | usability | Google Search profile |
| `productSchemaNonNumericPrice` | high severity | usability | Google Search profile |
| `productSchemaMissingCurrency` | high severity | usability | Google Search profile |
| `productSchemaInvalidCurrency` | medium severity | usability | Google Search profile |
| `productSchemaMissingAvailability` | medium severity | usability | Lumar readiness profile |
| `productSchemaInvalidAvailabilityEnum` | medium severity | usability | Schema.org profile |

## Examples

These are the fixtures the test suite runs through the real collector, not snippets written for a document.

- Correct: `test/e2e/test-pages/commerce/correct.html`
- Present but wrong: `test/e2e/test-pages/commerce/issues.html`

## Specifications

| Document | Revision | Kind |
|---|---|---|
| [Schema.org Product](https://schema.org/Product) | v30.0 | specification |
| [Schema.org Offer](https://schema.org/Offer) | v30.0 | specification |
| [Google Search: product structured data](https://developers.google.com/search/docs/appearance/structured-data/product) | updated 2025-12-10 | vendor profile |

Last re-read against the published documents: 2026-08-12.

**On pinning it.** `availability` is Recommended rather than Required in both Google profiles, which is why a missing one is attributed to the Lumar readiness profile and not to Google.
