Job Opportunities API

Check the data. Then trust it.

Facts

Every number on this page comes from the daily snapshot that every page of this site and /public/site-stats share, and every one of them can be reproduced by anyone with a terminal and no account. That includes the numbers that do not flatter us.

The ledger, reconciled: as of 29 October 2026 (daily snapshot)
Live: rows you can page out of the API2,468,470
Withheld: held, deliberately not served1,017,399
Closed: roles retained with a closure date and reason8,985,128
Total ledger12,470,997 (and 2,468,470 + 1,017,399 + 8,985,128 = 12,470,997, exactly)
Employers139,834
Countries236
Posted in the last 7 days172,916
Measured2026-10-29T04:55:52Z
Closure dates: JOA records as the closure date the day its daily verification confirmed that an advert had gone. Before late September 2026 that verification ran in large catch-up batches, so closure dates recorded before then show when JOA confirmed a closure, not when the employer closed the role; daily verification applies from late September 2026.
What we hold back, and why
Breaches the employer-direct rule, or comes from a discovery-only source417,117
Reversible doubt: excluded by default, reachable with ?quality=all126,955
Employer asked to be removed0
A re-crawl of an advert we already serve under another id440,749
Held because of who posted it (staffing agency or job board acting for the employer)27,634
Other API holds (portal hold, partner withdrawal, “Copy of” re-posts)4,944

Withheld is not the same as deleted. The rows stay in the ledger and stay counted here; they are simply not in the set a caller receives by default. An aggregator republishing someone else's advert, a staffing agency placing candidates at third parties, and a job board hosting an advert on an employer's behalf are all real listings. They are just not employer-direct, which is the only thing we sell.

Where the live rows come from
employer_ats (28 providers)1,634,348
direct (4 providers)820,145
government (2 providers)13,977
Sources JOA reads but does not republish (19)

adzuna, apify_all_jobs, apify_fantastic_jobs, apify_job_listings, apify_xing, arbeitnow, arbeitsagentur, careerjet, eures, france_travail, himalayas, jobicy, jooble, landing_jobs, remoteok, remotive, the_muse, weworkremotely, working_nomads

They include job boards, aggregators and public employment services that JOA uses for discovery only. The test is checkable: none of them should ever appear in a response you receive.

The fields we are worst at
Agency flag (stated by the source)756 (0.0% of live rows)
Engagement (stated by the source)4,667 (0.2% of live rows)
Agency flag (established)7,841 (0.3% of live rows)
Engagement (established)12,465 (0.5% of live rows)

You would find this out on evaluation day regardless. Better that it comes from us, on the page we invite you to check, than from your own pipeline three weeks in. The full field-by-field breakdown is on coverage.

Check any of this yourself, without an account
The figures on this pagecurl https://api.jobopportunitiesapi.org/public/coverage
How recently every live row was re-confirmedcurl https://api.jobopportunitiesapi.org/public/freshness
Every provider, and the ones we refusecurl https://api.jobopportunitiesapi.org/public/providers
Employer counts, per countrycurl https://api.jobopportunitiesapi.org/public/coverage/employers
Actual rows, with a free keycurl -H 'Authorization: Bearer YOUR_KEY' 'https://api.jobopportunitiesapi.org/v1/jobs?limit=5'

The statistics above answer with no key and with Access-Control-Allow-Origin: *, so they work from a browser console too. Actual job rows need a free Primary key now: no card, and it takes about a minute at /register. If a number on this page disagrees with what those endpoints return, the endpoints are right and we have a bug: tell us.

Measured 2026-10-29T04:55:52Z. The report is rebuilt on a schedule rather than per request, because counting it on every request took 24 seconds and returned 503s, so this page tells you when it was true rather than implying it is true this instant.

Want pay and time-to-fill instead of row counts? See Market Signals.

Reports: the latest is Employer Job Postings in Europe and North America: JOA Job Market Report, September 2026 (September 2026), free to read, listen to and reuse under CC BY 4.0.