Understanding Warning priceValidUntil In The Structured Data & Rich Results Test Tool

Fix Warning priceValidUntil In The Structured Data & Rich Results Test Tool

When working with structured data on a website, particularly with e-commerce product data, there are several properties you might consider including to provide richer information to search engines. One such property is priceValidUntil.

What Is priceValidUntil?

priceValidUntil is a property included in structured data to indicate the date until the price is valid. This is particularly useful for sales, discounts, or other temporary price reductions. By specifying this date, you inform search engines that the price will change after this date, which will help deliver accurate and timely information to users.
For instance, if a product is on sale until December 31, 2023, then the priceValidUntil property can be set to “2023-12-31”. This means that after this date, the displayed price is no longer guaranteed to be accurate.


When seeing warnings (not errors) in Google’s Rich Results Test tool, it is there to notify you of optional data. This means there is no requirement, and it also means there will be no SEO penalty. It also means only filling in the attribute value if it is appropriate.

Common Fixes

The most common fix is to add an end date. You can, for example, add a date that expires in a year. Make sure you do this dynamically to update the date daily. Do not add values manually; you will forget about it, and then, at one point, Google will think the price has expired.

When Should I Use It?

You can use the priceValidUntil attribute if you have a price drop and you know when this price drop ends. However, you can set the expiry date to next year and have it dynamically updated daily.

How to Use priceValidUntil in Structured Data?

If you’re marking up your data using JSON-LD (a popular format for structured data), here’s an example (highlighted in bold) of how you might incorporate the priceValidUntil property:

  "@context": "http://schema.org/",
  "@type": "Product",
  "name": "MY TITLE",
  "url": "https://www.example.com/products/my-title.html",
  "sku": "MY SKU",
  "gtin13": 123456789,
  "productID": "517672730687",
  "brand": {
    "@type": "Thing",
    "name": "MY BRAND NAME"
  "description": "MY DESCRIPTION",
  "image": "https://cdn.example.com/s/files/1/1520/5044/products/myimage.jpg?v=1571461056",
        "@type" : "Offer",
        "priceCurrency": "GBP",
        "price": "16.10",
	"priceValidUntil": "2023-12-31",
        "itemCondition" : "http://schema.org/NewCondition",
        "availability" : "http://schema.org/OutOfStock",
        "url" : "https://www.example.com/products/my-title.html?variant=6848129007679",
		"image": "https://cdn.example.com/s/files/1/1520/5044/products/myimage.jpg?v=1571461056",
		"name" : "MY TITLE",
		"gtin13": 123456789,
		"sku": "811533B979S",
		"description" : "MY DESCRIPTION"

In the example above, the product’s price of $16.10 is valid until December 31, 2023.

The value structure is year, month, day seperated by a hyphen.

Testing Your Data

After adding or updating structured data to the product landing page, it’s a good practice to validate the structured data to ensure it’s correct and can be interpreted by search engines. You can perform your tests using Google’s Rich Results Testing Tool.

Need Help?
Do you have a question or need specialist support? Get in touch!

Notify of
Oldest Most Voted
Inline Feedbacks
View all comments
3 months ago

There is a comma missing after “priceValidUntil”: “2023-12-31”

1 year ago

updated every day ?

2 years ago

How do you “have it dynamically updated every day.”?

Would love your thoughts, please comment.x