How can markup distinguish a sale price from a strikethrough price?

The Citead team, updated

In short. Use priceType with StrikethroughPrice on the original amount and leave the current sale amount untyped.

Definition: Put the current sale amount in the active price position and put the original amount in a second UnitPriceSpecification with priceType set to https://schema.org/StrikethroughPrice. The value identifies the original advertised price that may appear with a strikethrough.

Key facts

  • Google Search Central describes active, strikethrough, and member prices as three price kinds in an Offer.
  • An active price has neither priceType nor validForMemberTier in Google's documented model.
  • A strikethrough price uses priceType with the value StrikethroughPrice; Google also allows ListPrice during a transition period.
  • A price specification containing both priceType and validForMemberTier is ignored by Google.
  • Schema.org defines priceType as a property for identifying the type of each price when an offer specifies multiple prices.

How does priceType distinguish the two amounts?

Google's merchant listing structured data documentation says that the current active price becomes a sale price when a second price carries the original amount and has priceType equal to https://schema.org/StrikethroughPrice. The active price itself has no priceType.

In the simplest JSON-LD form, the active amount remains on Offer.price. The second amount is nested under Offer.priceSpecification as a UnitPriceSpecification and carries the enumeration value:

{
  "@type": "Offer",
  "price": 10.00,
  "priceCurrency": "GBP",
  "priceSpecification": {
    "@type": "UnitPriceSpecification",
    "priceType": "https://schema.org/StrikethroughPrice",
    "price": 15.00,
    "priceCurrency": "GBP"
  }
}

Here, 10.00 is the active amount and 15.00 is the original amount identified by priceType. The documentation also shows an alternative with two UnitPriceSpecification objects in the priceSpecification array: the untyped object holds the active amount and the object with StrikethroughPrice holds the original amount.

What does Schema.org mean by these terms?

Schema.org's UnitPriceSpecification definition describes the type as the price asked for a given offer by the relevant organization or person. Its priceType property accepts PriceTypeEnumeration or Text and identifies each price type when multiple prices belong to one offer. The definition gives list price, temporary sale price, and manufacturer suggested retail price as examples, and permits a free-form text string for a type that is not already in the enumeration.

The StrikethroughPrice enumeration member represents the strikethrough price, described as the previous advertised price of an offered product. It is a member of PriceTypeEnumeration, so the full Schema.org URL is the machine-readable value shown in Google's example.

Where should the active and original prices go?

Google places price specifications under the Offer object. The active price can also be encoded directly with Offer.price. When both offers.price and offers.priceSpecification encode an active price, Google's documentation says that the offers.price value is used and the specification is ignored.

Keep the price roles separate in the data. The current amount has no priceType; the original advertised amount has priceType set to https://schema.org/StrikethroughPrice. A price specification with validForMemberTier represents a member price and cannot also carry priceType in Google's model.

FAQ

Should the sale amount receive priceType?

No. Put the current amount in Offer.price or an untyped UnitPriceSpecification. Google says the active price has neither priceType nor validForMemberTier.

Can ListPrice replace StrikethroughPrice?

Google allows ListPrice for a transition period and identifies StrikethroughPrice as the value for a strikethrough price. The downloaded documentation gives no duration for that transition period.

Is an array of price specifications required?

No. Google documents both one active Offer.price plus one strikethrough specification and an array containing two UnitPriceSpecification objects.

Sources

  1. Google Search Central, "Merchant listing structured data", 8 September 2026
  2. Schema.org, "UnitPriceSpecification", 16 September 2026
  3. Schema.org, "StrikethroughPrice", 16 September 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