If you have applied for jobs in the last two years you have met the ghost posting: a role that is always open, always “posted 2 days ago”, and never filled. Surveys say most recruiters admit to posting them. New York passed a bill against them this summer. None of that helps you decide whether the posting in front of you is one.
Here is the thing nobody tells you: the date you see on LinkedIn or Indeed is the board's date, not the employer's. Boards reset it on every re-list. The employer's hiring system, the software behind the “Apply” button, keeps the original date, and for the three systems most tech companies use, that date is public.
Where the real date lives
Click “Apply” on a LinkedIn posting and you usually land on one of these hosts. Each one has a public, unauthenticated endpoint that returns every open posting on the company's board, including when it was first published.
| Hiring system | Apply link looks like | Public endpoint | Date field |
|---|---|---|---|
| Greenhouse | boards.greenhouse.io/{board}/jobs/{id} | boards-api.greenhouse.io/v1/boards/{board}/jobs | first_published, updated_at |
| Ashby | jobs.ashbyhq.com/{board}/{id} | api.ashbyhq.com/posting-api/job-board/{board} | publishedAt |
| Lever | jobs.lever.co/{site}/{id} | api.lever.co/v0/postings/{site}?mode=json | createdAt |
These endpoints exist so companies can embed their own job list on their own website. Reading them is what they are for. What is new is reading them from the other side: as a candidate, to check the board's story against the employer's.
One board, one afternoon
I pulled GitLab's Greenhouse board on 2026-09-22. It is a normal, healthy board, which is why it makes a fair example.
$ curl -s https://boards-api.greenhouse.io/v1/boards/gitlab/jobs | jq '.jobs | length'
203
| Measure | Value |
|---|---|
| Open postings | 203 |
| Median age since first published | 34 days |
| Older than 90 days | 18 |
| Older than 180 days | 3 |
| Oldest | 200 days |
first_published.
One posting on that board, “AI Engineer”, was first published on 2026-05-22 and last updated on 2026-09-14. A board that shows the update date would tell you it is eight days old. It is four months old. Nothing sinister about it; but you would want to know.
Other boards are not this tidy. An analysis by csvfirst in May 2026, across 200 companies on Greenhouse, found individual postings at Datadog, Jane Street and Canonical that had been open for more than 2,500 days. Seven years. The board said “posted recently” the whole time.
Do it yourself
You do not need a tool. Take the “Apply” link, find the board name in it, and ask the endpoint. For Greenhouse:
curl -s https://boards-api.greenhouse.io/v1/boards/gitlab/jobs \
| jq '.jobs[] | select(.id == 8556658002) | {title, first_published, updated_at}'
For Lever, createdAt is a Unix timestamp in milliseconds. For Ashby,
publishedAt is an ISO date. Both are in the list response, keyed by the id from the URL.
The extension does the same lookup automatically on LinkedIn, Indeed and Glassdoor, and adds the part a single lookup cannot show: how many times the employer has re-listed the same role.
What this does not tell you
- Intent. A 400-day posting can be an evergreen pipeline for a role the company always hires, or a fiction kept up for appearances. The age is a fact; the reason is not in the data.
- Everything else. Workday, iCIMS and Taleo, which most large non-tech employers use, do not publish a clean first-published date. For those you are back to heuristics: “Reposted” labels, applicant counts, missing salary.
- Closed postings. When a posting disappears from the board, the endpoint does not say whether it was filled or withdrawn. Only a daily crawl can tell you that a company opens and closes the same role every quarter, and that is what the crawl is for.
Limitations of this post
- One board on one day. The numbers above describe GitLab in September 2026, not the industry.
- The endpoints are documented as public, but nothing stops a vendor from adding rate limits or authentication later.
- The csvfirst figures are theirs, not mine; I have not reproduced them yet.
Discussion: [Hacker News and Lobsters links, once the post is shared]
Data: the numbers above come from the public endpoint shown, pulled on 2026-09-22. [CSV download] Method and downloads for every data post: press & data.