Appearance
Describe a product
ReferenceThis worked example shows how to describe a product for sale using Product, Offer, and AggregateRating. It is a common pattern for ecommerce pages.
Objective
Produce valid structured data that captures the product identity, its price and availability, and its aggregate rating.
Steps
Start with the Product type. Capture identity properties such as
name,image,description,sku, andbrand.Add an Offer. The
offersproperty holds anOfferthat capturesprice,priceCurrency,availability, and theurlwhere the product can be bought.Add an AggregateRating. When you display review scores, the
aggregateRatingproperty holds anAggregateRatingwithratingValueandreviewCount.Combine into one block.
json
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Executive Anvil",
"image": "https://example.com/photos/anvil.jpg",
"description": "Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler.",
"sku": "0446310786",
"brand": {
"@type": "Brand",
"name": "ACME"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.4",
"reviewCount": "89"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/anvil",
"priceCurrency": "USD",
"price": "119.99",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock"
}
}Field notes
priceis a string to preserve precision and formatting.availabilityuses an enumeration member identifier.priceValidUntiluses an ISO 8601 date.- The brand is a nested
Brandentity, not a plain string, so it can carry its own properties.
Done when
- The block validates with no errors against the Product type.
- Price, availability, and rating match what the page displays.