Offer structured data

The Citead team, updated

In short. Offer structured data describes a product offer using separate fields for its current price, currency and availability.

Definition: Offer structured data describes an offer to sell an item or provide a service using the Schema.org vocabulary. On a product page, an Offer can carry the product's current price, currency and availability inside the product's offers property.

Key facts

  • As of 17 October 2026, Google's merchant listing documentation requires an active price greater than zero and a currency for merchant listing offers; it recommends availability.
  • Schema.org's Offer definition separates price from priceCurrency and specifies a full stop as the decimal separator.
  • Google's structured data policies require up-to-date information and content visible to readers of the page.

How are price and currency represented?

Google's merchant listing guide defines offers as a nested Offer to sell the product. Merchant listings require the merchant to be the seller. The active price goes in price, with the currency in priceCurrency using a three-letter ISO 4217 code, such as USD.

This fragment combines fields from Google's examples and belongs inside a Product object:

{
  "offers": {
    "@type": "Offer",
    "price": 39.99,
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}

The example amount comes from the documentation. A live page supplies its own current offer values and the required product properties.

An active price can also appear inside priceSpecification, an object containing pricing details. If both locations specify an active price, Google uses offers.price. The currency accompanies the price at the corresponding location.

Schema.org's price usage guidelines keep currency symbols out of the price value and use a full stop for decimals. Thus the numeric value and currency code remain separate fields even when the page displays a formatted price.

How is availability represented?

Schema.org defines ItemAvailability as a list of possible product availability options. The availability property takes a value from that list.

Google's supported availability values include https://schema.org/InStock for an item in stock and https://schema.org/OutOfStock for an item currently out of stock. https://schema.org/PreOrder identifies an item available for pre-order; https://schema.org/BackOrder identifies an item on back order. Google also accepts the short names without the URL prefix and instructs merchants to specify only one value.

These values describe different purchasing states. InStoreOnly, for example, means the item is available for purchase only in store. The selected value needs to describe the offer on the page.

How can a website check its markup?

Google's structured data policies require current information and visible supporting content. A page's displayed price and stock status therefore need to agree with its offer markup. The same policies identify the Rich Results Test and URL Inspection tool as checks for technical errors.

The merchant listing guide also defines priceValidUntil as the date and time after which a price is unavailable. A past value can prevent a listing from displaying. This field needs review when a time-limited price changes, alongside the active price itself.

FAQ

Is availability required for Google's merchant listings?

Google lists availability among the recommended Offer properties in its merchant listing documentation. The active price and corresponding currency are required.

Can I use AggregateOffer for a merchant listing?

The same Google documentation requires Offer for this experience. Its product snippets also accept AggregateOffer.

Sources

  1. Google Search Central, "Merchant listing (Product, Offer) structured data", updated 8 September 2026
  2. Schema.org, "Offer", accessed 17 October 2026
  3. Schema.org, "ItemAvailability", accessed 17 October 2026
  4. Google Search Central, "General structured data guidelines", updated 10 July 2026

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark