Job listings that vanish
and come back
Published ghost-job figures come from surveys — people asked whether they
think listings are fake. This is not that. We track 2.40 million posting identities
over time by an identity that survives a URL change, so when a role is pulled and re-listed we
record it as the same role returning. These are the returns we actually watched happen.
782,600 live postings · observed 2026-07-08 to 2026-09-23 (77 days)
19.1%came back at least once
149,487 of the live postings we track have disappeared from the index and
returned at least once during the window.▲ +1.9 pts vs 5 days ago
6.2%came back twice or more
48,287 have done it more than once.▲ +1.7 pts vs 5 days ago
Read these as observations, not as a ghost-job rate. A recorded return means
the listing left our index and reappeared. It does not prove the vacancy was never real: a role
can be re-opened, a board can drop and re-add a feed, and agencies re-list by design. What it
does mean is that a posting behaved in a way a filled role cannot — and we watched it, rather
than asking anyone what they thought.
Two things we deliberately do not claim. This is not a share of all job listings
everywhere; it is a share of the postings currently live in our index. And it is not a rate
over time — a 77-day window cannot produce one, and every posting has been observed for a
different portion of it, so the honest form is a labelled snapshot.
Method
- Source
- CareerRiver posting_ledger — posting identities tracked over time by a URL-independent token (normalised company + title + city)
- Window
- 2026-07-08 to 2026-09-23 (77 days). Anything that happened before we started watching is invisible to
us, so these counts are what was observed and nothing more.
- Population
- 782,600 posting identities currently live in the index. A posting that
has closed is not counted.
- A return
- The identity stopped appearing in the index and later appeared again.
Counted from the ledger, not inferred from the posting's age.
What we are not publishing, and why
- A "likely ghost" share. The obvious definition mixes a return count with a
listing-age threshold, and our index is only 77 days old — the age half could never
fire, and it would start firing later purely because the index aged. A number that moves
because we got older is not a finding.
- An "any signal" share. It was dominated by listing age, and a third of our
live records were first seen on our opening day — for those, age measures when we started
looking, not when the job was posted.
- Breakdowns by industry or location. Different groups entered the index at
different times and have been watched for different lengths, so a ranking between them would
partly be a ranking of when we started seeing them. The location field also carries several
incompatible formats.
All of it is still computed and sits in the JSON below. It is withheld from the
page because we cannot yet separate employer behaviour from our own coverage.