Supported structured data attributes and values

Use structured data markup on your product landing pages to help Google retrieve up-to-date information about your products and offers directly from your website. Any structured data markup that is supported by Merchant Center will have corresponding attributes and accepted values, as listed in the product data specification. Your structured data must be matched to the corresponding values and attributes.

Not all attributes are supported by schema.org at this time.

Attributes and schema.org annotations

Attributes are one of the ways that the product data that you submit to Merchant Center is organized. Each attribute contains a single piece of information about an item such as the item's title or description. Accurately matching the schema.org value to the corresponding product data specification attributes will lead to fewer errors when validating your feed.

Note: If you’re using automatic item updates, make sure to specify the schema.org properties price, priceCurrency, and availability to increase its accuracy. Learn more about automatic item updates

Schema.org Property

Product data attribute

Type and description
The following attributes are from the schema.org Product type
sku id

Text

The unique stock keeping unit (SKU) you assigned to your product.

name title Text
description description Text
image image_link A valid image URL
inProductGroupWithID item_group_id

Text

A parent SKU, required to group all variant products belonging to the same product group together.

gtin8
gtin12
gtin13
gtin14
isbn
gtin

Text

The GTIN that uniquely identifies your product.

Specify only one of these schema.org properties.

If you use GTIN values, they must be the correct length and contain the correct check digit.

material material Text
pattern pattern Text
mpn mpn Text
brand brand Text
audience.suggestedGender gender

Text

Use the audience property to specify a PeopleAudience object which itself specifies suggestedGender. Valid values are those defined by the gender attribute:

  • male
  • female
  • unisex
audience.suggestedMinAge audience.suggestedMaxAge age_group

Number (in years)

Use the audience property to specify a PeopleAudience object which itself specifies suggestedMinAge and suggestedMaxAge.

Valid values are those defined by the age_group attribute:


Data spec
schema value
 
suggestedMinAge

suggestedMaxAge
newborn 0 0.25
infant 0.25 1.0
toddler 1.0 5.0
kids 5.0 13.0
adult 13 Not specified

 
color color Text
size size Text

hasEnergyConsumptionDetails. hasEnergyEfficiencyCategory

energy_efficiency_class, min_energy_efficiency_class, Valid values for each of the 3 properties are from the EUEnergyEfficiencyEnumeration type. They’re mapped to feed values as follows:

hasEnergyConsumptionDetails. hasEnergyEfficiencyCategory

hasEnergyConsumptionDetails. energyEfficiencyScaleMin

hasEnergyConsumptionDetails. energyEfficiencyScaleMax

 

 
energy_efficiency_class, min_energy_efficiency_class, max_energy_efficiency_class

Valid values for each of the 3 properties are from the EUEnergyEfficiencyEnumeration type. They’re mapped to feed values as follows:

The following attributes are from the schema.org Offer type, which must be nested within a product using the offers property (see examples below).

url

link A valid URL to your product.

price

priceCurrency 

or:

priceSpecification.price

priceSpecification.priceCurrency

 

price

price: Number. Submitted without currency symbols, thousands separators or spaces (e.g. '1498.99'). 

priceCurrency: Text. Submitted in a 3-letter ISO 4217 format (e.g. 'USD', 'GBP', 'EUR'), the currency should meet the language and currency requirements for your target country.

Note: price and priceCurrency can be provided directly under the Offer instance or indirectly via a priceSpecification property of type PriceSpecification (see examples below).
availability availability

Valid values are from the ItemAvailability type. They’re mapped to feed values as follows:

Data spec schema value
in_stock
  • InStock 
  • LimitedAvailability 
  • OnlineOnly
out_of_stock
  • Discontinued
  • InStoreOnly
  • OutOfStock
  • SoldOut
preorder
  • PreOrder 
  • PreSale

 

availabilityStarts

availabilityEnds

availability_date Date or DateTime in ISO 8601 format.
itemCondition condition

Valid values are from the OfferItemCondition type. They’re mapped to feed values as follows:

Data spec  schema value
new
  • NewCondition
refurbished
  • RefurbishedCondition
used
  • DamagedCondition
  • UsedCondition

 

Examples using JSON-LD

Single Product

{
"@context": "https://schema.org/",
  "@type": "Product",
  "sku": "trinket-12345",
  "image": "https://www.example.com/trinket.jpg",
  "name": "Nice trinket",
  "description": "Trinket with clean lines",
  "gtin14": "12345678901234",
  "brand": {
    "@type": "Thing",
    "name": "MyBrand"
  },
  "offers": {
    "@type": "Offer",
    "url": "http://www.example.com/trinket_offer",
    "itemCondition": "https://schema.org/NewCondition",
    "availability": "https://schema.org/InStock",
    "price": "39.99",
    "priceCurrency": "USD"

  }
}

Variants grouped using "inProductGroupWithID"

Certain products may contain multiple variants, such as color or price. To show the variants, you need to add additional structured data to show that there are multiple products on one page. This example has one product that varies in color and size. One of the colors is only available in one size. The other color is available in two sizes. The inProductGroupWithID property is required to show that all 3 variants belong to the same product group.

Example

[
  {
    "@context": "https://schema.org/",
    "@type": "Product",
    "sku": "44E01-M11000",
    "gtin14": "98766051104218",
    "inProductGroupWithID": "44E01",
    "image": "https://www.example.com/coat_small_green.jpg",
    "name": "Small green coat",
    "description": "Small wool green coat for winter",
    "brand": {
      "@type": "Thing",
      "name": "Good brand"
    },
    "audience": {
      "@type": "PeopleAudience",
      "suggestedGender": "unisex",
      "suggestedMinAge": 13
    },
    "color": "green",
    "size": "small",

    "offers": {
      "@type": "Offer",
      "url": "https://www.example.com/coat?s=s&c=g",
      "priceCurrency": "USD",
      "price": 39.99,
      "itemCondition": "https://schema.org/NewCondition",
      "availability": "https://schema.org/InStock"
    }
  },
  {
    "@context": "https://schema.org/",
    "@type": "Product",
    "sku": "44E01-K11000",
    "gtin14": "98766051104201",
    "inProductGroupWithID": "44E01",
    "image": "https://www.example.com/coat_small_darkblue.jpg",
    "name": "Small dark blue coat",
    "description": "Small dark blue coat for winter",
    "brand": {
      "@type": "Thing",
      "name": "Good brand"
    },
    "audience": {
      "@type": "PeopleAudience",
      "suggestedGender": "unisex",
      "suggestedMinAge": 13
    },
    "color": "light blue",
    "size": "small",

    "offers": {
      "@type": "Offer",
      "url": "https://www.example.com/coat?s=s&c=lb",
      "priceCurrency": "USD",
      "price": 39.99,
      "itemCondition": "https://schema.org/NewCondition",
      "availability": "https://schema.org/InStock"
    }
  },
  {
    "@context": "https://schema.org/",
    "@type": "Product",
    "sku": "44E01-X1100000",
    "gtin14": "98766051104391",
    "inProductGroupWithID": "44E01",
    "image": "https://www.example.com/coat_large_darkblue.jpg",
    "name": "Large dark blue coat",
    "description": "Large dark blue coat for winter",
    "brand": {
      "@type": "Thing",
      "name": "Good brand"
    },
    "audience": {
      "@type": "PeopleAudience",
      "suggestedGender": "unisex",
      "suggestedMinAge": 13
    },
    "color": "light blue",
    "size": "large",

    "offers": {
      "@type": "Offer",
      "url": "https://www.example.com/coat?s=l&c=lb",
      "priceCurrency": "USD",
      "price": 49.99,
      "itemCondition": "https://schema.org/NewCondition",
      "availability": "https://schema.org/InStock"
    }
  }
]

Variants grouped using a “ProductGroup” 

The following example is similar to the previous example, except it adds more structure by explicitly defining the Product Group that the variants belong to.

Example

[
  {
    "@context": "http://schema.org/",
    "@type": "ProductGroup",
    "name": "Coat winter collection",
    "url": "https://www.example.com/coat",
    "brand": {
      "@type": "Thing",
      "name": "Good brand"
    },
    "audience": {
      "@type": "PeopleAudience",
      "suggestedGender": "unisex",
      "suggestedMinAge": 13
    },
    "productGroupID": "44E01",
    "variesBy": [ "size", "color" ],
    "hasVariant": [

      {
        "@context": "https://schema.org/",
        "@type": "Product",
        "sku": "44E01-M11000",
        "gtin14": "98766051104218"
        "image": "https://www.example.com/coat_small_green.jpg",
        "name": "Small green coat",
        "description": "Small wool green coat for winter",
        "color": "green",
        "size": "small",

        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat?s=s&c=g",
          "priceCurrency": "USD",
          "price": 39.99,
          "itemCondition": "https://schema.org/NewCondition",
          "availability": "https://schema.org/InStock"
        }
      },
      {
        "@context": "https://schema.org/",
        "@type": "Product",
        "sku": "44E01-K11000",
        "gtin14": "98766051104201",
        "image": "https://www.example.com/coat_small_darkblue.jpg",
        "name": "Small dark blue coat",
        "description": "Small dark blue coat for winter",
        "color": "light blue",
        "size": "small",

        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat?s=s&c=lb",
          "priceCurrency": "USD",
          "price": 39.99,
          "itemCondition": "https://schema.org/NewCondition",
          "availability": "https://schema.org/InStock"
        }
      },
      {
        "@context": "https://schema.org/",
        "@type": "Product",
        "sku": "44E01-X1100000",
        "gtin14": "98766051104391",
        "image": "https://www.example.com/coat_large_darkblue.jpg",
        "name": "Large dark blue coat",
        "description": "Large dark blue coat for winter",
        "color": "light blue",
        "size": "large",

        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat?s=l&c=lb",
          "priceCurrency": "USD",
          "price": 49.99,
          "itemCondition": "https://schema.org/NewCondition",
          "availability": "https://schema.org/InStock"
        }
      }
    ]
  }
]

Multiple unrelated products on one landing page

When your page contains multiple unrelated products and each product has its own structured data annotation, each annotation must contain information that identifies which product it is referring to. For example, it’s recommended to provide the SKU (id attribute) or GTIN14 (gtin attribute) in each annotation. If you don’t provide this information, the products on your landing page may not be matched to your structured product data. Learn more about setting up structured data on landing pages

Example

[
  {
    "@context": "https://schema.org/",
    "@type": "Product",
    "sku": "trinket-12345",
    "image": "https://www.example.com/trinket.jpg",
    "name": "Nice trinket",
    "description": "Trinket with clean lines",
    "gtin14": "12345678901234",
    "brand": {
      "@type": "Thing",
      "name": "MyBrand"
    },
    "offers": {
      "@type": "Offer",
      "url": "http://www.example.com/trinket_offer",
      "itemCondition": "https://schema.org/NewCondition",
      "availability": "https://schema.org/InStock",
      "price": "39.99",
      "priceCurrency": "USD"
    }
  },
  {
    "@context": "https://schema.org/",
    "@type": "Product",
    "sku": "racket-12345",
    "image": "https://www.example.com/racket.jpg",
    "name": "Nice racket",
    "description": "Racket for Tennis",
    "gtin14": "12345678901235",
    "brand": {
      "@type": "Thing",
      "name": "MyBrand"
    },
    "offers": {
      "@type": "Offer",
      "url": "http://www.example.com/racket_offer",
      "itemCondition": "https://schema.org/NewCondition",
      "availability": "https://schema.org/InStock",
      "price": "59.99",
      "priceCurrency": "USD"
    }
  }
]

Test your markup

Test your Schema.org implementation with the Rich results tool. Visit the Google Search Console Help Center to learn more about using the tool, debugging any issues, and interpreting your results in the tool.

Requirements for structured data markup

  • Structured data markup must be present in the HTML returned from the web server. The structured data markup can’t be generated with Javascript after the page has loaded.
  • Your landing page cannot change based on information about the user, such as if you adapt prices based on a user’s IP address or browser type.
  • Structured data must match the values that are shown to the user. Providing incorrect data on your product landing pages is a violation of our web developer guidelines.
  • Google recommends the use of JSON-LD for your structured data.

Was this helpful?
How can we improve it?

Need more help?

Sign in for additional support options to quickly solve your issue