Product structured data for online stores: JSON-LD guide
Last updated:
Product structured data is a block of JSON-LD that states a product's name, images, price and stock status in a form machines can read without interpreting your page design. Every product page should have one, and the values must match what shoppers see.
Why it matters
Search engines and AI answer engines build answers from facts they can extract with confidence. A price buried in a styled widget is harder to read than a price declared in offers. Structured data does not guarantee rich results or citations, but a page without it gives machines less to work with than a competitor's page that has it.
What a good Product block contains
- name: the product title as shown on the page.
- image: one or more stable image URLs.
- description: a genuine description, not a repeated title.
- sku or gtin: identifiers, when you have them.
- brand: the brand name.
- offers: price, currency and availability.
Example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Linen shirt, sky blue",
"image": [
"https://your-store.com/img/linen-shirt-front.jpg",
"https://your-store.com/img/linen-shirt-detail.jpg"
],
"description": "Relaxed-fit shirt in washed European linen, with mother-of-pearl buttons.",
"sku": "LS-SKY-M",
"brand": { "@type": "Brand", "name": "Your Store" },
"offers": {
"@type": "Offer",
"url": "https://your-store.com/products/linen-shirt-sky",
"priceCurrency": "EUR",
"price": "79.00",
"availability": "https://schema.org/InStock"
}
}
</script>
Common mistakes
- No Product markup at all. Some themes output none, especially custom ones.
- Price or stock out of sync. The markup says in stock while the page says sold out.
- Missing availability. Include
offers.availabilityso stock status is available as structured data too. - Placeholder descriptions. A repeated title or boilerplate adds nothing.
- Invalid JSON. A trailing comma breaks the whole block.
How to add it
Most platforms generate Product markup through the theme or an app. Check what yours outputs, fill in the gaps (images, brand, availability), and confirm the values are generated from live product data rather than typed by hand. After any change, validate the block with a structured data testing tool.
Product markup pairs well with good page titles and meta descriptions and, at site level, Organization schema.
How Averifly helps
Averifly's catalog rules flag product pages with no Product structured data, no visible price, no stock or availability signal, a thin description, or missing images. See the full list in our rules, then run a free scan to check your own product pages.
Frequently asked questions
What is Product structured data?
It is JSON-LD markup that describes a product in a machine-readable way: name, images, description, price, currency and availability. Search engines and AI systems read it to extract product facts reliably.
Does Product schema guarantee rich results?
No. It makes your pages eligible and easier to understand, but search engines decide what to display. Markup must also match what shoppers see on the page.
Should the schema price match the visible price?
Yes. Structured data should describe what is visible on the page. A mismatch can make search engines ignore the markup.
