Jobs data feed

Every new, changed and closed job, straight from employer job boards, daily

A forward daily feed of 1,722,847 open jobs read from employers' own careers sites and applicant tracking systems (Workday, Greenhouse, Lever, SmartRecruiters, Ashby and more). Each job comes with the employer's website domain, the ATS it came from and stable point-in-time stamps. Global, EU, US and remote cuts, as Parquet and JSON Lines in an S3 bucket.

The feed today

Open jobs, global1,720,684
Europe329,214
United States730,521
Remote only122,288
Employers hiring19,514

As of 2026-10-23 (cut counts from the 2026-10-23 snapshot). Latest daily delta (2026-10-23): 2,163 new, 486 changed and 0 closed jobs globally. Staffing-agency postings and cross-source duplicates are left out.

History starts on 2026-10-21. This is a forward feed: you get today's open jobs and every change from the day you start. We don't sell back-history we don't have, and closed-job dates before 2026-10-21 are not in the feed.

What you get

Daily delta

jobs_delta: every job that entered, changed in or left your cut since the previous run, keyed by a stable job_id, with change_type new, updated or closed and a removal_reason.

Weekly snapshot

jobs_snapshot: every open job of the cut. Load it once, then apply the deltas in order to rebuild the open set of any day.

Delivery

Hive-style dt=YYYY-MM-DD partitions in an S3-compatible bucket. Parquet (zstd) and JSON Lines (gzip) with the same rows; DuckDB, Snowflake, BigQuery and Spark read them directly. Every run ships a manifest with row counts and sha256 per file.

No personal data

No recruiter, hiring-manager or contact names, no emails or phone numbers. Text fields pass a PII filter. Full job descriptions are not in the standard feed.

Sources in the sample: workday, oracle, smartrecruiters, greenhouse, ashby, jobtech, recruitee, teamtailor, personio, lever.

Launch prices

Founding customers keep their launch price for 12 months. Every plan starts with a free 7-day trial of the real feed.

Snapshot file

One full snapshot of every open job, no subscription

$490 once

Free sample

A deterministic 1% of the feed by job id, thinned to 1,000 jobs, with the same columns as the snapshot. Licence: CC BY-NC 4.0 (attribution "Arcadium Data").

Schema

jobs_delta columns; jobs_snapshot has the same columns without change_type and removal_reason. Layout: <cut>/<table>/dt=YYYY-MM-DD/part-<HHMMSS>.parquet.

ColumnTypeNullDescription
change_typeSTRINGno`new` (job enters this cut), `updated` (content_hash changed, or a closed job reopened), `closed` (job left this cut).
removal_reasonSTRINGyesFor `closed` rows: closed (gone from the board), duplicate (same job found on another source), excluded (employer now out of scope, e.g. a staffing agency), deleted (board removed), left_cut (still open, no longer in this cut).
job_idSTRINGnoStable job id `<ats>___<native id>`; the key of every delta row.
titleSTRINGnoJob title as posted (emails, phone numbers and personal profile links removed).
company_nameSTRINGyesEmployer display name (cleaned; careers-page slogans dropped).
company_domainSTRINGyesEmployer website domain, lower case, without www (null when not matched with confidence).
countrySTRINGyesPrimary country, ISO 3166-1 alpha-2 (first of `countries`).
countriesSTRINGyesAll countries of the job locations, ISO alpha-2, `;`-separated.
locationsSTRINGyesLocation texts as posted, `;`-separated.
remoteBOOLEANyestrue = fully remote, false = on-site or hybrid, null = not stated.
employment_typeSTRINGyesEmployment type as stated by the ATS (full-time, part-time, contract ...).
senioritySTRINGyesSeniority level when the ATS states one.
departmentSTRINGyesPrimary department or team (first of `departments`).
departmentsSTRINGyesAll departments or teams, `;`-separated.
salary_minDOUBLEyesLower pay bound, only when the posting states pay in a structured field or a clear text range.
salary_maxDOUBLEyesUpper pay bound (same rule).
salary_currencySTRINGyesISO 4217 currency of the pay range.
salary_periodSTRINGyesPay period of the range (year, month, hour ...).
salary_sourceSTRINGyesWhere the pay range came from (structured ATS field or posting text).
atsSTRINGnoSource system the job was read from (greenhouse, lever, workday, smartrecruiters, ...).
languageSTRINGyesLanguage of the posting when known (ISO 639-1).
posted_atTIMESTAMPyesPosting date stated by the employer (UTC); null when the ATS gives none.
updated_atTIMESTAMPyesLast update stated by the employer (UTC).
first_seen_atTIMESTAMPnoWhen we first saw the job (UTC). Point-in-time stamp: never moves.
last_seen_atTIMESTAMPnoLast crawl that still saw the job open (UTC).
closed_atTIMESTAMPyesWhen the job disappeared from the employer board (UTC); null while open.
urlSTRINGnoPublic job posting URL on the employer careers site or ATS.
content_hashSTRINGnoHash of the exported fields except `last_seen_at` and `description`; changes = an `updated` delta row.

Try the real feed for 7 days

Tell us your company, the cuts you need and how you'd use the data. You get private download links to the latest snapshot and every daily delta for a week. No card needed.

Questions

Where do the jobs come from?

From employers' own public careers pages and applicant tracking system job boards (Workday, Greenhouse, Lever, SmartRecruiters, Ashby, Oracle Recruiting, Personio, Teamtailor, Recruitee and others), read daily without logging in. No job-board reposts.

How far back does the history go?

History starts on 2026-10-21. This is a forward feed: current open jobs plus every new, changed and closed job from then on.

What does the jobs feed cost?

Launch prices: $149 per month for the global feed, $79 for the EU or US cut, $29 for remote jobs only, or $490 for a one-off snapshot file. Founding customers keep the launch price for 12 months.

Does the feed contain personal data?

No. No recruiter or contact names, no emails or phone numbers; text fields pass a PII filter before export.

In what format is the feed delivered?

Parquet (zstd) and gzip JSON Lines in date partitions in an S3-compatible bucket, with a manifest of row counts and sha256 checksums for every run.