Product Structured Data

Product Snippet Schema Markup

The one that adds stars and pricing to your Google results. Works on any product page — you don't have to be selling it.

Generate Product Snippet Schema Free

Also a merchant? Add Merchant Listing schema to unlock Shopping features too.

Product Snippet in Google Search

example.com › reviews › executive-anvil
Executive Anvil Review — CNET
★★★★☆ 4.4 (89 reviews)
£29.99 · In stock
The Executive Anvil is sleeker than ACME's Classic model and perfect for the business traveler. We tested it for three months.
Pros
+ Consistent results
+ Still sharp after many uses
Cons
No child protection
Lacking advanced features
Star ratings Pros and cons Price range Review author

What Product Snippet schema unlocks

Star ratings in organic search
Aggregate review stars shown in the snippet before users click, for any page with aggregateRating.
Pros and cons
Google can display positiveNotes and negativeNotes for editorial review pages. Minimum 2 statements required.
Price in the snippet
Single Offer price or AggregateOffer price range (lowPrice–highPrice) shown directly in organic results.
Price drop alerts
Use a single Offer (not AggregateOffer) to be eligible for Google's price drop notification feature.

Who should use Product Snippet schema

Unlike Merchant Listing, Product Snippet is not restricted to sellers. Any of the following page types are eligible:

  • Editorial review pages: sites that review products but don't sell them. Full access to pros/cons feature.
  • Shopping aggregator pages: comparison sites listing multiple sellers. Use AggregateOffer with lowPrice, highPrice, offerCount.
  • Merchant product pages: pages where you sell the product. Add Merchant Listing markup too for Shopping features.

Required and recommended properties

The minimum for a Product Snippet is name plus at least one of review, aggregateRating, or offers.

PropertyStatusNotes
nameRequiredProduct name.
review / aggregateRating / offersRequiredAt least one of these three must be present for rich result eligibility.
aggregateRatingRecommendedEnables star ratings. Requires ratingValue and reviewCount.
reviewRecommendedIndividual review with author and rating. Add positiveNotes/negativeNotes for editorial pages.
offers (Offer)RecommendedSingle seller price. Required: price, priceCurrency. Enables price drop alerts.
offers (AggregateOffer)OptionalFor aggregator pages. Required: lowPrice, priceCurrency. Add highPrice and offerCount.
imageRecommendedProduct image URL. Crawlable and indexable.
descriptionRecommendedProduct description.
brandRecommendedBrand name as nested Brand object.
skuOptionalStock keeping unit. Recommended for Shopping matching. No whitespace; ASCII preferred.
gtin13 / gtin12 / gtin8 / gtin14OptionalGlobal Trade Item Number. Use the most specific type that applies (EAN = gtin13, UPC = gtin12). Numerical form only — not URL form. Strongly recommended for Shopping matching.
mpnOptionalManufacturer Part Number. Use when no GTIN is available.

Note: pros/cons (positiveNotes / negativeNotes) are only eligible for editorial review pages — not merchant pages or customer reviews.

JSON-LD examples

Basic — name, rating, price

The minimum viable Product Snippet for a merchant page: name + aggregateRating + Offer. Works for any page type.

JSON-LD
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Executive Anvil",
  "image": "https://example.com/anvil.jpg",
  "description": "Sleeker than the Classic Anvil. Perfect for business travellers.",
  "brand": { "@type": "Brand", "name": "ACME" },
  "sku": "ANVIL-EXEC-001",
  "gtin13": "1234567890123",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.4",
    "reviewCount": "89",
    "bestRating": "5",
    "worstRating": "1"
  },
  "offers": {
    "@type": "Offer",
    "price": "29.99",
    "priceCurrency": "GBP",
    "availability": "https://schema.org/InStock",
    "priceValidUntil": "2026-12-31"
  }
}

Editorial review — with pros and cons

For editorial review pages only. Add positiveNotes and negativeNotes inside your review object as ItemList. Reviewer name must be a valid person or team — not promotional text (e.g. "50% off this week" as an author name will be ignored).

JSON-LD
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Executive Anvil",
  "image": "https://example.com/anvil.jpg",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.4",
    "reviewCount": "89",
    "bestRating": "5"
  },
  "review": {
    "@type": "Review",
    "author": {
      "@type": "Organization",
      "name": "CNET Reviewers"
    },
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "4",
      "bestRating": "5"
    },
    "positiveNotes": {
      "@type": "ItemList",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Consistent results" },
        { "@type": "ListItem", "position": 2, "name": "Still sharp after many uses" }
      ]
    },
    "negativeNotes": {
      "@type": "ItemList",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "No child protection" }
      ]
    }
  }
}

Aggregator page — AggregateOffer

For comparison sites listing prices from multiple sellers. Use AggregateOffer — not a single Offer. Note: AggregateOffer is not for product variants — use ProductGroup for that.

JSON-LD
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Executive Anvil",
  "image": "https://example.com/anvil.jpg",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.4",
    "reviewCount": "89"
  },
  "offers": {
    "@type": "AggregateOffer",
    "lowPrice": "29.99",
    "highPrice": "49.99",
    "priceCurrency": "GBP",
    "offerCount": "5"
  }
}

Product Snippet vs Merchant Listing

Both use @type: Product. The difference is who can use them and what features they unlock.

Feature Product Snippet Merchant Listing
Who can use it Any page describing a product — reviews, aggregators, merchants Purchase pages only — you must be the seller
Star ratings in organic
Price in organic snippet (Offer or AggregateOffer) (Offer only — must be > 0)
Pros and cons Editorial review pages only
Google Shopping panel
Price drop alerts Single Offer only
Shipping annotations
Return policy annotations
Required price > 0 (price can be 0) Must be > 0

Merchant pages can — and should — use both. Adding Merchant Listing required properties (name + offers.price + offers.priceCurrency) also qualifies the page for Product Snippet. It's a one-way relationship — not the other way around.

Frequently asked questions

Yes. Product Snippet works on any page that describes a specific product: editorial reviews, comparison sites, aggregators, and merchant pages. Selling is not a requirement.
A product name plus at least one of: a review, an aggregateRating, or an offer. Name alone isn't enough. Google needs something to show in the snippet.
Use positiveNotes and negativeNotes inside your review object, each as an ItemList. You need at least two statements total. This only works on editorial review pages. Not merchant pages, not customer reviews.
Use AggregateOffer when your page lists prices from multiple sellers: it takes lowPrice, highPrice, and offerCount. Use a single Offer when you're describing one seller's price. Single Offer also enables price drop alerts; AggregateOffer doesn't.
Not directly. Schema makes your page eligible for rich results. Google still decides whether to show them. The indirect effect is real though: better-looking snippets get more clicks.
Reviewer names must be a valid Person or Organization name — for example "James Smith" or "CNET Reviewers". Google will not accept promotional text as a reviewer name (e.g. "Best price this week" or "50% off"). If the reviewer name fails this check, the review may not be eligible for the rich result.
The most common cause is an expired priceValidUntil date. If the date in your markup has passed, Google will not show the price. Other causes: price mismatch between markup and the visible page price, or using AggregateOffer on a non-aggregator page. Check all three if your price disappears from results.

Also in this series

Generate valid Product Snippet schema

Add reviews, ratings, pros/cons, and pricing — get clean JSON-LD in seconds. No account needed.