Do your prices tell AI agents how long they should trust the quoted value?
Confirms each offer states an expiration date so AI shopping tools know how fresh the price is.
What this signal tests
We check whether each Offer in your structured data declares a priceValidUntil date in ISO format. This date tells AI shopping agents the latest moment they should consider the quoted price reliable. Without it, agents have to guess, and most will assume a short freshness window or refuse to quote the price at all.
Why it matters for your visibility in AI
AI shopping agents are cautious about quoting stale prices because misquoting damages user trust in the agent. When your offer carries a priceValidUntil date, the agent knows exactly how long it can safely cache and quote that price. Without it, the agent often falls back to either re-fetching constantly (wasteful and slow) or skipping your product (silent loss of visibility). This is a lower-weight signal than price or availability, but it is a free win. The fix is one extra field in your Offer markup, and the upside is more reliable inclusion in AI shopping recommendations. The downside of skipping it is invisible: you simply appear in fewer comparisons than competitors who include it.
Pass criteria at a glance
| Criterion | Passes when |
|---|---|
| priceValidUntil present and parseable. |
How we test it
We look at each Offer block in your structured data and check for a priceValidUntil field. We confirm the value parses as a valid ISO 8601 date and that the date is in the future relative to when we crawled the page. Past or missing dates fail the signal because they do not provide useful caching guidance.
Show technical detection method
priceValidUntil parses as ISO 8601 date in the future.
If your site fails: how to fix it
- Decide on a default validity window for prices that do not naturally expire. A common choice is thirty or sixty days from the page render date, refreshed automatically.
- Update your product template to emit priceValidUntil as an ISO date (YYYY-MM-DD format is fine; full datetime is not required).
- For sale or promotional prices, set priceValidUntil to the actual end date of the promotion, not the default window. This is the most valuable case because the date is genuine.
- Make sure the date refreshes when the page is re-rendered. A stale priceValidUntil from a year ago is worse than no field at all because it tells AI tools the price is expired.
- Validate one URL in Google's Rich Results Test under the Product or Merchant Listing test type.
Quick facts
| Maturity | ESTABLISHED |
|---|---|
| Weight | low |
| Category | Structured Data |
Primary sources
Related signals
Frequently asked questions
What if my prices never expire?
Most prices technically can change at any time, even on evergreen products. Set a rolling window such as thirty or sixty days from page render. AI tools treat this as a freshness hint, not a hard deadline; you are not committing to honour the price after the date, just signalling how long it should be trusted.
Is priceValidUntil only for sale prices?
No. It is most useful for sale prices because the deadline is real and meaningful, but it is valuable on regular prices too. The signal helps AI agents understand caching, not just promotions. Emitting it on every offer is a cleaner pattern than only emitting it during sales.
What format should the date be in?
ISO 8601, either as a bare date (YYYY-MM-DD) or as a full datetime with timezone. The bare date is easiest and is widely supported. Do not use locale-formatted dates such as Dec 31 2026; AI parsers will reject them and the signal will fail.
Run your own scan
Run a free scan and see how your site grades across all 155 AI-readiness signals.