agentic‑readiness docs
/
Scan at scale Blog Build one › Run a scan ›

DocsCommerceProduct / Offer schema

Product / Offer schema

Price, availability and identifiers an agent can quote.

adoption Web baselinetrend ► flatchecked on every pagechecks 6verified 2026-10-05
Set up Product / Offer schema on your site The fields an agent needs before it can quote a price, and the ones that are most often missing.
Free Add Product and Offer markup

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

Absence is never a finding. Every check below runs only when this technology is detected, so a site that has not adopted this is not assessed on it and appears in no report. 6 of these 6 can fail it. In Lumar these appear on each page's own row.
CheckSeverityRaisesOn whose authority
Product Schema Missing Pricehighusabilityvendor profile: Google Search: product structured data
Product Schema Non-Numeric Pricehighusabilityvendor profile: Schema.org Product
Product Schema Missing Currencyhighusabilityvendor profile: Google Search: product structured data
Product Schema Invalid Currencymediumusabilityvendor profile: Google Search: product structured data
Product Schema Missing AvailabilitymediumusabilityLumar readiness bar, beyond Google Search: product structured data, Schema.org Product
Product Schema Invalid Availability Enummediumusabilityvendor profile: Schema.org Product

Examples

Both run through the same checks as a live scan: the first passes, the second is flagged.

correcthtmlexcerpt
<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>
present but wronghtmlexcerpt
<script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "name": "Wireless Headphones",
        "offers": {
          "@type": "Offer",
          "price": "cheap"
        }
      }
    </script>

Specifications

DocumentRevisionKind
Schema.org ProductVersion 30.1specification
Schema.org OfferVersion 30.1specification
Google Search: product structured dataUpdated 10 December 2025vendor profile
Google Search: product snippet structured dataUpdated 8 September 2026vendor profile
Google Search: merchant listing structured dataUpdated 8 September 2026vendor profile

Last re-read against the published documents: .