Rich snippets - Products

New! schema.org lets you mark up a much wider range of item types on your pages, using a vocabulary that Google, Microsoft, and Yahoo! can all understand. Find out more. (Google still supports your existing rich snippets markup, though.)

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 a specific product, not a category of products or a list of products. Product markup on listing or category 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:

  • asin
  • isbn
  • mpn
  • sku
  • upc
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:
  • new
  • used
  • refurbished

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:
  • out_of_stock
  • in_stock
  • instore_only
  • preorder
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:

  • asin
  • isbn
  • mpn
  • upc
  • sku
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:
  • new
  • used
  • refurbished

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:

  • asin
  • isbn
  • mpn
  • upc
  • sku
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 page

The 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. itemscope indicates that the content of the <div> describes an item, and itemtype="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 an itemprop attribute 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:

  • category
  • priceValidUntil
  • currency
  • price
  • identifier
  • condition

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.)

Shopping aggregator page (single product, multiple sellers, different prices)

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. itemscope indicates that the content of the <div> describes an item, and itemtype="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 an itemprop attribute 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:

  • category
  • priceValidUntil
  • currency
  • price
  • identifier
  • condition

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.)