Structured Data · Type Reference Part 4

Product Structured Data: Pricing, Inventory, Ratings & JSON-LD Examples

~16 min read Updated 2026-06-24 MagicSEO Editorial · Human Reviewed Type Reference

Product is one of the most critical structured data types for e-commerce SEO. It enables Google to better understand product names, images, prices, inventory, ratings, shipping, and return information, potentially displaying richer product information in search results, Google Images, Google Lens, and shopping-related experiences. However, Product is also the type most prone to violations: prices, inventory, and ratings must be authentic, visible, and up-to-date.

First, Understand Two Types of Product Results#

Google now categorizes product structured data into two usage scenarios:

TypeBest ForKey Information
Product snippetsProduct introductions, reviews, comparisons, not necessarily purchasableProduct name, ratings, reviews, price, inventory
Merchant listingsE-commerce product pages where users can purchase directlyProduct images, price, inventory, shipping, returns, variants, merchant policies

If your page is a "Top 10 Air Purifier Reviews," it leans toward Product snippet. If the page has add-to-cart, inventory, pricing, and checkout flow, it leans toward Merchant listing. The two overlap, but don't use a simple template to blindly cover all scenarios.

Example of how Product structured data may affect search result display: product images, prices, inventory, ratings, and review counts
Product markup helps Google understand product information like prices, inventory, ratings, and images. Actual display depends on search scenarios and Google policies.

How to Fill Core Fields#

Product snippet requires at least product name, plus one of review, aggregateRating, or offers. Merchant listing has higher requirements for purchasable product pages, typically requiring image and complete Offer information.

FieldPurposeNotes
nameProduct nameConsistent with page product title
imageProduct imageReal product photo, crawlable, preferably white background or clear product display
descriptionProduct descriptionConsistent with visible selling points on page, no keyword stuffing
sku / mpn / gtinProduct identifiersHelps Google identify specific products
brandBrandUse Brand object, name must be authentic and visible
offersPrice and inventoryMost critical for e-commerce, must update promptly
aggregateRatingAggregate ratingOnly fill when real reviews exist
reviewIndividual reviewReview content and author should be visible and authentic

JSON-LD Example for Purchasable Product Page#

Below is a basic example for an e-commerce product page. In practice, all fields must come from page-visible content or real product data sources.

product-json-ld.html
<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Executive Anvil",
  "image": [
    "https://example.com/photos/anvil-1x1.webp",
    "https://example.com/photos/anvil-4x3.webp",
    "https://example.com/photos/anvil-16x9.webp"
  ],
  "description": "A compact steel anvil for workshop demonstrations.",
  "sku": "ANVIL-001",
  "brand": {
    "@type": "Brand",
    "name": "ACME"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/executive-anvil",
    "priceCurrency": "USD",
    "price": 119.99,
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.4,
    "reviewCount": 89
  }
}
</script>

Offer: Price and Inventory Are High-Risk Fields#

offers is the most critical and error-prone part of Product. Once price and inventory are inconsistent with the page, checkout, or Merchant Center Feed, trust is damaged.

  • price uses current effective price, numbers with decimal points, no currency symbol.
  • priceCurrency uses three-digit ISO 4217 currency code, like USD, CNY, EUR.
  • availability uses schema.org enumeration URL, like https://schema.org/InStock.
  • priceValidUntil is only filled when price has an expiration, must update before expiry.
  • When products are delisted, out of stock, or price changes, page, structured data, and Feed must sync.
Don't Mark Hidden DiscountsIf the page shows 119.99 but JSON-LD writes 89.99, or only shows member prices to search engines, this is an inconsistency signal. Prices should be consistent with what users see on the page and actually apply at purchase.

Don't Fake Ratings and Reviews#

Star ratings are attractive for click-through rates, making this a high-violation area. Only fill aggregateRating or review when these conditions are met:

  • Ratings come from real users or authentic editorial reviews;
  • Ratings, review counts, or specific reviews are visible on the page;
  • Review subject is the current product, not the entire brand or other products;
  • Merchants cannot fabricate ratings for their own products;
  • When review counts or scores change, structured data must sync.

If there are no reviews, don't write rating fields. Product without stars can still be compliant; fabricating ratings is more dangerous.

Structured Data and Merchant Center#

Google explicitly recommends: e-commerce websites can use both on-page Product structured data and Google Merchant Center product feeds. They are not mutually exclusive.

MethodAdvantagesSuitable Data
On-page structured dataClose to page, Google can read by crawlingProduct name, page images, prices, inventory, ratings
Merchant Center FeedSuitable for scale and high-frequency updatesInventory, prices, shipping, returns, product variants, promotions

Ideally, data on both sides should be consistent. If the page says in stock but Feed says out of stock, or page price differs from Feed price, Google needs to judge who's credible and may reduce eligibility for related experiences.

Why This Site Doesn't Implement Product Markup#

This article discusses Product, but the page itself is not a product page, nor does it have prices, inventory, purchase buttons, real product images, or user reviews. Therefore, this page will not add Product JSON-LD just to "practice what we preach."

Site DemonstrationCorrect "practice what we preach" isn't marking a tutorial page as Product when discussing Product, but clearly telling readers: only real product pages should use Product. This page continues using Article, BreadcrumbList, and FAQPage because its true identity is a tutorial article.

How to Validate and Monitor#

  1. Test product pages with Rich Results Test.
  2. Check for errors and warnings in Product snippets and Merchant listings.
  3. Spot-check whether prices, inventory, and ratings match page-visible content.
  4. After launch, monitor batch errors in Search Console shopping-related enhancement reports.
  5. If using Merchant Center, simultaneously check product diagnostics, price inconsistencies, inventory inconsistencies, etc.

Common Mistakes#

ErrorConsequenceFix
Marking tutorial page as ProductType mismatchOnly real product pages use Product
Price inconsistent with pageUntrustworthy, may affect shopping eligibilityGenerate page and JSON-LD from same data source
Expired inventoryPoor UX, data distortionUpdate promptly when out of stock or delisted
Fabricated aggregateRatingHigh risk of structured data violationDon't write ratings without real reviews
Image not product photoGoogle struggles to display productUse clear, crawlable, real product images
Ignoring Merchant CenterIncomplete e-commerce dataUse structured data and Feed together

Product Launch Checklist#

  • Page is real product page, product review, or product introduction page
  • Distinguish Product snippets from Merchant listings scenarios
  • name consistent with page product title
  • image is real, visible, crawlable product photo
  • offers.price consistent with current page price
  • priceCurrency uses three-digit currency code
  • availability consistent with real inventory
  • aggregateRating/review from real visible reviews
  • Product identifiers sku/mpn/gtin completed as much as possible
  • Page data, JSON-LD, Merchant Center Feed remain consistent
  • Rich Results Test shows no critical errors
  • Continuous monitoring in Search Console and Merchant Center

Frequently Asked Questions#

What is the difference between Product snippets and Merchant listings?

Product snippets are suitable for product introduction, review, or comparison pages that cannot be directly purchased, focusing on ratings, reviews, prices, and other summary information. Merchant listings are suitable for e-commerce product pages where users can purchase directly, focusing on prices, inventory, shipping, returns, product images, and more complete merchant information. The two overlap, but key fields should be selected based on whether the page can be purchased directly.

Is adding Product structured data sufficient for product pages?

Not necessarily. For e-commerce websites, Google recommends providing both on-page Product structured data and Google Merchant Center product feeds. The combination improves data completeness and consistency, and is better suited for frequently changing information like inventory, prices, shipping, and returns.

Can I mark prices or ratings that are not displayed on the page?

No. Price, inventory, ratings, reviews, and other information in Product structured data must be consistent with content visible to users on the page. Fabricated ratings, hidden prices, expired inventory, or Offers inconsistent with the page may cause rich results to fail or even trigger structured data violations.

Can I write aggregateRating when there are no user reviews?

You should not. aggregateRating must come from real, visible, verifiable review data. If a product has no real reviews, do not fabricate ratings for star display. You can first provide only real fields like name, image, and offers.