Product pages: schema, price and specs

Published

An AI shopping answer can read your product page two ways at once. Where the engine reads on-page markup, and Google and Bing document doing so, it parses the JSON-LD that declares what the product is, what it costs, and how people rated it. And it quotes the visible content, the price and specifications a human would read on the page. Six things decide whether your product is legible to that answer: Product and Offer markup, review and rating markup, the human-visible price, and a structured spec block, plus VideoObject and ImageObject, which matter only when the page actually carries that media.

The scope here is product and media schema plus the two commercial visible-content checks. How JSON-LD is read in general, how image alt text works, and whether an AI crawler even runs your JavaScript are separate topics. The promise is straightforward: clean markup makes your product machine readable for the engines that read pages, and the visible price and specs are what the evidence says actually moves citation.

The two machine-readable surfaces

Strip a product page down to what a machine can use and two surfaces remain. The first is the markup: Product, Review, AggregateRating, VideoObject and ImageObject in JSON-LD. This is the comprehension and eligibility layer. Google reads structured data to understand pages for its search and shopping surfaces (AI Overviews, AI Mode, Google Shopping), with Googlebot building the index behind all of them. Search Engine Land reported Microsoft taking the same position: "Fabrice Canel, principal product manager at Microsoft Bing, confirmed in March 2025 that schema markup helps Microsoft's LLMs understand content for Copilot" (Search Engine Land). OpenAI documents a structured merchant feed for ChatGPT's Agentic Commerce program: "Provide a structured product feed so ChatGPT accurately indexes and displays your products with up-to-date price and availability" (OpenAI product feed spec), and separately documents OAI-SearchBot as the crawler that surfaces pages in ChatGPT's search features. It does not document whether on-page Product JSON-LD feeds its product results. Perplexity runs a merchant program that accepts a product feed, but it does not publish how, or whether, it uses on-page schema.org markup. Those feeds are a parallel channel, separate from your on-page markup, not a replacement for it. Anthropic publishes nothing about how Claude treats e-commerce markup, so do not assume schema alone moves anything there.

The second surface is the visible content, the price and specs printed on the page itself. That is where the measured commercial findings live, covered in the last two sections.

One calibration before the how-to. Schema is useful infrastructure, not a ranking factor, and Google is explicit that its AI features do not depend on it: "You don't need to create new machine readable files, AI text files, or markup to appear in these features. There's also no special schema.org structured data that you need to add" (Google AI features docs). The same Search Engine Land piece puts it plainly: "Schema markup is infrastructure, not a magic bullet. It won't necessarily get you cited more." There is no measured citation-lift number to promise. What follows walks the markup first, then the visible content.

Product and Offer

The core type is Product with a nested Offer. Google's product structured data documentation states the minimum for a product snippet directly: "You must include one of the following properties: review aggregateRating offers" alongside the product's name (Google Product docs). A merchant listing, the richer shopping treatment, needs name, image and offers. The Offer is where the commercial fields live.

The one field mechanic worth a code block: price and priceCurrency are separate fields, not a baked string like "$29.99". Google defines price as "The offer price of a product." and priceCurrency as "The currency used to describe the product price, in three-letter ISO 4217 format." A minimal, valid shape looks like this:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Cordless Drill X200",
  "image": "https://example.com/images/x200.jpg",
  "brand": { "@type": "Brand", "name": "ToolCo" },
  "sku": "X200-BLK",
  "gtin": "00012345678905",
  "offers": {
    "@type": "Offer",
    "price": "129.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}

Add availability so engines know the product can actually be bought, and the identifiers (brand, sku, gtin) so it can be matched against catalogs. The type itself is deliberately broad: schema.org defines Product as "Any offered product or service", so services and digital goods use the same shape.

This is the form Google documents for product rich results: a name, a price in a known currency, stock status, and identifiers that disambiguate your listing from lookalikes. Bing says schema helps its models understand content.

Review and AggregateRating

Ratings travel through two types. AggregateRating summarizes many reviews and needs a ratingValue plus a count; Google's review snippet documentation puts it as "At least one of ratingCount or reviewCount is required" (Google Review docs). An individual Review needs an author, marked up as a Person or Organization object with a name under 100 characters, and a reviewRating.

There is a policy line worth knowing before you mark anything up. Google's guidelines make review snippets for your own Organization or LocalBusiness valid only when the reviews on the page are about other businesses, and they require reviews to reflect genuine user experience. In short: Google makes pages ineligible for its star review feature when the reviewed entity controls the reviews about itself. Other engines do not document an equivalent rule.

Done honestly, this markup is what populates the recognizable parts of a product card: the stars and the "4.6 (1,203)" next to your product name. Without it, there is no marked-up rating figure on the page for an engine to read.

VideoObject

If a product page leads with a demo or review video, VideoObject is how you tell engines that a specific video exists there. Google's video documentation lists three required properties: name, thumbnailUrl and uploadDate in ISO 8601 format (Google Video docs). Note that description, contentUrl or embedUrl, and duration are recommended, not required. A minimal block:

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Cordless Drill X200 hands-on review",
  "thumbnailUrl": "https://example.com/thumbs/x200-review.jpg",
  "uploadDate": "2026-03-14T08:00:00+00:00"
}

The payoff is representation. VideoObject is what Google documents for representing a page's video, including the thumbnail, in its video results; other engines do not document equivalent handling. With it, a hero-video page can be represented as a video result instead of being treated as a page that happens to embed a player.

ImageObject, when it is worth it

Here the honest advice is proportionate: most pages do not need a standalone ImageObject. The image reference inside your Product or Article markup already does the job of pointing engines at the right picture. A separate ImageObject block, with caption, license, creator and dimensions, earns its place only when image-citation surfaces are a real priority for you, for example when your product photography or diagrams are themselves the asset you want engines to attribute and reuse correctly.

This is distinct from image alt text and general image legibility, which is its own topic. ImageObject describes an image to structured-data parsers; alt text describes it to everything that reads the page body.

Put the price in the visible content

Now the second surface, and the strongest measured commercial lever in this whole topic. A 2026 study from Sprinklr (Vishwakarma et al., "What Gets Cited") tested what makes AI answer engines cite a commercial page. Its central finding: "four gatekeepers were unanimous across all six models with large effects (OR > 100): Topic Mismatch, Price Not Mentioned, Recent vs Old Timestamp, and Lower List Position. Failing on any one can eliminate citation odds regardless of other content strengths" (Vishwakarma et al.). A missing price, in other words, is not a small deduction; the study treats it as a gate. The odds ratios span a wide range, very large for some models and single digits for others, so read the effect as "consistently present" rather than one universal number. And it is a short SIGIR '26 paper from one company's research team, run in a controlled two-document testbed rather than in production retrieval, so hold the numbers as evidence about that setup.

The practical point is where the price lives. The gatekeeper is the price in the visible text a model reads. A price that exists only inside your Offer JSON-LD, or that hides behind "contact us for pricing", is not the same thing as a price printed on the page. Mark it up and show it: the Offer makes the price machine readable for product cards, and the visible number is what the citation evidence actually measured. If exact pricing is genuinely variable, treat a visible range as reasonable practice rather than a measured result: the study compared pages with a price against pages without one, and never tested a range.

Put specs in a structured block

The same Sprinklr study found that once the gatekeepers are cleared, "seven additional factors provide secondary differentiation (OR 2.1-243)", with completeness, missing or less-comprehensive specifications, among them. Take the 243 as the top of a wide range, from the same single study, not a promise. The direction, though, is consistent with how these systems read pages: complete, extractable specifications make a product easier to compare, and comparison is what shopping answers are doing.

The practical move is to put specifications in a structured block: a two-column table, a definition list, or PropertyValue markup on the Product, rather than burying dimensions and battery life in a prose paragraph. Completeness is what the study measured, not layout: missing specifications cost citations, while formatting changes did not move them. A spec table still helps a human skim, so use one, but the measured lever is having the specs at all. Baymard's eye-tracking benchmark puts the scale of the formatting problem at half of e-commerce sites, whose "spec sheet designs" are "difficult for users to scan" (Baymard on spec sheet scannability). It is the rare change that serves both surfaces at once: the visible content becomes quotable, and the same facts can be mirrored into the markup without drift.

FAQ

Does adding Product schema get me cited more in AI answers?

It makes your product data machine readable, which Google and Bing both say helps their systems understand content. But there is no measured citation-lift number, and Google states that no special schema.org structured data is required for its AI features.

Do ChatGPT and Perplexity read my on-page schema, or do I need a feed?

Feeds are documented; on-page reading is not. OpenAI publishes a product feed spec for ChatGPT and Perplexity runs a merchant program, but neither documents whether it reads your on-page Product markup. The feed is a separate, parallel channel; it complements your on-page markup rather than replacing it.

Does Claude use my product schema?

There is no documented answer: Anthropic publishes nothing about how Claude treats e-commerce schema. What the citation study did measure is that a visible price and complete specs mattered for Claude 3.5 Sonnet as much as for the others.

Is it enough to put the price in the Product schema?

No. The measured lever is the price in the visible content a model reads. "Contact us for pricing" is exactly the case the study flagged as Price Not Mentioned. A price that lives only in your JSON-LD was not tested, but it is not a price a reader sees either. Mark the price up in the Offer and print it on the page.

Do I need ImageObject schema?

Usually not. The image reference inside your Product or Article schema already covers most pages. Add a standalone ImageObject, with caption, license and creator details, only if image-citation surfaces genuinely matter to you.

See if AI can read, trust, and cite your site

Add to Chrome

Free · No signup · Every issue links back to a guide like this one