Job Postings API - 750k+ jobs, 7 ATS feeds, change-tracked avatar

Job Postings API - 750k+ jobs, 7 ATS feeds, change-tracked

Pricing

from $1.00 / 1,000 job records

Go to Apify Store
Job Postings API - 750k+ jobs, 7 ATS feeds, change-tracked

Job Postings API - 750k+ jobs, 7 ATS feeds, change-tracked

One query, every ATS-hosted job, deduplicated, with what changed since yesterday. A normalized, change-tracked index built from official public feeds: Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Personio and Workday.

Pricing

from $1.00 / 1,000 job records

Rating

0.0

(0)

Developer

Roleset

Roleset

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Job Postings API — 750k+ jobs from 7 ATS platforms, change-tracked

One query, every ATS-hosted job, deduplicated — and what changed since your last check.

This is an index, not a scraper. Job boards are read from the official public JSON and XML feeds that Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Personio and Workday publish for exactly this purpose. Nothing is parsed out of a rendered page, no robots.txt is worked around, and no login is required anywhere in the chain.

Boards are crawled on a schedule, stored, and diffed. When you run this actor you are querying a database, not waiting on a live scrape — so a search over three quarters of a million postings returns in seconds.

Two modes

search — the market right now

Find open postings by keyword, title, company, domain, city, country, remote, ATS platform, department, employment type or posting date.

{ "mode": "search", "q": "platform engineer", "country": "US", "remote": true }

changes — only what moved

Every posting that opened, changed, closed or reopened since a timestamp, each with a diff naming the fields that changed and their before and after values.

{ "mode": "changes", "since": "2026-09-01T00:00:00Z" }

Put this one on a schedule. It returns each event once, so a daily run costs you the handful of things that actually moved rather than the whole result set again. Re-running search and diffing it yourself is both more expensive and less accurate — a posting edited twice between runs looks like one change to a diff and is two events here.

What a record contains

Identitystable id, title, normalized title, company, department, team
Locationstructured {city, region, country, remote}, plus the raw string the employer wrote
Termsemployment type normalized across platforms; salary min/max/currency/interval where the board publishes one
Linksposting URL and apply URL
Timingposted date, first seen, last seen, closed date
Provenancewhich ATS and which board it came from, and when that board was last crawled

Descriptions are included on request (includeDescription), in both HTML and plain text.

No personal data

The index contains companies and roles, never people. There are no applicants, no recruiter names and no contact details — person-shaped fields are discarded when a feed is parsed, and email addresses and phone numbers are stripped out of descriptions before anything is stored.

Freshness

Every active board is crawled at least every 24 hours, and a board that changed on its last crawl is revisited sooner. Each run reports the age of the data behind the exact rows it returned, so you always know how fresh an answer is.

Coverage

PlatformBoards
Greenhouse6,720
SmartRecruiters5,811
Personio4,724
Ashby3,890
Recruitee3,417
Lever2,610
Workday75

27,000+ boards, 26,000+ companies, 750k+ open postings.

SmartRecruiters postings carry no description. Their list endpoint does not include one and fetching each posting separately is not reachable at a polite crawl rate. Every other platform includes descriptions in full.

Cost

Priced per record you actually receive — $1.00 per 1,000 — with nothing charged for a run that returns nothing. Use maxItems to cap a run, or Apify's own maximum-charge limit; the actor reads that limit before it starts and stops at it rather than fetching data you will not be billed for.

Already a roleset.io customer? Put your key in apiKey and the run is billed to your existing allowance instead — Apify will not also charge you per record.