If you're a merchant, you can give Google detailed product information we can use to display rich snippets (for example, price, availability, and review ratings) right on our search results pages.
Rich snippets help you to:
- Attract potential buyers while they are searching for items to buy on Google.
- Submit your product listings for free.
- Control your product information. You can maintain the accuracy and freshness of your product information, so your customers find the relevant, current items they're looking for.
This article describes how to use the Google Product vocabulary to mark up your product information on a product page (a page that contains only a single product) or an aggregated offer page (a page that lists a single product, along with information about different sellers offering that product). Google also supports hProduct (microformats) and GoodRelations.
Usage guidelines
The goal of a product rich snippet is to provide users with additional information about a specific product, such as the product’s price, availability (whether product is in stock), and reviewer(s) ratings and commentary.
The following guidelines apply to product snippets:
- When using product markup, the main topic of the page should be about a specific product. Product markup on listing pages is not supported.
- The product should be available for purchase directly on the page. We do not support product markup for pages that require a user to visit separate seller's site or contact a seller offline to complete a purchase.
- Adult-related products are not supported.
- If the product has been reviewed by a single reviewer, the reviewer’s name needs to be a valid name for a Person (e.g. "James Smith") or Team/Organization (e.g. "CNET Reviewers"). For example, "50% off on Black Friday" is not a valid name.
About Product offers
A Product offer consists of Product information (details about the product itself, such as its name, brand, and model) plus one of the following:
- Offer (price and other offer information).
- Offer-aggregate (aggregated details about multiple Offers for the same Product, including the lowest and highest available prices).
A Product can include an Offer or Offer-aggregate; or an Offer or Offer-aggregate can include one or more Products. Use the structure that works best for your content. Properties in bold are required.
Product
| Property | Description |
|---|---|
name |
The name of the product. |
image |
The URL of a product photo. |
description |
Product description. |
brand |
The brand of the product. Can include nested organization info. Google recommends including brand and at least one identifier for each product. |
category |
The product category—for example, "Books-Fiction", "Tools", or "Cars". You can include multiple categories. Any value is accepted, but Google recognizes the categories described in this article. |
review |
A nested Review-aggregate of the product (for example, the average rating). If there are multiple reviews of the product, mark up aggregated review data (for example, the average rating from all users) using Review-aggregate rather than individual reviews. |
identifier |
The product identifier. Google recommends including brand and at least one identifier for each product.
Recognized types include:
|
offerDetails |
An offer to sell the product. Includes a nested Offer or Offer-aggregate. |
Offer
| Property | Description |
|---|---|
price |
The price of the product. A floating point number. You may use either a decimal point ('.') or a comma (',') as a separator. |
currency |
The currency used to describe the product price, in three-letter ISO format. |
priceValidUntil |
The date (in ISO date format) after which the price will no longer be available. (Your product snippet may not display if the priceValidUntil property indicates a past date.) |
seller |
The seller of the product. Can contain a Person or Organization. |
condition |
Any text may be specified. If the condition attribute is used, the value of the content attribute must be one of the following recognized values:
For example: <span itemprop="condition" content="new">Brand new!</span> |
availability |
Any text may be specified, but the value of the content attribute must be one of the following recognized values:
|
quantity |
The number of items available for this offer. |
offerURL |
A URL to the product web page (that includes the Offer). (Don't use offerURL for markup that appears on the product page itself.) |
identifier |
The product identifier. Google recommends including brand and at least one identifier for each product.
Recognized types include:
|
itemOffered |
The item being sold. Typically, this includes a nested Product, but it can also contain other item types or free text. |
Offer-aggregate
| Property | Description |
|---|---|
lowPrice |
The lowest price of all offers available. Floating point number. |
highPrice |
The highest price of all offers available. Floating point number. |
currency |
The currency used to describe the product price, in three-letter ISO format. |
offerCount |
The number of offers for the product. |
condition |
Any text may be specified, but the value of the content attribute must be one of the following recognized values:
For example: <span itemprop="condition" content="new">Brand new!</span> |
offerURL |
A URL to the product web page (that includes the Offer or Offer-aggregate). (Don't use offerURL for markup that appears on the product page itself.) |
identifier |
The product identifier. Google recommends including brand and at least one identifier for each product.
Recognized types include:
|
itemOffered |
The item being sold. Typically, this includes a nested Product, but it can also contain other item types or free text. |
Examples
This article provides examples for the following:
Single product pageThe following HTML code describes an ACME-brand anvil, attractively priced at $119.99 and sold by the online retailer Executive Objects.
ACME Executive Anvil <img src="anvil_executive.jpg"/> Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler looking for something to drop from a height. Category: Anvils Product #: 925872 Average rating: 4.4, based on 89 reviews Regular price: $179.99 Sale: $119.99 (Sale ends 5 November!) Available from: Executive Objects Condition: Previously owned, in excellent condition In stock! Order now!
Here is the same content, marked up with Product and Offer properties. The example consists of a Product (the ACME Executive Anvil) with a nested Offer. If you prefer, you could instead create an Offer with a nested Product.
<div itemscope itemtype="http://data-vocabulary.org/Product">
<span itemprop="brand">ACME</span> <span itemprop="name">Executive
Anvil</span>
<img itemprop="image" src="anvil_executive.jpg" />
<span itemprop="description">Sleeker than ACME's Classic Anvil, the
Executive Anvil is perfect for the business traveler
looking for something to drop from a height.
</span>
Category: <span itemprop="category" content="Hardware > Tools > Anvils">Anvils</span>
Product #: <span itemprop="identifier" content="mpn:925872">
925872</span>
<span itemprop="review" itemscope itemtype="http://data-vocabulary.org/Review-aggregate">
<span itemprop="rating">4.4</span> stars, based on <span itemprop="count">89
</span> reviews
</span>
<span itemprop="offerDetails" itemscope itemtype="http://data-vocabulary.org/Offer">
Regular price: $179.99
<meta itemprop="currency" content="USD" />
$<span itemprop="price">119.99</span>
(Sale ends <time itemprop="priceValidUntil" datetime="2020-11-05">
5 November!</time>)
Available from: <span itemprop="seller">Executive Objects</span>
Condition: <span itemprop="condition" content="used">Previously owned,
in excellent condition</span>
<span itemprop="availability" content="in_stock">In stock! Order now!</span>
</span>
</div>
Here's how this example works.
- On the first line,
<itemscope itemtype="http://data-vocabulary.org/Product">indicates that the HTML enclosed in the<div>represents a Product.itemscopeindicates that the content of the<div>describes an item, anditemtype="http://data-vocabulary.org/Product"indicates that the item is a Product. - The sample describes properties of the Product, such as its name, brand, and price. To label product properties, each element containing one of these properties (such as
<div>or<span>) is assigned anitempropattribute indicating a property. For example,<span itemprop="brand">. - The sample also includes a nested Review-aggregate (
itemprop="review" itemscope itemtype="http://data-vocabulary.org/Review-aggregate") and a nested Offer (itemprop="offerDetails" itemscope itemtype="http://data-vocabulary.org/Offer"), which describes specific information including the price, condition, and availability. More information about nested items.
Product identifiers
Specify both type (for example, SKU or MPN) and value in the content attribute, separated by a colon, like this:
<span itemprop="identifier" content="mpn:12345-6789"> The manufacturer's part number is 12345-6789</span>
Non-visible text
In general, Google will use only marked-up data that is visible to the user. Hidden data will be ignored. However, in a few circumstances, it can be useful to provide both a machine-readable and a human-readable version of your content. For example, while the text string "Elvis's birthday" is significant to a great many human readers, it's not as meaningful to search engines as 1935-01-08. Similarly, human readers can infer the meaning of the $ symbol, but it can be useful to specifically tell search engines whether your prices are in pesos or dollars.
Google recognizes specific machine-readable values for the following Product tags:
categorypriceValidUntilcurrencypriceidentifiercondition
The following example describes the condition of an item, providing Google with the machine-readable value used while displaying a text equivalent (Previously owned but in excellent condition) to the human reader.
<span itemprop="condition" content="used">Previously owned but in excellent condition</span>
Use the meta tag to specify content that is not visible on the page in any way. For example, to indicate to Google that your price is in USD, do this:
<meta itemprop="currency" content="USD" />
For dates and times, specify the date in ISO date format in the time element, like this:
<time itemprop="priceValidUntil" datetime="2020-11-05">5 November 2020</time>
(Your product snippet may not display if the priceValidUntil property indicates a past date.)
The following HTML code describes the ACME-brand Executive Anvil, and provides offer information from multiple sellers, including the highest and lowest available prices.
ACME Executive Anvil <img src="anvil_executive.jpg" /> Average rating: 4.4, based on 89 reviews Available from 12 sellers Prices from $119 to $199.99
Here's the same content, marked up with Product and Offer-aggregate properties.
<div itemscope itemtype="http://data-vocabulary.org/Product">
<span itemprop="brand">ACME</span> <span itemprop="name">Executive Anvil</span>
<img itemprop="image" src="anvil_executive.jpg" />
<span itemprop="review" itemscope
itemtype="http://data-vocabulary.org/Review-aggregate">
Average rating: <span itemprop="rating">4.4</span>, based on
<span itemprop="count">89</span> reviews
</span>
<span itemprop="offerDetails" itemscope itemtype="http://data-vocabulary.org/Offer-aggregate">
from $<span itemprop="lowPrice">119.99</span> to
$<span itemprop="highPrice">199.99</span>
<meta itemprop="currency" content="USD" />
</span>
</div>
Here's how this sample works:
- On the first line,
<itemscope itemtype="http://data-vocabulary.org/Product">indicates that the HTML enclosed in the<div>represents a Product.itemscopeindicates that the content of the<div>describes an item, anditemtype="http://data-vocabulary.org/Product"indicates that the item is a Product. - The sample describes properties of the product, such as its name and brand. To label product properties, each element containing one of these properties (such as
<div>or<span>) is assigned anitempropattribute indicating a property. For example,<span itemprop="brand">. - The sample includes a nested Offer-aggregate (
itemprop="Offer-aggregate" itemscope itemtype="http://data-vocabulary.org/Offer-aggregate"), which specifies the low and high prices offered by sellers. More information about nested items. - The sample also includes a nested Review-aggregate (
itemprop="review" itemscope itemtype="http://data-vocabulary.org/Review-aggregate").
Non-visible text
In general, Google will use only marked-up data that is visible to the user. Hidden data will be ignored. However, in a few circumstances, it can be useful to provide both a machine-readable and a human-readable version of your content. For example, while the text string "Elvis's birthday" is significant to a great many human readers, it's not as meaningful to search engines as 1935-01-08. Similarly, human readers can infer the meaning of the $ symbol, but it can be useful to specifically tell search engines whether your prices are in pesos or dollars.
Google recognizes specific machine-readable values for the following Product tags:
categorypriceValidUntilcurrencypriceidentifiercondition
The following example describes the condition of an item, providing Google with the machine-readable value used while displaying a text equivalent (Previously owned but in excellent condition) to the human reader.
<span itemprop="condition" content="used">Previously owned but in excellent condition</span>
Use the meta tag to specify content that is not visible on the page in any way. For example, to indicate to Google that your price is in USD, do this:
<meta itemprop="currency" content="USD" />
For dates and times, specify the date in ISO date format in the time element, like this:
<time itemprop="priceValidUntil" datetime="2020-11-05">5 November 2020</time>
(Your product snippet may not display if the priceValidUntil property indicates a past date.)
- To check that your markup is correct, and preview how your content might look in search results, use the structured data testing tool.
- If rich snippets aren't appearing for your site, see possible reasons why.
