You apply to forty roles in a month and hear nothing. The natural conclusion is that something is wrong with your CV. Sometimes that is true. Often something else is going on: a meaningful share of those forty postings were never fillable in the first place.
Ghost jobs are not primarily a conspiracy about companies faking hiring demand, although that happens. Most of them are a data quality problem, produced by how aggregated job boards are built. Understanding the taxonomy tells you which listings to skip and, more usefully, which source to search instead.
The five kinds of ghost job
They are not the same thing and they do not deserve the same response.
| Type | What it is | How common | Worth applying |
|---|---|---|---|
| Filled but still listed | Role closed, listing not withdrawn | Very common | No |
| Expired and republished | Aggregator keeps syncing a dead feed | Very common | No |
| Duplicate of a real role | One job, three routes, three listings | Very common | Once, at the source |
| Evergreen requisition | Permanently open to collect CVs | Common in high-turnover roles | Rarely |
| Agency speculative post | No committed client vacancy | Common | No |
Only one row has a real, currently fillable opening behind it, and even there the right move is to apply once, on the employer's own site, rather than three times through three intermediaries.
Why aggregators produce them structurally
This is not incompetence. It falls out of the architecture.
An aggregator does not hold the job. It holds a copy of a job it ingested from somewhere else, and the somewhere else might itself be a copy. A role published to a company's Workday instance gets syndicated to a partner board, picked up by two staffing agencies, and posted by a recruiter to their own feed. The aggregator ingests all four and now holds four records that are textually different enough that deduplication fails.
Withdrawal is the harder problem. When the employer closes the requisition, the closure has to propagate back through every one of those hops before the listing disappears. Some feeds simply never send a withdrawal signal. Others send it and the aggregator processes it late. So listings outlive their roles by default, and the default is what you are searching.
Then there is the incentive layer. Aggregators are measured on inventory, because more listings means more search results, more traffic and more ad revenue. Nothing in that model rewards aggressive removal of stale records. Staffing agencies are measured on candidate pipeline, so a posting that generates CVs has done its job whether or not a vacancy exists.
None of this requires anyone to act in bad faith. The system produces ghosts as a byproduct of how it is wired.
How to spot one before you apply
| Signal | What it usually means |
|---|---|
| Posted more than 60 days ago, still open | Filled, expired or evergreen |
| Same role, several listings, different posters | Agency syndication |
| No named company, "leading firm in the sector" | Agency, client not committed |
| Description with no team or product detail | Written by an intermediary |
| Salary far above the market for the title | Bait for a pipeline |
| Reposted on a monthly cycle | Evergreen requisition |
| Not on the company's own career site | Treat with real suspicion |
That last row is the highest value check in the table and takes under a minute. Search the company name plus "careers", find their actual job listing page, and look for the role. If it is there with a live requisition, the job is real and you should apply on that page. If it is not there at all, you have learned something important for free.
Why this hits sponsorship searches harder
If you need visa sponsorship, ghost jobs cost you more than they cost a domestic candidate, for three compounding reasons.
The eligible pool is already small. When only a fraction of roles in a market will sponsor, losing a third of your applications to listings that were never fillable is a much larger proportional loss.
Agency listings are over-represented in international search results, and an agency post rarely states the client's sponsorship position because the agency often does not know it. You cannot verify the single fact that determines whether the role is possible for you.
And the time cost is different. Applications take real effort when you are also researching visa routes, checking whether the employer has a sponsor licence, and tailoring a CV for a market whose conventions differ from your own. We covered the verification side in companies that sponsor visa jobs and the CV side in CV format for visa sponsorship jobs.
The structural fix: change the source
Every technique above is a filter applied after the fact. You are cleaning up data an aggregator handed you. The alternative is to not consume the aggregated data in the first place.
Employers run applicant tracking systems: Workday, Greenhouse, Lever, iCIMS, Ashby and others. Those systems publish the company's live openings and are the system of record for whether a requisition exists. They are also where the listing is withdrawn first, because that is where the recruiter closes it.
| Aggregated feeds | Direct ATS career sites | |
|---|---|---|
| Source of listing | Copy of a copy | The employer's own system |
| Withdrawal latency | Days to never | Immediate at source |
| Duplicates | Frequent | One record per role |
| Agency speculative posts | Included | Not present |
| Poster identity | Often hidden | Always the employer |
| Sponsorship signal | Description text only | Structured field, where set |
That is the architecture CVailor is built on. It reads career site feeds directly from employer applicant tracking systems across more than 175,000 company career sites and 54 ATS platforms, so agency speculative posts and syndicated duplicates are not in the pool to begin with. Records are deduplicated per user on a stable job identifier, so a role that reappears across runs does not become three entries in your feed.
Freshness is enforced rather than assumed: only roles posted or first seen within the last 45 days, not expired, and never previously shown to you, are eligible to surface. Aggregator domains are explicitly penalised in the quality dimension of the match score, which is the exact inverse of how an aggregator ranks its own inventory.
If your profile says you require sponsorship, that is applied as a filter at the source, so roles flagged as non-sponsoring are never fetched. What survives is scored across nine weighted dimensions with hard caps, so a role in a country you did not target cannot rank highly no matter what else matches.
The free tier is up to 10 sponsored jobs a month and three CV generations, no card required. Starter is $18 a month, Pro is $23, and the job figures are ceilings that depend on how many sponsored roles in your categories were genuinely live in your countries that month. Full detail on the pricing page and how it works.
Until you change the source, treat every aggregator listing as unverified until you have found it on the company's own career site. That one habit will save you more wasted applications than any CV change you make this month. Start free.
Related guides: Best Job Search Sites for Visa Sponsorship · LinkedIn vs Indeed · Hidden Job Boards for Visa Sponsorship · How to Be an Early Applicant · Companies That Sponsor Visa Jobs