Ready to check a job posting?
Check a Job Posting DateNo ads · No cookies · History stored locally in the browser · Free & unlimited
Paste any job listing URL and the tool cross-references multiple data sources to find the real posting date. This helps you spot ghost jobs, reposted listings, and refreshed postings that appear newer than they actually are.
| Source | What we extract |
|---|---|
| ATS API Data | Original posting date, title, company, and metadata via direct ATS API calls — when the job is on a supported platform (see table below). |
| Page Metadata & Regex | Dates in HTML patterns like datePosted, published_at, and other formats used by job boards. |
| Structured Data (JSON-LD) | Official datePosted from JobPosting schema embedded for search engines. |
| Open Graph Tags | article:published_time and similar social-sharing metadata. |
| Jina Reader | Visible date info rendered from JavaScript-heavy pages. |
| Sitemap Lookup | lastmod dates from sitemap.xml — fallback when nothing else is available. |
| Wayback Machine | First-capture date from the Internet Archive. Useful for spotting refreshed or reposted listings. |
| Hidden Insights | Non-visible metadata: department, AI screening status, salary, employment type, and more. |
When dates from different sources disagree, the tool flags potential reposts. For example, if a job's listed date says "posted 2 days ago" but the Wayback Machine first saw the URL 3 months ago, it's likely been refreshed. The tool always picks the oldest date and explains why.
The tool has direct integrations with these applicant tracking systems, plus generic extraction that works on most other job sites.
| Platform | Detection | Status |
|---|---|---|
| Greenhouse | boards.greenhouse.io, gh_jid param, iframes |
Supported |
| Lever | jobs.lever.co |
Supported |
| Ashby | jobs.ashbyhq.com, ashby_jid param |
Supported |
| Workable | apply.workable.com |
Supported |
| Oracle HCM Cloud | *.oraclecloud.com/hcmUI |
Supported |
| Gem | jobs.gem.com |
Supported |
| BambooHR | *.bamboohr.com/careers |
Supported |
| Brassring | brassring.com |
Supported |
| Paycor | gnk=job&gni= params |
Supported |
| Paycom | paycomonline.net |
Supported |
| SAP SuccessFactors | successfactors in page source |
Supported |
| Workday | *.myworkdayjobs.com |
Supported |
| SmartRecruiters | jobs.smartrecruiters.com |
Supported |
| ADP Workforce Now | workforcenow.adp.com |
Supported |
| Rippling | ats.rippling.com |
Supported |
| Jobvite | jobs.jobvite.com |
Supported |
| iCIMS | *.icims.com |
Supported |
| Avature | *.avature.net |
Supported |
| Teamtailor | *.teamtailor.com + custom domains via HTML fingerprint |
Supported |
| Indeed | indeed.com |
Blocked |
linkedin.com/jobs |
Supported | |
| Google Careers | careers.google.com |
No dates available |
| Kula | careers.kula.ai |
No dates available |
For sites not listed above, the tool uses generic extraction (JSON-LD, Open Graph, HTML regex, sitemaps, and the Wayback Machine). Many company career pages work well through these fallback methods.
Job listings often display unreliable dates. Companies can edit the visible "posted X days ago" text, sponsored placements reset the timer, and many career sites simply show today's date when the page loads. To find the real first-posted date, you have to look beyond the visible label.
The most accurate sources, in order of reliability:
JobPosting schema with a datePosted field for Google for Jobs. Usually accurate, but can be reset on republish.sitemap.xml with lastmod dates reflecting when the entry was last updated.Paste any job URL into the tool on the homepage and it checks all four sources in order, flags conflicts (e.g., "page says posted 2 days ago but Wayback first saw it 4 months ago"), and shows the oldest reliable date with an explanation.
Two questions, two answers:
The tool surfaces every available date — original posting date from the ATS, JSON-LD datePosted, page last-modified, earliest Wayback capture, and sitemap lastmod. Comparing these to your target date is the most defensible way to verify activity when you're deciding whether to apply, comparing how long similar roles have been open, or following up on an application that's gone quiet.
A ghost job is a job listing that appears active but is no longer being filled. Companies may keep old postings live to collect resumes, meet compliance requirements, or give the appearance of growth. This tool helps detect ghost jobs by revealing the true posting date — if a "new" listing was actually posted months ago, it may be a ghost job.
The tool compares dates from multiple sources. If the Wayback Machine shows the URL existed months before the listed "date posted", the job was likely reposted or refreshed. The tool flags these conflicts automatically and shows you all detected dates so you can judge for yourself.
It has direct API integrations with 18 applicant tracking systems: Greenhouse, Lever, Ashby, Workable, Oracle HCM Cloud, Gem, BambooHR, Brassring, Paycor, Paycom, SAP SuccessFactors, Workday, SmartRecruiters, ADP Workforce Now, Rippling, Jobvite, iCIMS, and Avature. For all other job sites, it uses generic extraction methods that work on most career pages.
Indeed's "posted" date often reflects when the listing was last refreshed, sponsored, or boosted — not when the role was first opened. A "Posted 2 days ago" tag can sit on a role that's actually been open for months. The difference matters: a freshly-opened role and a 6-month-old repost are very different odds for an applicant.
To verify the real posting date:
If the date the tool returns is much older than what Indeed shows, the listing has been reposted or refreshed — a common sign of a stale or ghost job. Indeed blocks automated tools from reading its pages, which is why this two-step workaround is the most reliable way to compare the real posting date with what Indeed displays. (LinkedIn jobs work directly — paste a LinkedIn job link and the tool reads what LinkedIn shows publicly. The displayed date is approximate, since LinkedIn often refreshes/reposts timestamps.)
jobs.ashbyhq.com or other ATS platforms?Yes. When This Job Was Posted runs a free, public REST API (and MCP server) that already wraps jobs.ashbyhq.com and 17 other applicant tracking systems — Greenhouse, Lever, Workday, SmartRecruiters, iCIMS, BambooHR, and more.
Pass any job URL to the /check endpoint and you get back the original posting date, job title, company, salary, location, employment type, and any other metadata the underlying ATS exposes — as JSON. No API key, no auth, 60 requests/minute.
For AI agents, the same data is available via MCP, so Claude, ChatGPT, Cursor, Codex CLI, and other clients can call it directly. Full setup, code samples, and a try-it widget are at /connect.
If you'd rather call Ashby's API directly, it's the public GraphQL endpoint at jobs.ashbyhq.com/api/non-user-graphql with operation ApiBoardWithTeams. Most ATSes expose similar public job-board APIs intended for embeddable widgets — that's what makes integrations like this tool's possible.
Yes, completely free with no ads, no account required, and unlimited use. If it helped you, consider supporting its development:
No. All search history is stored in your browser's localStorage. We don't have accounts, cookies, or any server-side storage of your searches. Anonymous usage analytics (page views and feature usage) are collected via a self-hosted analytics platform — no personal data is tracked.
Dates from ATS APIs (Greenhouse, Lever, etc.) are highly accurate — they come directly from the applicant tracking system's database. Dates from HTML metadata are generally reliable but can be manipulated by the employer. Wayback Machine dates tell you when the URL was first archived, which may be days after the actual posting. The tool shows all sources so you can compare.
Some job pages don't include any date information in their source code, and the Wayback Machine may not have archived the URL yet. The tool will still extract any available metadata like job title, company name, and hidden insights. You can to report unsupported job boards, or post publicly on r/whenthisjobwasposted.
Ready to check a job posting?
Check a Job Posting DateNo ads · No cookies · History stored locally in the browser · Free & unlimited
When This Job Was Posted is available as a REST API and MCP server, so you can add job posting date detection to your AI tools, automation workflows, or any HTTP client (curl, Python, Node.js, fetch, requests, axios) — JSON in, JSON out, no API key required.
Free, unlimited (60 requests/minute), no authentication.
Have a suggestion, found a bug, or want to report a job board we don't support yet? Send feedback directly — no account needed, fully anonymous unless you add an email.
Prefer a public discussion? Post on r/whenthisjobwasposted.
This tool is completely free with no ads or tracking. If it helped you land a job or save time in your search, consider supporting its development.
Teamtailor is now a directly-supported ATS — both *.teamtailor.com career sites and custom-domain Teamtailor portals are detected, with original posting dates read from the public RSS feed. LinkedIn cross-referencing also extends to Teamtailor, joining the existing Greenhouse, Ashby, Lever, SmartRecruiters, and Rippling bridges. The LinkedIn↔ATS title matcher is now more forgiving — small differences in seniority prefix ("Senior"), parenthetical qualifiers ("(Web facing)"), and hyphenation ("Full-Stack" vs "Full Stack") no longer block a match, so more LinkedIn jobs successfully resolve to their canonical posting date.
LinkedIn cross-referencing now covers three more ATSs — Lever, SmartRecruiters, and Rippling — alongside the existing Greenhouse and Ashby support. When a LinkedIn-listed job is also posted on one of these, the tool finds the canonical listing and shows the ATS's actual first-published date instead of LinkedIn's "X weeks ago".
LinkedIn jobs now cross-referenced against the company's real ATS. When the company is on Greenhouse or Ashby, the tool finds the canonical posting and uses its actual first-published date instead of LinkedIn's "X weeks ago" — which often reflects a refresh, not the original posting. Both dates are shown side-by-side so you can see the gap when LinkedIn's claim is misleading. More ATSs (Lever, Workable, SmartRecruiters, etc.) coming next.
LinkedIn job URLs are now supported. Paste any LinkedIn job link — /jobs/view/..., search-page links with currentJobId=..., or saved-collection links — and the tool reads what LinkedIn shows publicly (title, company, location, "X weeks ago"). LinkedIn often shows refreshed/repost dates rather than the original posting, so the date is presented with that caveat — full ATS cross-reference is coming next.
Fixed a timezone bug that made posting dates render one day earlier than they actually were for visitors in the Americas (and anywhere else west of UTC). Dates extracted from job posting APIs now display correctly in every timezone.
Tighter URL guards for LinkedIn and Google. LinkedIn feed posts (/posts/, /feed/, /pulse/) now show a clear "this is a social post, not a job listing" message instead of a silent failure. Google Careers links with the multi-account selector (/u/0/, /u/1/, …) and careers.google.com URLs are now correctly recognised. Any other LinkedIn or Google URL that isn't a job page (profiles, search results, Docs, Maps, etc.) now gets a friendly "paste a job posting URL instead" prompt.
New /connect page — set up job posting date detection in your AI tools (Claude, ChatGPT, Cursor, VS Code, Windsurf, and more) via MCP, or in automation workflows (n8n, Zapier, Make, Pipedream, Power Automate) via REST API. Includes a live try-it widget, copy-paste snippets for every supported client, and an LLM-readable companion at /connect.md so your AI can set it up for you.
Added an anonymous in-app feedback form. Click Feedback in the footer, the Send Feedback button on the About page, or Report this failure on a failed result to share a short note, suggest a feature, or flag a site that didn't work — no account needed, no login required.
Added Kula ATS detection. Jobs on careers.kula.ai now show a warning modal — Kula does not expose posting dates publicly (the API requires per-employer authentication and the HTML contains no date in any form). The tool now informs users immediately instead of attempting a fetch that can't succeed.
Expanded Workable detection. Jobs on jobs.workable.com/view/ (Workable's public job board) now return accurate posting dates and metadata via Workable's API — previously only apply.workable.com URLs were detected, so public listings fell through to HTML fetching and often failed on titles with apostrophes or special characters.
Added Paycom ATS integration. Jobs on paycomonline.net career portals now return accurate posting dates, titles, company names, salary, location, and position type via Paycom's ATS API — previously these JS-rendered pages had no extractable data.
Added Avature ATS integration. Jobs on *.avature.net career portals (used by Bloomberg, L'Oréal, Siemens, etc.) now return accurate titles and company names via Open Graph metadata, with posting dates extracted from portal-specific sitemaps and RSS feeds.
Added iCIMS ATS integration. Jobs on *.icims.com career portals now return accurate posting dates, titles, company names, location, employment type, and expiration dates via iframe JSON-LD extraction.
Added Jobvite ATS integration. Jobs on jobs.jobvite.com now return accurate titles, posting dates, category, employment type, and location via Jobvite's public XML feed.
Added Rippling ATS integration. Jobs on ats.rippling.com now return accurate titles, posting dates, salary ranges, department, location, and employment type via Rippling's public Job Board API — no proxy needed.
Added ADP Workforce Now ATS integration. Jobs on workforcenow.adp.com now return accurate titles, posting dates, salary ranges, location, and employment type via ADP's public Staffing API. Also added domain-specific lookups for Stripe and Goldman Sachs career pages.
Added Workday and SmartRecruiters ATS integrations. Jobs on *.myworkdayjobs.com now return posting dates and rich metadata (location, remote type, employment type) via Workday's CXS API. Jobs on jobs.smartrecruiters.com now return posting dates, department, location, and employment details via the Posting API.
Added SAP SuccessFactors ATS integration. Jobs on SuccessFactors-powered career sites now return accurate posting dates via the platform's RSS feed. Also fixed job title extraction for pages with "Summary" section headers and improved Jina company name filtering.
Fixed Lever detection for URLs with tracking parameters from job aggregators. Added early detection for ClearCompany (HRMDirect), an ATS that does not expose posting dates.
Added Amazon.jobs support via domain-specific API lookup. Jobs on www.amazon.jobs now return accurate posting dates, titles, and company info. Built as an extensible framework for adding more single-employer career sites.
Added silent retry for failed or thin page fetches — transient proxy failures are now automatically retried before giving up. When no date is found due to a temporary issue, a hint suggests trying again. Also expanded Oracle HCM support to handle preview URLs.
Improved reliability for JavaScript-heavy job pages (single-page apps). Pages that fail to return date data on the first render attempt are now automatically retried.
Added BambooHR ATS integration. Jobs hosted on *.bamboohr.com/careers now return posting dates, job titles, department, employment type, compensation, and location via BambooHR's API.
Fixed Gem job board support — jobs from jobs.gem.com now correctly return posting dates and job details. Added a dedicated proxy endpoint to handle Gem's API, which was previously blocked by oversized response headers.
Improved Greenhouse detection — now finds Greenhouse job data on sites that embed it via iframes or non-standard URLs. Also handles boards.greenhouse.io/embed links and automatically discovers the correct board slug from page content when the URL alone isn't enough.
Added Indeed URL detection — Indeed blocks automated access, so the tool now warns users and suggests finding the original company careers page instead. LinkedIn warnings updated similarly.
Added Brassring (IBM Kenexa) ATS integration. Detects fragment-based job URLs and extracts job title, company, and posting date from enterprise career portals. Improved handling of expired job postings with clear error messages.
Added Google Careers detection with upfront notification that posting dates are not available. Improved company and title extraction for Google job pages. Enhanced Jina Reader fallback with better company pattern matching.
Improved Ashby integration with support for third-party career sites (e.g. CareePuck). Extracts board name from URL path and falls back to direct Ashby job pages for unlisted or confidential postings.
Added Paycor (formerly Newton Software) ATS integration. Detects embedded Paycor job boards and extracts job titles from Paycor's career pages.
Added Gem (jobs.gem.com) ATS integration. Extracts job title, posting date, company, department, employment type, compensation, and location from Gem's GraphQL API.
Added Copy button to result cards. Copies the full result as plain text including job title, company, likely posted date with explanation, all detected dates, and hidden insights.
Added Oracle HCM Cloud job board integration for automatic date extraction. Improved mobile layout with shorter input placeholders and better date display. Filter input now stays highlighted when active, and Clear All button repositioned for clarity.
Added sitemap.xml fallback for date detection. When other methods fail, we now check the site's sitemap for lastmod dates. Works well with SAP SuccessFactors and other enterprise career sites.
Added support for Ashby embedded job boards. Sites using Ashby embeds (with ashby_jid parameter) now fetch job data directly from Ashby's API.
Added support for Greenhouse embedded job boards. Sites using Greenhouse embeds (with gh_jid parameter) now fetch job data directly from Greenhouse's API, including the original posting date.
New "Hidden Insights" feature - automatically extracts and displays hidden metadata from job pages that isn't visible to users, including department info, AI screening status, employment type, and more.
Added report button for unsupported job boards, linking to our Reddit community for feedback.
Added Jina Reader for JavaScript-heavy pages, improved job title extraction, step-by-step loading progress.
Initial launch with support for regex patterns, JSON-LD, Open Graph, and Wayback Machine date detection.