ATS Job Boards API avatar

ATS Job Boards API

Under maintenance

Pricing

$3.40 / 1,000 job posting scrapeds

Go to Apify Store
ATS Job Boards API

ATS Job Boards API

Under maintenance

Job listings from Greenhouse, Lever, Ashby, and Workable public board APIs.

Pricing

$3.40 / 1,000 job posting scrapeds

Rating

0.0

(0)

Developer

Mark

Mark

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Job listings pulled straight from the four ATS vendors' own public, unauthenticated board APIs: Greenhouse, Lever, Ashby, Workable. No login, no proxy, no scraping of rendered pages — these are the same JSON endpoints the vendors' own embeddable widgets call.

Input

FieldTypeRequiredDescription
sourceenum: greenhouse, lever, ashby, workable, autoyesWhich ATS to hit. auto detects from a board URL, or tries each API in turn for a bare slug.
slugsarray of stringsyesCompany board slugs ("gitlab") or full board URLs (https://boards.greenhouse.io/gitlab, https://jobs.lever.co/spotify, https://jobs.ashbyhq.com/ramp, https://apply.workable.com/huggingface).
maxJobsintegernoCap on rows pushed per slug. Leave empty for no cap.

v1 limit: no bundled seed list of company slugs. You supply the slugs/URLs; the actor does not discover or guess them. A curated seed list is future work, not v1.

Output example

One row per job in the default dataset (real row from a live smoke run, description truncated here):

{
"source": "greenhouse",
"companySlug": "gitlab",
"title": "Account Executive - Italy",
"location": "Remote, Italy",
"department": "EMEA - Commercial",
"remote": true,
"employmentType": null,
"postedAt": "2026-04-17T05:58:03-04:00",
"updatedAt": "2026-08-31T17:56:36-04:00",
"applyUrl": "https://job-boards.greenhouse.io/gitlab/jobs/8503792002",
"description": "<div class=\"content-intro\"><p>GitLab is the intelligent orchestration platform for DevSecOps...</p></div>"
}

No recruiter names, emails, or other personal data — those fields are dropped, not just left null.

Pricing

Pay-per-event. One job-scraped event is charged per job row pushed (Actor.charge({ eventName: 'job-scraped' })), never charged for an empty result. $0.0034 per event ($3.40 per 1,000 jobs) — configured in the Apify Console pricing step, not in this repo.

Limits / known gaps

  • No seed list — see v1 limit above.
  • employmentType is null on Greenhouse; that ATS doesn't expose it in the public jobs feed.
  • Ashby boards can run into the tens of MB (openai's is ~12 MB). This actor caps each job's description to 20,000 characters rather than streaming the response — fine for reading, not for re-hosting the full HTML verbatim.
  • auto mode with a bare slug (no URL) tries Greenhouse → Lever → Ashby → Workable in order and returns the first board that resolves; a slug that happens to exist on two boards silently returns only the first match.
  • A slug/board with zero open jobs returns zero rows for that slug (a warning is logged) rather than failing the whole run.