Product Schema Markup: Get Price, Stars, and Availability in Google Search

Last Updated: February 25, 2026 · 15 min read

Product schema is one of the most valuable structured data implementations for e-commerce. When correctly implemented, it displays your product's price, stock availability, star ratings, and review count directly in Google search results — without the user needing to click your page. Studies show this increases CTR by an average of 18–25%.

What you can get with Product schema

Price displayed in search snippet
Star ratings from verified reviews
In stock / out of stock indicator
Google Shopping integration (free)
Price range for product variants
Merchant Center eligibility

1. Complete Product Schema — Full JSON-LD Template

This is a complete, production-ready Product schema covering all major properties that Google uses for rich results:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Wireless Bluetooth Headphones Pro",
  "image": [
    "https://example.com/images/headphones-main.jpg",
    "https://example.com/images/headphones-side.jpg"
  ],
  "description": "Premium noise-cancelling headphones with 30-hour battery life.",
  "sku": "WBH-PRO-001",
  "mpn": "BH-SERIES-5",
  "gtin13": "0123456789012",
  "brand": {
    "@type": "Brand",
    "name": "AudioTech"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/headphones-pro",
    "priceCurrency": "USD",
    "price": "149.99",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "name": "Example Store"
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": "0",
        "currency": "USD"
      },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": {
          "@type": "QuantitativeValue",
          "minValue": 0,
          "maxValue": 1,
          "unitCode": "DAY"
        },
        "transitTime": {
          "@type": "QuantitativeValue",
          "minValue": 2,
          "maxValue": 5,
          "unitCode": "DAY"
        }
      }
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "2847",
    "bestRating": "5",
    "worstRating": "1"
  },
  "review": [{
    "@type": "Review",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5"
    },
    "author": {
      "@type": "Person",
      "name": "Alex Johnson"
    },
    "reviewBody": "Best headphones I have ever owned. Sound quality is incredible."
  }]
}

2. Required vs Recommended Properties

PropertyRequired?Effect
name✅ RequiredProduct name in rich result
image✅ RequiredProduct image in rich result
offers.price✅ Required for pricePrice displayed in snippet
offers.priceCurrency✅ Required for priceCurrency code (USD, INR, GBP)
offers.availability✅ Required for availabilityIn Stock / Out of Stock indicator
aggregateRating⭐ Strongly recommendedStar ratings in snippet
sku / gtin13⭐ Strongly recommendedGoogle Shopping integration
brand⭐ RecommendedBrand display in Shopping
review➕ OptionalReview snippets, E-E-A-T signals
shippingDetails➕ OptionalFree shipping badge in Shopping

3. Platform-Specific Setup

Shopify

Shopify adds basic Product schema automatically via product.json in the theme. To add star ratings (which Shopify does not include by default):

  1. 1.Install Judge.me, Loox, or Okendo review apps — they inject AggregateRating schema automatically.
  2. 2.Or edit your product.liquid / product-schema.liquid to add the aggregateRating block manually.
  3. 3.Validate using our tool with your product page URL to confirm correct output.

WooCommerce

WooCommerce generates Product schema automatically. Key issues and fixes:

🚩 Missing aggregateRating

Enable "Product Reviews" in WooCommerce settings. Yoast WooCommerce SEO plugin handles this automatically.

🚩 priceValidUntil missing (causes errors)

Add via Yoast or custom code. Without it, some GSC validations flag a warning.

🚩 Wrong availability value

WooCommerce maps stock status to schema automatically, but verify: InStock, OutOfStock, PreOrder are the valid values.

4. Google's Merchant Listings vs Product Snippets

FeatureProduct SnippetsMerchant Listings
RequirementProduct schema on pageProduct schema + verified business
Appears inOrganic search resultsShopping tab + organic
Shows price✅ Yes✅ Yes
Shows ratings✅ Yes (with aggregateRating)✅ Yes
Free?✅ Free✅ Free (no ads needed)
Setup neededJust JSON-LD on pageJSON-LD + Merchant Center verification

Frequently Asked Questions

Does Product schema help with Google Shopping rankings?

Yes — but only if you connect to Google Merchant Center. Product schema alone enables organic product snippets (price and ratings in regular search results). For Google Shopping tab exposure, you need to either (a) verify your site in Google Merchant Center and link it, or (b) use the Shopping adf crawling. Merchant Center pulls schema data from your pages automatically once connected.

Can I add Product schema to a category page or collection page?

No. Product schema belongs on individual product pages only. For category/collection pages listing multiple products, use ItemList schema with each ListItem pointing to an individual product URL. Adding Product schema to a listing page is a policy violation and will be ignored or penalised.

Do I need a GTIN for my products?

GTIN (barcode) is strongly recommended but not required for basic rich results. However, without a GTIN (gtin13, gtin12, or gtin8), your products are ineligible for Google’s enhanced Merchant Listings experience and may rank lower in Google Shopping. If you manufacture your own products, apply for a GS1 GTIN. If you resell branded products, use the manufacturer’s GTIN.

How many reviews do I need before adding AggregateRating?

Google does not publish a minimum, but the SEO convention is: wait until you have at least 5–10 genuine reviews and an average of 4.0 or above before adding aggregateRating. A low star average (2.5–3.0) displayed in the SERP is a stronger CTR deterrent than no rating at all. Never fabricate reviews or reviewCount values — this is a manual action risk.

What availability values should I use for Product schema?

Use the full Schema.org URL forms: https://schema.org/InStock, https://schema.org/OutOfStock, https://schema.org/PreOrder, https://schema.org/BackOrder, https://schema.org/Discontinued. Do not use plain text strings like “In Stock” or enum shortcuts. Keep this property accurate and sync it with real inventory — mismatches trigger Rich Results Test warnings.

Does priceValidUntil need to be in the future?

Yes — set priceValidUntil to a future date (e.g. end of year). If you omit it, Google flags a warning in validation. If you set a past date, it may cause the price to be disregarded in rich results. Update it annually as part of a schema maintenance calendar. Dynamic sites can generate this field automatically based on current date + 365 days.

My Shopify store already adds Product schema. Do I need to do anything?

Shopify’s default themes add basic Product schema (name, price, availability, image), but they omit aggregateRating (unless you use a review app) and often omit sku, brand, and shippingDetails. Install Judge.me, Okendo, or Loox for review schema. Validate your product pages on SchemaValidator.org to see exactly what is missing and whether errors exist.

Can I have multiple Product offers for different variants?

Yes — use AggregateOffer instead of Offer when a product has multiple variants (sizes, colours) at different prices. Set the lowPrice and highPrice properties on AggregateOffer. If each variant has its own product page, use individual Product + Offer schema on each page with that variant’s specific price and availability.

Validate Your Product Schema

Check if your Product JSON-LD is correct and eligible for Google rich results.

Validate Product Schema →