My Tool Studio
Schema Markup·3 min read

Product Schema for Rich Results: Price, Stock, Stars

Two listings sell the same backpack. One shows a plain blue link; the other shows 129 euros, in stock, 4.7 stars from 212 reviews. Product schema for rich results is the difference, and it isn't reserved for big retailers: any store publishing accurate markup is eligible. This walkthrough covers the offer fields Google actually reads, a worked JSON-LD fragment, the review rules behind the stars, and the mistakes that get product markup thrown out. The Product Schema Generator on this site can build the whole block from your live product page.

{"@type": "Product","name": "…","url": "…"}RICH RESULTProduct

What product schema for rich results changes in the SERP

Price, stock, and stars, before the click.

Rich product listings answer a shopper's first three questions inside the results page: how much is it, can I get it, do people like it. Clicks that arrive after seeing those answers convert better, and listings that show nothing sit right beside competitors showing everything.

The mechanism is plain JSON-LD in the page head describing the product, its Offer, and optionally its reviews. Search engines parse it on crawl; there's no submission step and no fee. What there is instead: format rules, and they're strict enough that hand-written markup fails them regularly.

A worked Product JSON-LD fragment with offers

Six lines that earn the rich listing.

Here's the core for that backpack: { "@type": "Product", "name": "Fjell 40L Backpack", "offers": { "@type": "Offer", "price": "129.00", "priceCurrency": "EUR", "availability": "https://schema.org/InStock" } }. Notice what carries the weight: the price is a bare number with no currency symbol, the currency sits in its own ISO code field, and availability is a full Schema.org URL rather than the words in stock.

The complete output layers on description, SKU, brand, an image array, and reviews. Every field left blank in the generator is simply omitted from the JSON, which keeps the block valid instead of shipping empty strings that parsers choke on.

Price and availability markup in your Product offer

The two fields Google rechecks.

Getting price and availability markup right is mostly about formats. Price takes 129.00, not EUR 129 and not 129,00; the currency lives separately in priceCurrency. Availability must be one of the enum URLs, InStock, OutOfStock, PreOrder, BackOrder, Discontinued, or SoldOut, which is exactly why the generator gives you a dropdown instead of a free text field.

Add priceValidUntil whenever you run sales so the quoted price carries an expiry, and update availability the day stock changes. Stale offer data is the fastest way to lose a treatment you already earned, because Google compares the markup against the live page.

Product review snippets and how the stars are computed

Stars are math, not decoration.

Product review snippets come from two structures working together: individual Review objects and an AggregateRating carrying ratingValue and reviewCount. Google requires both the value and the count; a rating that arrives without a count is skipped entirely.

In the generator, each review you enter with Add review contributes a 1 to 5 score, and the AggregateRating is computed as the average automatically, 4.5 from a 4 and a 5, for instance. The reviews must be real ones displayed on your page; inventing them for the markup violates Google's policies and is easier to detect than people assume.

Product schema mistakes that kill the stars

Five ways stores lose the listing.

Watch for these; any single one is enough to forfeit the rich listing on its own.

  • Currency symbols inside the price field, the single most common parse failure in store markup.
  • Availability written as plain text like In Stock instead of the https://schema.org/InStock URL.
  • Self-serving reviews, meaning the merchant reviewing its own product, which Google's guidelines explicitly exclude.
  • Marking up a category page with one Product block; each product needs its markup on its own page.
  • GTINs pasted with spaces or dashes so they no longer validate; the generator strips non-digits and maps 8, 12, 13, or 14 of them to the right gtin property.

Getting more from the Product Schema Generator

Let the autofill do the reading.

Start every session by pasting the product URL and pressing Auto-fill from product URL. It reads existing markup from Shopify, WooCommerce, Magento, or custom builds, plus OpenGraph tags, microdata, and the image gallery, then reports what it found as small chips: price detected, brand detected, image and review counts.

Fill the identifiers even when they feel optional. SKU, MPN, and GTIN help Google reconcile your listing with the same product sold elsewhere, and the GTIN field shows exactly which property your digits will map to as you type them.

When Product schema is the wrong tool

Not everything sellable is a product.

Service businesses, consultants, cleaners, agencies, should reach for the Service Schema Generator instead, since services describe providers and coverage areas rather than SKUs and stock levels. A storefront's own identity, address, and hours belong in the LocalBusiness Schema tool, not inside a Product block.

For a quick pass across many pages of mixed types, the Schema Markup Generator assigns one type per page automatically. Come back here whenever a specific product page deserves the full offer, identifier, and review treatment.

Try it now

Open Product Schema Generator

The tool is one click away. No sign up, no upload, no payment.

Open Product Schema Generator