If you’re already using schema markup for your e-commerce website, you likely know how powerful structured data can be for improving visibility in Google Search.
But do you know you can also highlight both the regular and discounted prices of a single product using schema?
In this article, let’s learn how to mark up sale pricing so your product listings can stand out with strikethrough pricing and promotional details in search results.
How to mark up sale pricing
To show both regular and sale prices in schema markup, use the Offer type with price for the current (discounted) price and priceSpecification with priceType: StrikethroughPrice for the original price.
Here’s a simple JSON-LD example for a single product on sale:
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Noise-Cancelling Headphones",
"image": "https://example.com/images/headphones.jpg",
"description": "Wireless noise-cancelling headphones with 40-hour battery life.",
"sku": "12345",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/headphones",
"priceCurrency": "USD",
"price": 79.99,
"priceValidUntil": "2025-07-15",
"availability": "https://schema.org/InStock",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"priceType": "https://schema.org/StrikethroughPrice",
"price": 99.99,
"priceCurrency": "USD"
}
}
}
</script>
This schema markup highlights the sale price as $79.99 while also displaying the original $99.99 price with a strikethrough, making the discount clear to users. It includes a priceValidUntil field to indicate when the promotion ends and ensures that the structured data reflects exactly what’s shown on the product page, helping maintain consistency and avoid potential issues with Google.
Alternate Format: Using Multiple PriceSpecifications
If you need to show both the current (discounted) price and the original (strikethrough) price in a more detailed and structured way, you can use multiple UnitPriceSpecification objects within a single offer.
This approach allows you to clearly define different price types—such as sale price and original price—while supporting additional details like units, quantities, or pricing conditions.
It gives you greater flexibility and helps search engines better understand and display your pricing, especially for promotional offers.
For example, if we’re selling 6 bottles of beer with a 10% discount, we can do this:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Artisan Craft Beer",
"image": "https://www.example.com/images/craft-beer.jpg",
"description": "Premium Estonian beer sold in 6 bottles pack.",
"brand": {
"@type": "Brand",
"name": "BrewCo"
},
"offers": {
"@type": "Offer",
"url": "https://www.example.com/craft_beer",
"availability": "https://schema.org/InStock",
"priceSpecification": [
{
"@type": "UnitPriceSpecification",
"price": 81.00,
"priceCurrency": "EUR",
"referenceQuantity": {
"@type": "QuantitativeValue",
"value": 4.5,
"unitCode": "LTR",
"valueReference": {
"@type": "QuantitativeValue",
"value": 750,
"unitCode": "MLT"
}
}
},
{
"@type": "UnitPriceSpecification",
"price": 90.00,
"priceCurrency": "EUR",
"priceType": "https://schema.org/StrikethroughPrice",
"referenceQuantity": {
"@type": "QuantitativeValue",
"value": 4.5,
"unitCode": "LTR",
"valueReference": {
"@type": "QuantitativeValue",
"value": 750,
"unitCode": "MLT"
}
}
}
]
}
}
Best Practices when using sale price
- Ensure the discounted price appears as the active price.
- Use priceType: StrikethroughPrice only for the original (non-sale) price.
- Keep values consistent with your page content to avoid structured data errors.
- Use priceValidUntil to signal when the sale ends—Google may use this to manage display eligibility.
- Validate your markup using Rich Results Test and monitor your structured data in Google Search Console.
Final Thoughts
Adding schema markup for sale pricing is a quick win for any ecommerce website. It not only helps Google understand your offers better but also makes your listings more attractive to potential buyers.
If you’re running a sale, don’t just update your prices—mark them up properly with structured data and let search engines do the heavy lifting to promote your deals.