Skip to main content

Fix "Either offers, review, or aggregateRating should be specified"

2 min readBy SEO Snapshot

What This Error Means

Google's Rich Results Test throws Either "offers", "review", or "aggregateRating" should be specified when your Product structured data describes a product but gives Google no commercial signal to attach to it. A product rich result can show a price, a star rating, or a review snippet, and Product schema requires at least one of those three fields so there's something to show. Without one, the markup is valid JSON but not eligible for a product rich result, so Google flags it.

It's usually reported as a warning, not an error. Your page still gets indexed and can still rank. What you lose is eligibility for the enhanced listing (price, stars) in search, which is exactly the part that lifts click-through.

The Fix

Add whichever of the three fields is true for your product. Don't invent ratings you don't have; fabricated review markup is a policy violation and can trigger a manual action.

If you sell it, add offers (the most common fix):

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Wool Runner Shoe",
  "image": "https://example.com/shoe.jpg",
  "offers": {
    "@type": "Offer",
    "price": "98.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
</script>

If you have real ratings, add aggregateRating:

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.6",
  "reviewCount": "127"
}

If you have individual reviews, add review with an author and a reviewRating. You only need one of the three to clear the warning, but real e-commerce pages usually include offers plus aggregateRating together.

Common Causes

  • You used Product for something that isn't for sale, like a portfolio item, a software feature, or a recipe. If nothing is being sold or rated, the wrong @type is the real problem. Use SoftwareApplication, CreativeWork, or Recipe instead.
  • The offers block is there but incomplete, missing price or priceCurrency. Google needs both.
  • You have reviews on the page but not in the markup. Visible star ratings don't count unless they're also in structured data.

Build a valid block fast with the Product schema generator, or check what you have with the JSON-LD schema generator.

FAQ

Q: Is this a warning or an error? It's a warning in most cases. The page indexes and ranks normally; you just aren't eligible for the price or rating rich result until you add one of the three fields.

Q: Can I add aggregateRating if I don't have reviews yet? No. Only mark up ratings that genuinely exist and are visible on the page. Inventing them violates Google's structured data policies and risks a manual action.

Q: Which field should I choose? If the product is for sale, use offers. It's the most useful and the easiest to keep accurate. Add aggregateRating on top once you have real reviews.

Check your site's SEO score for free

Analyze your site