Stale schema date: expired event, job, or offer
An expired Event.startDate, JobPosting.validThrough, or Offer.priceValidUntil drops your listing from rich results and Google Jobs. Find stale structured-data dates free and refresh or remove them.
What it means
A date field in this page's JSON-LD — Event.startDate, JobPosting.validThrough, or Offer.priceValidUntil — is set to a date before the crawl date. The structured data describes something that has already ended or expired, which conflicts with Google's requirement that structured data reflect accurate, current information.
Why it matters
Google's policies require markup to represent accurate, up-to-date information, and it responds to each date type differently. A past Event.startDate loses the event card in search — users want upcoming events — and signals poor freshness. A JobPosting.validThrough that has passed removes the listing from Google Jobs entirely, even if the job is still open. An expired Offer.priceValidUntil can cause Merchant Center to flag the product's pricing as invalid, affecting shopping results. The most common cause is a CMS or e-commerce platform that generates dates from a database but has no expiry or cleanup logic, so events, jobs, and offers accumulate as stale markup that tells Google the site's structured data cannot be trusted.
How to fix it
- Audit pages using Event, JobPosting, or Offer schema — search your JSON-LD templates for
startDate,validThrough, andpriceValidUntil. - For past events, update
startDateif the event recurs, or remove the Event markup from concluded pages (and consider redirect ornoindexfor pages with no ongoing value). - For closed job postings, remove the JobPosting block or remove the
validThroughdate. - For expired offers, update
priceValidUntilif the offer continues, or remove theOfferblock. - Add an automated pipeline check that flags structured-data dates older than today. Use ISO 8601 with timezone offset.
When it's not a problem
A page archiving a past event, job, or offer for informational purposes does not need that structured data at all — removing the block is the correct action, not updating the date. The rule applies only when the markup is meant to generate a rich result for active, upcoming content. The check is crawl-time-relative, so a date valid last week may be flagged after a new crawl.
How common is it?
145 audited sites in our corpus currently show this issue. The breakdowns below show which platforms, gatekeepers, verticals and countries are most exposed.
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.