Every open job, with a GUID, kept current.
Clean job data from the employers' own systems. One key, JSON, cursors that never skip. From $1.20 per 1,000 jobs.
Three calls
A sync is three calls. One of them costs money.
1. Load once
GET /v1/jobs pages your countries and systems in GUID order, or a snapshot file does it in one download. Every full job is charged once.
2. Read events
GET /v1/events from your cursor: new, changed with the new values, closed, reopened. Free, in order, never skips.
3. Fetch by GUID
POST /v1/jobs with the GUIDs you want after a new. Closed ones come back marked, free.
Live numbers
2,830,176
jobs live72,254
companies274,948
new jobs today (UTC)818,812
new in 30 days247
countries30
applicant tracking systemsCounted from the tables the API serves. Held closures not counted. As of 2026-11-07 23:27:00 UTC. Sizes by country and system.
One record
A real job from the free sample file, as the API returns it. The fields that begin with ai_ are ours.
{
"url": "https://stadtwerke-aalen-gmbh.jobs.personio.de/job/2625908",
"title": "Sachbearbeiter*in Abrechnung - auf 1 Jahr",
"source": "personio",
"company": "Stadtwerke Aalen GmbH & Co. KG",
"derived": [
"ai_title",
"ai_salary_currency",
"ai_visa_sponsorship"
],
"ai_title": "Sachbearbeiter Abrechnung",
"benefits": "- Sicherer Arbeitgeber seit über 150 Jahren Bezahlung nach Tarifvertrag TV-V inkl. 13. Gehalt\n\n- Nach Möglichkeit flexibles und mobiles Arbeiten\n\n- Verschiedene ...",
"industry": "Energy",
"job_guid": "bd246946-53e0-46e5-a039-89a3a51f88b4",
"ai_skills": [],
"countries": [
"Germany"
],
"is_active": true,
"timezones": [
"Europe/Berlin"
],
"ai_summary": "",
"first_seen": "2026-10-14T06:13:29",
"salary_max": null,
"salary_min": null,
"ai_keywords": [],
"ai_noc_code": "",
"ai_soc_code": "",
"description": "Ihre Aufgaben\n\n- Bearbeitung von Umzügen, Neuanlagen sowie Pflege von Stamm- und Vertragsdaten\n\n- Erstellung und Plausibilisierung von Jahresverbrauchs- und Sch ...",
"expiry_date": null,
"posted_date": "2026-05-06T13:02:49",
"sync_status": "Active",
"ai_education": null,
"ai_esco_code": "",
"ai_isco_code": "",
"ai_languages": [],
"ai_noc_title": "",
"ai_onet_code": "",
"ai_soc_title": "",
"company_guid": "3398d3c2-ac0e-4a76-ab56-925c5d620171",
"requirements": "Ihr Profil\n- Erfolgreich abgeschlossene kaufmännische Ausbildung oder eine vergleichbare Qualifikation\n\n- Idealerweise erste Berufserfahrung in der Energiewirts ...",
"ai_esco_title": "",
"ai_isco_title": "",
"ai_onet_title": "",
"ai_salary_max": null,
"ai_salary_min": null,
"closing_since": null,
"date_modified": null,
"location_json": [
{
"lat": 48.83777,
"lng": 10.0933,
"city": "Aalen",
"state": "Baden-Wurttemberg",
"country": "Germany",
"guessed": false,
"precision": "town"
}
],
"salary_period": null,
"ai_job_language": "German",
"salary_currency": null,
"ai_workplace_type": null,
"ai_employment_type": "FULL_TIME",
"ai_salary_currency": "USD",
"ai_experience_level": "2",
"ai_visa_sponsorship": false,
"remote_location_json": []
}
The data
50 fields on every job, in one screen. ai_ marks a field our models or rules make; derived lists, per job, which of them the posting did not state.
Identity
job_guid company_guid title ai_title source url
Company
company industry
Text
description requirements benefits ai_summary
Terms
ai_workplace_type ai_employment_type ai_experience_level ai_education ai_visa_sponsorship ai_job_language ai_languages
Pay
salary_min salary_max salary_currency salary_period ai_salary_min ai_salary_max ai_salary_currency
Dates
posted_date expiry_date date_modified first_seen
Places
location_json remote_location_json countries timezones
Occupation
ai_onet_code ai_onet_title ai_soc_code ai_soc_title ai_noc_code ai_noc_title ai_isco_code ai_isco_title ai_esco_code ai_esco_title ai_skills ai_keywords
State
is_active sync_status closing_since derived
The price
From $1.20 per 1,000 jobs, about a third of what the market charges1. One thing is charged: a full job returned by the full feed.
| Offer | Jobs a month | $ a month | $ per 1,000 |
|---|---|---|---|
| Free | 250 jobs, 25 full-feed calls; 10 free-route calls a day | 0 | |
| Pay as you go | any, billed at month end | 1.20 | |
| Pro 100k | 100,000; overage $1.20 per 1,000 | 99 | 0.99 |
| Scale 500k | 500,000; overage $0.90 per 1,000 | 349 | 0.70 |
| Volume 2M | 2,000,000; overage $0.60 per 1,000 | 999 | 0.50 |
| Custom | above 2,000,000, resellers, bulk | by email | from 0.40 |
1. Fantastic Jobs' self-serve plans, read 2026-11-05: $250 at 100,000 jobs a month, $900 at 500,000, $2,800 at 2 million. USD, tax on top, cancel any time.
Free things
What others charge a request for, we do not charge at all.
Changes
Every changed event carries the new values. No refetch, no charge.
Closures
closed and reopened, with closed_at. Free.
Companies and counts
The company list, its changes, and the counts for any cut. Free, and no request quota on a paid key.
Free taste
250 full jobs and 25 full-feed calls a month, 10 free-route calls a day. No card, no end date. Enough to build the loop and test your parser.
Get a free keyUse cases
Backfill a country or a niche in one load, then keep it current from the events: a job closes on your board the day it closes on the employer's. Pay for the jobs you list, not for the polling.
Watch the companies you work with: company_guid joins every job to its company, and the company stream tells you when one changes. New roles arrive as new events within the hour.
Salary as stated and the yearly figure beside it, workplace and employment type, experience, education, visa: every field typed and documented, with derived telling you what is read from the text.
Plain JSON, a public OpenAPI file and llms.txt. Counts and companies are free, so an agent can look before it buys a page.
A snapshot of a whole country in one file, the same shape as the API, with a ledger seq to follow the changes from. O*NET codes and GeoNames places under open licences.
The docs
One page per route with the parameters, the answer shape, a curl and a Python snippet; a how-to guide from the free key to a running sync.