A ghost job is a live listing for a position that isn't actually being actively filled — the role may already have an internal candidate, be on indefinite hold, or exist purely to build a resume pipeline or signal company growth. You can usually spot one by checking how long it's been posted, how often it reappears, and whether it shows the same urgency signals as a real, freshly opened role.
You've done this before. Tailor the resume. Write the cover letter nobody reads. Hit submit. Then nothing. Not a rejection, not an auto-reply beyond the confirmation, just silence that stretches for weeks. You assume you got beat out. Maybe. Or maybe there was never a real seat to fill.
That's the part that should make you angry, not just discouraged. A rejection means someone competed and lost. A ghost job means the competition was fake from the start, and every hour spent customizing a resume for it was time stolen from a role that could have actually hired you.
What exactly is a ghost job?
A ghost job is any posting that stays live without an active, funded intent to hire someone soon. It's not always malicious. Sometimes it's a manager who got budget approval, posted the role, then lost the headcount in a reorg but never pulled the listing. Sometimes it's a recruiter keeping a "pipeline" req open year-round for a role that turns over constantly. And sometimes, yes, it's a company posting fake openings to look like it's growing, to mine resumes for a future opening, or to make current employees feel replaceable.
The intent varies. The effect on you doesn't: you spend real hours on a role with zero chance of ending in an offer.
Why ghost jobs exist in the first place
Job postings are cheap to create and expensive to take down. That asymmetry is the whole story. Posting on a major job board costs a company almost nothing per listing, especially on their own careers page. Removing a stale posting requires someone to notice it, decide it's stale, and bother updating the ATS. In most companies, nobody owns that job.
Add three more incentives and you get the ghost job economy:
- Talent pipelining. Recruiters keep evergreen postings up for roles like "Software Engineer" or "Account Executive" so they always have a stack of resumes ready when someone quits.
- Perception management. A wall of open roles on a careers page signals momentum to investors, customers, and competitors, whether or not those roles are truly open.
- Internal leverage. Some postings exist so a hiring manager can tell an internal candidate "we're required to post externally first," while the job was already decided.
None of this is new. What's new is scale: with online applications reducing the friction of posting a job to almost zero, more roles sit open longer without anyone tending them.
How to spot a ghost job listing before you apply
You can't read a company's internal hiring intentions. But you can read the behavior of the listing itself, and behavior doesn't lie the way a job description can. Here's what to check, in the order that gives you the fastest signal.
- Check the original post date, not the "refreshed" date. Most job boards let employers bump a listing back to the top without changing the substance. If the description reads identically to a version you saw weeks or months ago, treat the "posted today" tag with suspicion.
- Look for repost patterns on the same title. Search the company's careers page or LinkedIn jobs tab for the exact same title appearing, disappearing, and reappearing on a cycle. A role that gets reposted every few weeks with no change in requirements is very often a pipeline req, not an active search.
- Compare posting age against normal fill timelines for the role. A junior support role sitting open for months with no seniority bump or scope change is a flag. Senior or highly specialized roles can legitimately stay open longer, so weigh this against the level of the job.
- Read the requisition number, if visible. Some ATS platforms expose a req ID in the URL or job code. If you can find the same req ID attached to a listing from a much earlier date, the "new" posting is really an old one recycled.
- Search for the exact job title plus the company name in quotes. If the same posting shows up verbatim across multiple job boards over a long stretch, cross-post volume alone tells you the company is casting a wide, low-effort net rather than actively screening.
- Check whether the company has any other hiring activity right now. A single open role at a company that's otherwise in a hiring freeze, layoff cycle, or leadership shakeup is worth extra scrutiny before you invest an hour.
- Watch the response window. Real, urgent openings tend to move fast on early applicants — interviews get scheduled within days, not months. If a role has been open a long time and you know from other applicants (forums, LinkedIn comments, Reddit threads) that nobody has heard back in weeks, the req may already be dead.
- Notice vague or generic scope. Ghost jobs are frequently written broadly ("various responsibilities," "duties as assigned," wide salary bands) because nobody is actually scoping a real seat. A tightly written, specific job description usually means a manager who knows exactly who they need.
In short: a fresh, real opening behaves differently than a stale one. It gets posted once, moves fast, and disappears when filled. A ghost job lingers, recycles, and never quite closes.
Why repost timing is the single strongest signal
Here's the principle underneath all eight checks above: urgency is honest. A company that genuinely needs someone in a seat behaves like it. The posting goes up once, applications get reviewed quickly because the hiring manager is checking daily, and the listing comes down the moment the seat is filled. A company that isn't in a hurry doesn't behave that way, because there's no pressure forcing anyone to move. That's why the repost cycle matters more than almost anything else on the page. If you're only looking at a job the way it appears today, you're missing the pattern. You need to see the job across time, not as a single snapshot. This is also exactly why timing works for you on the flip side: postings that are genuinely fresh, with real hiring urgency behind them, are the ones worth moving on within minutes, not days. Our piece on why top candidates apply within minutes of a job going live covers the other half of this coin, real jobs move fast in both directions.
Plain version: if a listing doesn't move quickly, it probably isn't moving at all.
Ghost job vs real job: side-by-side signals
| Signal | Likely ghost job | Likely real, active opening |
|---|---|---|
| Posting age | Weeks or months, repeatedly "refreshed" | Days old, single clean posting |
| Repost pattern | Same title cycles on and off over time | Posted once, removed once filled |
| Job description | Vague scope, wide salary band, generic duties | Specific requirements, named team, tight scope |
| Company context | Freeze, layoffs, or no other roles open | Multiple roles actively opening and closing |
| Applicant feedback | Long silence reported across multiple applicants | Interviews scheduled within days of applying |
| Cross-posting | Identical listing on many boards for a long stretch | Posted on one or two boards, timestamps align |
What to do when you suspect a listing is a ghost job
Suspicion isn't proof, and some roles that look stale are legitimately slow-moving for boring reasons like budget approval cycles or a hiring manager on leave. So don't blacklist a company off one flag. Instead, triage.
If a posting shows two or more of the warning signs above, spend the minimum effort required to apply and move on, rather than investing in a custom cover letter or a tailored resume rewrite. If it shows none of the warning signs, that's exactly the kind of listing worth full effort and speed, because a real, fresh opening rewards the applicant who shows up first, not the one who agonizes over phrasing for two days. That triage only works if you can actually tell fresh from stale at the moment you see it, which is the real bottleneck for most job seekers. Job boards don't sort by "how honest is this posting," they sort by relevance or recency that can be gamed with a repost. You end up manually cross-checking dates and req numbers across a dozen tabs, which defeats the purpose of moving fast in the first place.
How fresh-job detection cuts through the ghost job problem
This is the actual fix, not a workaround: get to postings at the moment they're genuinely created, before the repost cycle even has a chance to muddy the picture. If you're seeing a job within minutes of it going live, on the first post, the ghost-vs-real question mostly resolves itself. A brand-new requisition hasn't had time to become a zombie yet. GiraffyReach's detection layer watches for jobs the instant they're published rather than surfacing them after a board has indexed and re-indexed them for weeks, which is exactly the window where ghost listings hide. Pair that with the timing checklist above and you stop wasting cycles on reqs that were dead on arrival. If you want the mechanics of how real-time detection works, our guide on getting job alerts within minutes of posting walks through the setup.
The same logic extends past staffing-agency listings into the corp-to-corp market, where stale reqs and recycled rate sheets are their own version of the ghost job problem. If you work C2C, it's worth understanding what "submitted by" actually means on a C2C posting before you assume a listing is fresh just because a recruiter reshared it.
A quick gut-check before you apply
Next time a listing catches your eye, run this in under a minute: how old is it really, has the exact title cycled before, does the company have other active hiring, and is the scope specific enough that a real manager clearly wrote it. Four questions, thirty seconds, and you'll filter out most of the noise before it costs you an evening.
Speed and skepticism aren't opposites here, they're the same skill. The faster you can tell a real posting from a recycled one, the faster you can put your effort where it actually has a chance of landing. That's the whole game: stop competing for jobs that don't exist, and show up first for the ones that do. Visit GiraffyReach to see how real-time detection and auto-apply put you in front of genuinely fresh listings before the repost cycle even starts.
Be first, or be forgotten
Ghost jobs thrive on a slow, static job search, where the same stale listing gets scrolled past a hundred times and eventually applied to out of desperation. The fix isn't more effort on every posting. It's less effort on the dead ones and full speed on the live ones. Learn the timing signals, trust the repost pattern over the "posted today" badge, and put your energy where a human is actually waiting to read your resume.