ATS Jobs API - Greenhouse, Lever, Ashby, Workday & More
Pricing
$2.50 / 1,000 verified job postings
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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
| Field | Description |
|---|---|
companies | Company names. Board tokens resolve automatically — Stripe finds greenhouse/stripe. |
keyword | Optional title filter. |
platforms | Which ATS platforms to check. Default: greenhouse, ashby, lever. |
maxResults | 0 for no limit. |
Supported platforms
| Platform | Completeness provable? |
|---|---|
| Greenhouse | yes — publishes meta.total |
| SmartRecruiters | yes — publishes totalFound |
| Ashby | whole board in one call, no count published |
| Lever | whole board in one call, no count published |
| Workable | whole board in one call, no count published |
| Recruitee | whole 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.