Unified ATS API · Greenhouse + Lever + Ashby + Workday + 430 More
434 ATS vs 1 by 1
sources normalized into one JSON schema.
Building and maintaining custom crawlers for Greenhouse, Lever, Ashby, Workday, iCIMS, Taleo, SmartRecruiters, and Personio takes months of engineering and constant board-token discovery. JobPostings API gives you 580,000+ pre-discovered employer boards and a single normalized schema.
Cost per 1,000 structured ATS job records
1 Credit = 1 Returned Job Record. Empty search results (0 matches) cost 0 Credits. Crypto top-ups automatically include +5% Bonus Credits.
Side-by-side comparison.
| Capability | JobPostings API | greenhouse.io | Merge.dev / Kombo | Custom Board Scrapers |
|---|---|---|---|---|
| Requires employer OAuth / admin credentials? | No — queries public ATS boards & career sites | No, but requires discovering every board token | Yes (requires customer HR admin OAuth) | No |
| Pre-discovered employer ATS boards | 580,000+ live boards across 434 sources | 0 (you must build your own board list) | Only connected customers | Manual seed list |
| On-demand ETag refresh (?refresh=true) | Built-in for Greenhouse, Lever & Ashby | Manual implementation | Per-customer sync | Manual implementation |
| Free domain-to-ATS detector endpoint | GET /v1/tools/ats-detector?domain=stripe.com (0 Credits) | None | None | None |
Competitor pricing verified from public pricing pages as of November 2026. Actual costs may vary based on plan tier, concurrency add-ons, and overage rates. All third-party trademarks are the property of their respective owners. JobPostings API rates: $0.199 / 1K jobs (Scale), $0.33 / 1K jobs (Pro), $0.76 / 1K jobs (Starter).
Why engineering teams switch from DIY Multi-ATS Integrations.
No HR Admin OAuth Required (Unlike Merge.dev or Finch)
Unified HR APIs like Merge.dev only work when each employer authorizes your app via OAuth. JobPostings API indexes public ATS boards across 580,000+ employers so you can query any company immediately.
Instant ATS Detection + Live Board Refresh
Use GET /v1/tools/ats-detector?domain=company.com to identify any company's ATS platform and board token for free, then call GET /v1/companies/{slug}/jobs?refresh=true for live ETag polling.
Query Greenhouse, Lever, Ashby & Workday with One Schema
Stop writing separate parsers for boards-api.greenhouse.io, api.lever.co, and jobs.ashbyhq.com:
gh = requests.get("https://boards-api.greenhouse.io/v1/boards/stripe/jobs?content=true").json()["jobs"]
lv = requests.get("https://api.lever.co/v0/postings/palantir?mode=json").json()
ab = requests.get("https://api.ashbyhq.com/posting-api/job-board/openai").json()["jobs"]
# 3 completely different JSON structures, no salary/skills normalizationimport requests
# Search across all ATS platforms or refresh a specific company board live
res = requests.get(
"https://api.jobpostingsapi.com/v1/companies/stripe/jobs",
headers={"x-api-key": "jp_live_your_api_key"},
params={"refresh": "true", "limit": 25},
)
print(res.json()["data"])Interactive Engineering Workbench · Benchmark vs DIY Multi-ATS Integrations
Verify real-time latency, pagination math & JSON schema
Frequently asked questions
- How does ?refresh=true work under the hood?
- When you pass refresh=true on /v1/companies/{slug}/jobs for a Greenhouse, Lever, or Ashby company, our gateway sends a conditional HTTP request with If-None-Match (ETag) and Accept-Encoding: gzip to the official public ATS endpoint, upserts any changes into PostgreSQL, and returns the fresh job list.
Test it against DIY Multi-ATS Integrations for free.
Every new account receives 500 free Credits immediately — no card required.