Product structured data in one paste
The JSON-LD Product Schema Builder turns a handful of product fields into a valid schema.org/Product block. Search engines read this markup to display price, stock status and star ratings beside your listing, which is one of the cheapest ways to lift click-through rate on commercial pages.
How it works
The tool assembles a JSON object with @context set to https://schema.org and @type set to Product. Your name, description, image, brand and SKU become top-level properties. Price, currency and availability are nested inside an offers object of type Offer, and the availability is emitted as a full schema.org URL (for example https://schema.org/InStock) because Google requires the URL form. If you supply a rating, an aggregateRating object is added with ratingValue, reviewCount and a bestRating of 5. Empty fields are omitted so the output stays clean and valid.
Tips and example
Always use an absolute, crawlable image URL — relative paths fail validation. Use an ISO 4217 currency code such as USD, EUR or GBP. After copying, run the markup through Google’s Rich Results Test to confirm there are no errors before you ship.
"offers": {
"@type": "Offer",
"price": "29.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
When product rich results show up in search
Google can display price, availability, and rating stars alongside your organic search result when the page carries valid Product JSON-LD. This enriched result — sometimes called a “product snippet” — appears in regular search results, Google Shopping, and the Images tab. The practical effect is that your listing occupies more visual space and signals key purchase signals before the user even clicks.
Rich results eligibility requires:
- A crawlable product page (not login-gated)
- A visible price and availability on the page that matches the markup
- If you include
aggregateRating, those stars must reflect real user reviews that are also visible on the page
Availability values and what they mean
The availability property must be a full schema.org URL. The most common values:
| URL | Meaning |
|---|---|
https://schema.org/InStock | Ready to ship now |
https://schema.org/OutOfStock | Currently unavailable |
https://schema.org/PreOrder | Not yet released, can order in advance |
https://schema.org/BackOrder | Sold out but re-order is accepted |
https://schema.org/Discontinued | No longer sold |
Keeping this field accurate is important. Outdated or incorrect availability data can lead Google to suppress the rich result or, in repeated cases, to trigger a manual review of the structured data.
Ratings — when to include them and when not to
The aggregateRating block adds star icons to your search result, which typically increases click-through rate. However, including this block when you do not have real reviews on the page violates Google’s structured data quality guidelines and can trigger a manual action that removes all rich results from your site.
The safe rule: only add aggregateRating when:
- Real user reviews are visible to anyone who visits the page.
- The
ratingValueandreviewCountin the schema match what the page actually shows.
Importing 200 reviews from a third-party platform and displaying them on the page is fine. Hardcoding a reviewCount of 500 without actual reviews is not.
A complete product block example
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Noise-Cancelling Headphones Pro",
"description": "Over-ear headphones with 40-hour battery and active noise cancellation.",
"image": "https://example.com/images/headphones-pro.jpg",
"brand": { "@type": "Brand", "name": "AudioCo" },
"sku": "HC-PRO-2026",
"offers": {
"@type": "Offer",
"price": "149.99",
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "312",
"bestRating": "5"
}
}