ATS Jobs API - Greenhouse, Lever, Ashby, Workday & More avatar

ATS Jobs API - Greenhouse, Lever, Ashby, Workday & More

Pricing

$2.50 / 1,000 verified job postings

Go to Apify Store
ATS Jobs API - Greenhouse, Lever, Ashby, Workday & More

ATS Jobs API - Greenhouse, Lever, Ashby, Workday & More

Job postings straight from company career sites on 9 ATS platforms: Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Rippling and Personio. Deduplicated across platforms, and every board checked against the vendor's own published job count so you can see what is complete.

Pricing

$2.50 / 1,000 verified job postings

Rating

0.0

(0)

Developer

Kaleb Confer

Kaleb Confer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Verified Job Boards

Job postings from public ATS boards — checked against the vendor's own record count, and told you either way.

Every other job scraper hands you rows and lets you assume they're all there. This one reports, per board, whether completeness was proven, and says so plainly when it can't be.

The two things buyers complain about

Look at the open issues on any job-data API and you find the same two, over and over: duplicates and missing records. Both are completeness failures, and both are handled structurally here rather than by effort.

Missing records. Greenhouse and SmartRecruiters publish a total alongside the board. Every fetch is compared to it. A board that comes up short is flagged, not quietly included.

Duplicates. Companies migrating between ATS platforms run two live boards at once — the same role, two job IDs, two vendors. A vendor's ID can't see across vendors, so deduplication is on (company, title, location) instead. In a 799-board index this removes about 2,500 duplicate postings, roughly 6%.

What every run returns

Alongside the roles, a PROVENANCE record:

{
"boards": 3,
"boards_with_published_count": 2,
"boards_verified_complete": 2,
"duplicates_removed": 1,
"unique_roles": 188,
"detail": [
{ "company": "Stripe", "ats": "greenhouse", "postings_fetched": 566,
"count_published_by_vendor": 566, "verified_complete": true,
"completeness_basis": "vendor count matched" },
{ "company": "Ramp", "ats": "ashby", "postings_fetched": 136,
"count_published_by_vendor": null, "verified_complete": null,
"completeness_basis": "vendor publishes no count; whole board returned in one call" }
]
}

Note the null on Ramp. Ashby doesn't publish a count, so completeness there is credible but not proven — one call returns the whole board, with no pagination to truncate. It is reported as unknown rather than dressed up as verified. That distinction is the entire point.

Input

FieldDescription
companiesCompany names. Board tokens resolve automatically — Stripe finds greenhouse/stripe.
keywordOptional title filter.
platformsWhich ATS platforms to check. Default: greenhouse, ashby, lever.
maxResults0 for no limit.

Supported platforms

PlatformCompleteness provable?
Greenhouseyes — publishes meta.total
SmartRecruitersyes — publishes totalFound
Ashbywhole board in one call, no count published
Leverwhole board in one call, no count published
Workablewhole board in one call, no count published
Recruiteewhole board in one call, no count published

Why not LinkedIn

Measured, not assumed. LinkedIn's public guest endpoint returns 30 unique postings for a broad query and goes empty at offset 600, with no total anywhere in the response. You cannot prove a corpus complete against a source that won't tell you how big it is.

Every endpoint used here is the ATS vendor's own documented public API: no login, no session cookie, no terms accepted, no CAPTCHA, no IP-block circumvention. A board token either resolves or returns 404. Postings contain company data, not personal data of private individuals.

Cost

Pay per result. You are charged for unique, deduplicated roles delivered — not for the run, and not for the duplicates that were removed before you saw them.