Spokes.wiki Search About
Tech Article T1 volatile source ↗ source url
Created
Updated

Merchant listing structured data (Google Search Central)

Google's reference for marking up a product page so it qualifies for shopping surfaces — knowledge panels, Google Images, popular-product results, product snippets. T1: first-party documentation from the consumer that defines what the markup is worth. Marked volatile — required-property lists and eligible surfaces change on Google's schedule, not schema.org's.

It belongs in this spoke rather than an SEO one because it shows what schema-org looks like at the point of deployment — which handful of the vocabulary's thousands of terms carry real weight, and who decides.

The required surface is tiny

Product needs name, image, offers. The nested Offer needs price (or priceSpecification.price, and for merchant listings it must exceed zero) and priceCurrency in ISO 4217. Five properties across two types. Everything else — aggregateRating, review, brand, sku, mpn, the gtin family, category, color, material, size, audience, hasCertification, subjectOf for glTF 3D models — is recommended.

On the Offer side the recommended set is where the commercial detail lives: availability (InStock / OutOfStock / BackOrder), itemCondition (NewCondition / UsedCondition / RefurbishedCondition), priceValidUntil, validFrom/validThrough, shippingDetails as an OfferShippingDetails with rates, destinations and delivery times, and hasMerchantReturnPolicy with windows, fees and methods. Pricing variants get their own machinery: a strikethrough sale price is an Offer whose priceType is https://schema.org/StrikethroughPrice, member pricing rides on validForMemberTier inside a UnitPriceSpecification, and per-unit pricing uses referenceQuantity with a QuantitativeValue.

That gradient — five required terms, dozens of optional ones that each unlock a specific visual treatment — is the vocabulary's economics in miniature. Publishers adopt the floor because it's cheap; they climb only as far as a visible payoff justifies.

Who actually governs a shared vocabulary

schema.org is nominally a four-founder community project (Google, Microsoft, Yahoo, Yandex) with an open process. This page shows the operative layer underneath: eligibility rules no vocabulary spec contains. A page qualifies only if a shopper can buy the product on it; rich results "only support pages that focus on a single product"; each currency needs a distinct URL; the page must be crawlable and indexable; content policy excludes "widely prohibited or regulated goods."

None of that is in schema.org. Product has no clause about single-product pages. The vocabulary defines what you can say; the consumer defines what saying it gets you, and the second document is the one publishers actually implement against. Worth holding next to this spoke's standard-vs-deployment thesis: the shared vocabulary is real, but the governance that shapes deployment sits with whoever pays out.

Delivery notes

JSON-LD, RDFa and Microdata examples are all given, and JSON-LD is the recommended shape — consistent with its dominance elsewhere (schema-org). Validation runs through the Rich Results Test, then URL Inspection and a recrawl request in Search Console. One operational warning: markup injected by JavaScript can reduce crawl frequency, so for fast-changing prices Google recommends "putting Product structured data in the initial HTML." Merchant listing markup complements Merchant Center feeds rather than replacing them, and is distinct from product-snippet markup, which targets editorial reviews.

What it does not say

Nothing here is about AI consumption. This is the classic model — publisher embeds markup in the page, crawler reads the page, engine renders a richer result — and it's the baseline the other two sources in this cluster (yoast-schema-aggregation, entitymap) are trying to move past. Google's own position on the AI question lives in a different document and is blunter than either of them; see structured-data-for-ai.

Re-verified 2026-08-30, with two additions. hasCertification — already recorded here — is specifically the replacement for the deprecated hasEnergyConsumptionDetails (corrected 2026-10-02: Google calls the old property still supported and recommends hasCertification instead; it does not say deprecated), which is the kind of lineage that makes a vocabulary readable: the certification slot generalizes what used to be an energy-only field. And hasAdultConsideration is now recommended, labelling adult-oriented products. Everything else stands: name, image and offers required on Product; price (or priceSpecification.price) and priceCurrency required on Offer, with price required to be greater than zero.

Re-verified 2026-10-02. The required core is unchanged. Four details the page did not carry: merchant listings reject AggregateOffer (product snippets accept it) because the merchant must be the seller; variants are expressed with isVariantOf pointing at a ProductGroup plus inProductGroupWithID; ListPrice is allowed beside StrikethroughPrice "for a transition period"; and an Offer can now reference organization-level return and shipping policies by @id, shipping through hasShippingService. hasAdultConsideration accepts one value only, SexualContentConsideration, and validForMemberTier may not be combined with priceType (Google ignores specifications carrying both). Each addition is another eligibility rule written by the consumer, which is this page's argument again.

schema-org · structured-data-for-ai · yoast-schema-aggregation · entitymap · knowledge-representation · google-search-central · synthesis