Hannah Hansen

I checked 32,000 job postings: how many are ghosts?

One snapshot of 32,263 open postings on 324 public job boards. The median posting has been up 51 days, and 6.1% have been open for more than a year.

Hannah · · 4 min read

"Ghost jobs" are postings for roles a company is not actively trying to fill: evergreen talent pools, roles kept up to look busy, or listings nobody took down. Job seekers can't see inside a company, but they can see the postings. So we looked at what one snapshot of public job boards can and cannot tell you.

We collected every open posting on 324 public Greenhouse, Lever and Ashby job boards on October 11, 2026: 32,263 postings from 324 employers, with 0 board failures.

How long open postings have been upOpen postings by days since first published, one snapshot of 324 public job boards
  • 90 days or less
  • Over 90 days
Column chart02,5005,0007,50010,000Postings0–7 days: 2,9182,9180–7 days8–30: 8,4668,4668–3031–60: 6,9286,92831–6061–90: 3,9073,90761–9091–180: 5,2915,29191–180181–365: 2,7832,783181–365Over a year: 1,9681,968Over a year
Column chart02,5005,0007,50010,000Postings0–7 days: 2,9182,9180–7…8–30: 8,4668,4668–3031–60: 6,9286,92831–6061–90: 3,9073,90761–9091–180: 5,2915,29191–1…181–365: 2,7832,783181–…Over a year: 1,9681,968Over…

Source: Greenhouse, Lever and Ashby public job-board APIs, 2026-10-11 · Data: jobs.json · Code: ghost-jobs

Show the data (7 rows)
AgePostings
0–7 days2,918
8–308,466
31–606,928
61–903,907
91–1805,291
181–3652,783
Over a year1,968

Signal 1: age

Every posting carries the date it was first published. The median open posting was 51 days old. 31.1% were older than 90 days, 14.7% older than 180 days and 6.1% older than a year.

The oldest still-open posting, a Software Engineer - Motion Planning role at Zoox, was first published on February 8, 2016, 3,897 days before our snapshot. Several of the other oldest postings say what they are in the title: "Your Chance to Join Our Talent Community!", "Don’t see the perfect fit?".

Long-open postings concentrate at a few employers. Among companies with at least 50 dated postings, Gopuff had 90.5% of its 796 postings open for more than 180 days. At the other end, Lambda had none.

Where long-open postings concentrateShare of each company’s dated open postings that are over 180 days old (companies with 50+ postings)
Horizontal bar chartGopuff: 90.5% of 796 postings; median age 1192 daysGopuff90.5%Lyra Health: 54.0% of 561 postings; median age 190 daysLyra Heal…54.0%Ro: 45.5% of 55 postings; median age 152 daysRo45.5%Fin: 41.5% of 106 postings; median age 162 daysFin41.5%Scale AI: 37.4% of 182 postings; median age 130 daysScale AI37.4%Databricks: 33.5% of 892 postings; median age 101 daysDatabricks33.5%Wrike: 32.8% of 58 postings; median age 102 daysWrike32.8%Waabi: 32.0% of 97 postings; median age 54 daysWaabi32.0%Verkada: 31.0% of 306 postings; median age 92 daysVerkada31.0%Figma: 30.7% of 150 postings; median age 81 daysFigma30.7%
Horizontal bar chartGopuff: 90.5% of 796 postings; median age 1192 daysGopuff90.5%Lyra Health: 54.0% of 561 postings; median age 190 daysLyra Heal…54.0%Ro: 45.5% of 55 postings; median age 152 daysRo45.5%Fin: 41.5% of 106 postings; median age 162 daysFin41.5%Scale AI: 37.4% of 182 postings; median age 130 daysScale AI37.4%Databricks: 33.5% of 892 postings; median age 101 daysDatabricks33.5%Wrike: 32.8% of 58 postings; median age 102 daysWrike32.8%Waabi: 32.0% of 97 postings; median age 54 daysWaabi32.0%Verkada: 31.0% of 306 postings; median age 92 daysVerkada31.0%Figma: 30.7% of 150 postings; median age 81 daysFigma30.7%

Source: Greenhouse, Lever and Ashby public job-board APIs · Data: jobs.json · Code: ghost-jobs

Show the data (10 rows)
CompanyDated postingsShare over 180 daysMedian age (days)
Gopuff79690.5%1192
Lyra Health56154.0%190
Ro5545.5%152
Fin10641.5%162
Scale AI18237.4%130
Databricks89233.5%101
Wrike5832.8%102
Waabi9732.0%54
Verkada30631.0%92
Figma15030.7%81

A high share is not an accusation. Retail, delivery and clinical employers often hire continuously for the same roles and keep one posting up for years. That is a real job, and age alone can't tell the two apart.

Age also depends on the job board software. Lever postings had a median age of 152 days against 46 on Greenhouse, partly because of which date each system exposes. Compare postings within one system.

Signals 2–4: wording, duplicates and missing pay

Single-snapshot ghost signalsShare of open postings showing each signal (a posting can show several)
Horizontal bar chartOpen more than 180 days: 14.7%Open more than 180 days14.7%No pay in the public feed where a pay law applies: 5.8%No pay in the public feed wher…5.8%Exact duplicate open at the same time: 1.1%Exact duplicate open at the sa…1.1%Says it is a pipeline / talent-community post: 0.3%Says it is a pipeline / talent…0.3%
Horizontal bar chartOpen more than 180 days: 14.7%Open more than 18…14.7%No pay in the public feed where a pay law applies: 5.8%No pay in the pub…5.8%Exact duplicate open at the same time: 1.1%Exact duplicate o…1.1%Says it is a pipeline / talent-community post: 0.3%Says it is a pipe…0.3%

Source: Greenhouse, Lever and Ashby public job-board APIs · Data: jobs.json · Code: ghost-jobs

Show the data (4 rows)
SignalShare of postings
Open more than 180 days14.7%
No pay in the public feed where a pay law applies5.8%
Exact duplicate open at the same time1.1%
Says it is a pipeline / talent-community post0.3%
  • Pipeline wording. 106 postings (0.3%) describe themselves as talent-community, general-application or "not a current opening" posts. Our first, looser phrase list flagged 4.5% of postings, but reading a sample showed it was mostly catching boilerplate footers, so we tightened it. The smaller number is the honest one.
  • Duplicates. 370 postings (1.1%) were exact duplicates of another open posting on the same board: same title, location and description under different IDs. That can mean several hires for one role.
  • No pay in the feed where a pay law applies. In states and cities with pay-transparency laws, 5.8% of postings had no USD pay figure in the public feed. Some employers show the range only on their own careers site (we confirmed two and excluded them as unknown), so this measures the feed, not compliance.

What one snapshot can't show yet

The two strongest ghost-job signals need history:

  1. Reposts: a posting that closes and reappears under a new ID with the same content, resetting its age.
  2. Silent edits: a description that changes while the posting ID and date stay the same.

Both need at least two snapshots, and weeks of them to mean anything. The collector now runs daily and appends each snapshot to the project’s data branch. The repost and edit signals are still accumulating; we will report them in a follow-up post once there is enough history to say something real. Until then, the combined ghost score in the app stays low for most postings (median 5.1 out of 100), because two of its signals contribute almost nothing on day one.

Methods

  • Collection. Public job-board APIs for Greenhouse, Lever and Ashby, one snapshot from 2026-10-11T01:42:06Z to 2026-10-11T01:45:23Z. Boards were found by probing 661 candidate company slugs on all three systems and keeping those with at least one open posting.
  • Age = snapshot time minus Greenhouse first_published, Ashby publishedAt or Lever createdAt. Employers can republish to reset this date, so ages are lower bounds. 32,261 postings had a date.
  • Pipeline wording is a regex over titles and posting-specific description phrases; the phrase list is in the Ghost Jobs repository (scripts/signals.py).
  • Duplicates = same board, normalized title, location and description hash under different posting IDs.
  • Pay-law coverage = displayed location in a state or district with a posting pay law in force on the snapshot date, or remote across the US. Employer-size thresholds were not checked.

Limits

The board list is curated and mostly US tech companies, so this is not a sample of all job postings. Every signal here has innocent explanations. A posting being old, duplicated or vague is a reason to ask the recruiter questions before investing hours in an application. None of it proves a job is fake.

Data and code

Every number and chart in this post is generated from these files:

The projects that collected the data:

  • Ghost Jobs (source not published yet)
  • Pay Range Radar (source not published yet)