Blog/Technical GEO
Technical GEO

Product & Offer schema for AI: a copy-paste JSON-LD guide

Product and Offer schema are the JSON-LD types that hand AI answer pipelines your facts directly — price, specs, ratings — instead of hoping they parse them out of your layout. Answer pipelines extract facts before they synthesize prose, so here's the markup that matters.

Praised July 21, 2026 11 min read
PRODUCT & OFFERnameAurora Mk IIprice129.00 USDavailabilityInStockskuAUR-2-BLKratingValue4.6
Key takeaways
  • Schema.org markup was built for search rich results, but it doubles as a clean fact source for AI extraction.2
  • For products, the high-value types are Product, Offer, AggregateRating and FAQPage.
  • JSON-LD (a script block) is the preferred format — it keeps structured facts separate from your visual markup.
  • Schema doesn’t guarantee a citation; it removes ambiguity so your facts survive extraction with attribution intact.

When an AI answers “how much is Product X and what’s its rating?”, it has two options: infer those facts from your page’s visual layout, or read them from structured data you provided. The first is lossy and error-prone; the second is exact. Structured data is you doing the extraction work so the model doesn’t have to guess.

Why JSON-LD, specifically

Schema.org supports several syntaxes, but JSON-LD — a <script type="application/ld+json"> block — is the one to use. It lives in one place, doesn’t entangle with your HTML, and is trivially parsed. Google recommends it, and it’s equally convenient for any AI pipeline reading your page.2

The Product + Offer block

This is the workhorse. It states what the thing is, what it costs, whether it’s available, and how it’s rated — the four facts a shopping answer most wants:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Summit Shell Rain Jacket",
  "brand": { "@type": "Brand", "name": "Kestrel" },
  "description": "Three-layer waterproof shell, rated 20,000 mm under ISO 811, 420 g in size M.",
  "sku": "KS-SUMMIT-M",
  "offers": {
    "@type": "Offer",
    "price": "159.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "128"
  }
}
💡

Every value in that block is a fact an AI tool can lift verbatim and attribute to you. Leave one out — say, availability — and the model either guesses or omits it. Completeness is the point.

FAQPage: answers models love to quote

Buyer questions marked up as FAQPage give AI tools pre-packaged question–answer pairs — exactly the shape of a synthesized answer. Mark up the real questions your buyers ask:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Does it fit over a fleece?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Yes. The regular fit takes a midweight fleece underneath; size up to wear it over a down jacket."
    }
  }]
}
  • Mark up what’s visible on the page — structured data must match the human content, not contradict it.
  • Keep price and availability current; a stale Offer is worse than none.
  • Validate with a schema testing tool before shipping.
  • Don’t mark up content that isn’t there — fabricated ratings are a policy violation and an accuracy risk.
Structured data is the difference between the model reading your facts and the model guessing them.
— Why schema still matters

A shipping checklist

  1. Add Product + Offer JSON-LD to every product page, with accurate price, availability and SKU.
  2. Add AggregateRating only where you have genuine review data.
  3. Add FAQPage for the real questions buyers ask, matching on-page copy.
  4. Validate, deploy, and confirm the facts render in a plain-HTML view (not only via JavaScript).
  5. Re-check quarterly — prices and specs drift, and stale schema misleads.

Frequently asked questions

No — it removes ambiguity so your facts are extracted accurately, but citation still depends on relevance, authority and corroboration. Think of schema as necessary hygiene, not a ranking cheat code.

JSON-LD, in almost every case. It keeps structured facts in a single script block, separate from your visual markup, which is easier to maintain and to parse — and it’s Google’s recommended format.

No, and they can hurt — fabricated AggregateRating data violates guidelines and creates accuracy risk when an AI tool repeats a rating that contradicts independent sources. Only mark up genuine data.

Sources & further reading

  1. Schema.org vocabulary — Product, Offer, FAQPage, Organization types.
  2. Google — "Product structured data" reference.
  3. Google Search Central — "AI features and your website".
  4. "GEO: Generative Engine Optimization", Aggarwal et al., KDD 2024 / arXiv:2311.09735.
Share
Praised

Written by the Praised team with AI assistance. More on who we are.

Know where you stand in AI answers

Praised samples real buyer prompts across ChatGPT, Claude, Gemini and Perplexity — and turns them into metrics you can act on.

No signup. Results in about a minute.