Job Opportunities API

Check the data. Then trust it.

Changelog

What changed, when, in plain language. Most recent first. This is a record, not marketing copy — see /facts for what the ledger actually holds today.

2026-09-28
  • Billing moved to Creem as our Merchant of Record: hosted checkout, webhook-driven activation, and a self-serve billing portal. The old Viva Wallet / Revolut payment code paths are retired.
  • Anonymous access to job and company rows now requires a free API key. Statistics endpoints (counts, coverage, freshness, providers) remain fully open with no key and no account.
  • Added the Starter plan: €29/month, 10,000 records/month.
2026-09-26 – 2026-09-27
  • Added an internal, HMAC-signed read API for partner integrations, and an internal market-signals rollup endpoint. Neither is part of the public API.
  • Indexed live listings for faster internal lookups, and extended the internal search path.
  • Restored the data-quality gate that determines which rows are safe to serve after a period where it had been unintentionally disabled.
2026-09-12 – 2026-09-17
  • Rebuilt the re-verification schedule so every served listing is re-checked on a deterministic cadence rather than an ad-hoc queue, with per-host rate limits and drift detection.
  • Improved employer-identity matching so postings from the same company are consolidated into one record instead of fragmenting across ATS tenants.
  • Hosts that stopped resolving are now excluded automatically rather than left queued indefinitely.
2026-08-27 – 2026-08-29
  • VAT numbers are now verified for real at checkout, so the total shown matches the total charged.
  • Every live API key now has a recorded owner, and signing out actually revokes the session.
  • Fixed two billing edge cases so a subscription payment could not mint a duplicate key.
2026-08-19 – 2026-08-23
  • Job listings with a confirmed-dead apply link are no longer served, and two data-completeness gaps were closed.
  • Company records with an empty sector list (previously ~402,000 of them) now carry real sector data.
  • `/public/status` and `/public/stats` were fixed to measure the live ledger correctly after both had been silently reporting stale or wrong numbers.
  • Added `?include_poster_type=` (agencies and boards are excluded from results by default).
  • Page size became a per-plan limit rather than a fixed constant.
2026-08-14 – 2026-08-16
  • `/public/stats` and the sitemap were fixed after both incorrectly reported that the site had no jobs.
  • Stopped publishing France Travail (French public employment service) listings that its licence requires us to anonymise.
  • Added a country-level statistics endpoint so callers can ask what coverage exists for a given country before spending a record.
2026-08-05 – 2026-08-11
  • Issued the free Explore API key — no card required.
  • Made the single-country plan purchasable, and published the plan ladder with every number read live from the database rather than typed into a page.
  • Added a live demo on /api and published /coverage/countries so the coverage claim behind the pitch could be checked without a key.
  • Cached the coverage report so it stopped requiring a full ledger scan on every page load.
2026-08-01 – 2026-08-04
  • Added self-service account sign-up, and an admin console covering tasks that previously required an SSH session.
  • Added a self-service opt-out for employers who want their listings removed, and made it actually remove them from what the API serves.
2026-07-30 – 2026-07-31
  • Initial public launch of the jobopportunitiesapi.org ledger, API, checkout and accounts.

Compiled from the project's commit history. Something missing or wrong? Tell us.