Structured dataIntermediate

Offer Schema

Offer schema describes the terms of a sale: price, currency, availability and validity. It nests inside Product, SoftwareApplication and Event markup.

Also called: Offer, AggregateOffer, Offers markup

Offer is the Schema.org type for an offer to sell or provide a product or service. It is rarely used alone; it sits in the offers property of a Product, SoftwareApplication, Event or Course. AggregateOffer summarizes several offers with a lowPrice and highPrice. Google relies on Offer details for price and availability in product, app and event features.

Core properties

  • price: a number, without currency symbols; use 0 for free
  • priceCurrency: a three-letter ISO 4217 code such as USD or EUR
  • availability: a Schema.org value such as InStock or PreOrder
  • url: the page where the offer can be taken up
  • priceValidUntil: the date after which the price may change
  • priceSpecification: for detail such as billing period or tax

Subscriptions and plans

SaaS pricing is usually recurring. A UnitPriceSpecification with a billingDuration or referenceQuantity can describe a monthly or annual price. Google's documentation does not describe special handling for subscription pricing in software app results, so keep the main price field simple and accurate and add detail in priceSpecification.

"offers": {
  "@type": "Offer",
  "price": "19.00",
  "priceCurrency": "USD",
  "priceSpecification": {
    "@type": "UnitPriceSpecification",
    "price": "19.00",
    "priceCurrency": "USD",
    "referenceQuantity": { "@type": "QuantitativeValue",
      "value": "1", "unitCode": "MON" }
  }
}

AggregateOffer for tiered pricing

When a product has several plans, AggregateOffer with lowPrice, highPrice and offerCount summarizes the range. It is accurate for a pricing page showing multiple tiers. Use individual Offers when you want to describe each plan precisely.

Example

Event registration

A SaaS company, Wrenhollow, runs a paid virtual workshop. Its Event markup includes an Offer with price 99, currency USD, availability InStock, validFrom the registration open date and a url to the signup page. When seats sell out, the availability changes to SoldOut.

Common mistakes

Putting symbols in price

"$19" or "19 USD" in price is invalid. Use a plain number and set the currency separately.

Stale availability

Showing InStock for sold-out or retired plans misleads users and can break merchant guidelines.

Questions

It is valid Schema.org, but Google uses offers inside a parent type such as Product, SoftwareApplication or Event.

Know the terms. Now win the searches.

We find the searches your buyers make, then build, publish and improve the pages that win them.