ATS Jobs API — $2/1K | Greenhouse, Lever, Ashby, Workday avatar

ATS Jobs API — $2/1K | Greenhouse, Lever, Ashby, Workday

Pricing

$2.00 / 1,000 jobs

Go to Apify Store
ATS Jobs API — $2/1K | Greenhouse, Lever, Ashby, Workday

ATS Jobs API — $2/1K | Greenhouse, Lever, Ashby, Workday

Search live jobs from Greenhouse, Lever, Ashby and Workday job-board APIs—no browser. Keyword, location, remote and date filters, company lists, salary when posted, and only-new monitoring. Official ATS endpoints, one flat schema. $2 per 1,000 jobs.

Pricing

$2.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Runix Services

Runix Services

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

ATS Jobs API: Greenhouse, Lever, Ashby & Workday Jobs from 1,250+ Companies

Search 50,000+ live jobs across 1,250+ companies at once, or pull every open role from the companies you name. Type "data engineer", pick remote, and get the newest matching jobs from every company in the directory, with salary ranges, apply links and full descriptions, in one clean schema. Nothing is scraped or cached: each run reads the companies' official public job-board APIs right now.

  • Search mode (leave Companies empty): keyword, location, remote, department and posted-date filters across 1,250+ hiring companies on Greenhouse, Lever and Ashby, from seed-stage startups to public companies. Newest jobs first.
  • Company mode: give board URLs, careers pages or just names. Ten systems: Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Workday, Personio, Teamtailor, BambooHR.
  • Only new jobs: schedule it daily and get (and pay for) only postings you haven't had before.
  • $2 per 1,000 jobs. Jobs your filters drop are free.

Search every company (the form's prefill)

The 100 newest data engineer jobs across all 1,250+ companies:

{
"keywords": ["data engineer"],
"maxJobs": 100
}

A daily feed of new remote ML roles in the US, for a job board, newsletter or recruiting team:

{
"keywords": ["machine learning", "ML engineer", "AI engineer"],
"remote": "remote",
"locations": ["US"],
"postedSince": "7 days",
"onlyNewJobs": true,
"monitorId": "remote-ml-us"
}

The run's SUMMARY record says how many companies were searched, how many jobs were open, how many matched and how many were returned.

Where the jobs come from

SystemPublic endpoint used
Greenhouseboards-api.greenhouse.io/v1/boards/{board}/jobs (+ per-job pay transparency)
Leverapi.lever.co/v0/postings/{company} (and api.eu.lever.co)
Ashbyapi.ashbyhq.com/posting-api/job-board/{board}
Workableapply.workable.com/api/v1/widget/accounts/{account}
SmartRecruitersapi.smartrecruiters.com/v1/companies/{company}/postings
Recruitee{company}.recruitee.com/api/offers
Workday{tenant}.wdN.myworkdayjobs.com/wday/cxs/{tenant}/{site}/jobs (+ per-job detail)
Personio{company}.jobs.personio.de/xml (and .com)
Teamtailor{careers-host}/jobs.json (JSON Feed)
BambooHR{company}.bamboohr.com/careers/list (+ per-job detail)

Company mode: what you can give it

Put one company per line in Companies. Any of these work:

  • A job-board URL: https://boards.greenhouse.io/stripe, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/ramp, https://apply.workable.com/huggingface, https://jobs.smartrecruiters.com/ServiceNow, https://bunq.recruitee.com
  • The company's own careers page: https://www.notion.com/careers. The Actor finds the board that the page links to or embeds.
  • System and id: greenhouse:stripe, lever:palantir, ashby:ramp
  • Just a name: Hugging Face. Every system is checked and the company's biggest board is used. Other matches are listed in the run's SUMMARY record.

Company mode examples

Every open job at four companies, newest 25 each:

{
"companies": [
"https://boards.greenhouse.io/discord",
"https://jobs.lever.co/palantir",
"https://jobs.ashbyhq.com/ramp",
"workable:huggingface"
],
"maxJobsPerCompany": 25
}

A daily feed of new remote engineering roles, run on a schedule:

{
"companies": ["Stripe", "Notion", "greenhouse:figma", "https://jobs.ashbyhq.com/linear"],
"keywords": ["engineer", "developer"],
"remote": "remote",
"onlyNewJobs": true,
"monitorId": "remote-eng"
}

Pricing

$2.00 per 1,000 jobs returned (pay per event: one job event per row). Jobs dropped by your filters are free, and in Only new jobs mode you pay only for postings you haven't had before. Example: 50 companies with about 40 open roles each is 2,000 jobs, or $4.00 for the first run; a daily only-new run after that typically returns a few dozen jobs for a few cents.

Filters

  • Keywords in the title, optionally in the description too, plus exclude keywords.
  • Locations: "London", "Germany", "US" (US/USA/United States all match).
  • Remote: any, remote only, remote or hybrid, on-site only.
  • Departments: "Engineering", "Sales".
  • Posted since: a date (2026-10-01) or an age (24 hours, 7 days).
  • Max jobs per company (newest first) and max jobs in total.

Only new jobs (monitoring)

Turn on Only new jobs and schedule the Actor. Each run returns only postings it hasn't returned before for that monitor, so you get a feed of new roles and pay only for those. The first run returns everything currently open. Use Monitor name to keep separate feeds for separate searches.

Salary

Salary is filled in whenever the company publishes it:

  • Structured from the ATS: Greenhouse pay-transparency ranges, Ashby compensation, Lever salary range, Recruitee salary.
  • From the description when the posting states a pay range in its text, such as "base salary range $145,000 - $200,000". salarySource tells you which.

Output

One row per job, with the same fields for every system:

{
"title": "Engineering Manager, Notifications",
"company": "Discord",
"location": "Remote (U.S.)",
"locations": ["Remote (U.S.)"],
"country": null,
"remote": true,
"workplaceType": "remote",
"department": "Product Engineering",
"team": null,
"employmentType": null,
"salaryMin": 248000,
"salaryMax": 310000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salaryText": "Base Salary: 248,000 - 310,000 USD",
"salarySource": "structured",
"description": "Plain-text job description…",
"applyUrl": "https://job-boards.greenhouse.io/discord/jobs/…",
"jobUrl": "https://job-boards.greenhouse.io/discord/jobs/…",
"postedAt": "2026-10-13T17:02:11.000Z",
"updatedAt": "2026-10-29T14:42:09.000Z",
"source": "greenhouse",
"companyId": "discord",
"jobId": "8100000002",
"uniqueId": "greenhouse:discord:8100000002",
"fetchedAt": "2026-11-03T20:00:00.000Z"
}
  • workplaceType is remote, hybrid, onsite or null when the posting doesn't say.
  • employmentType is normalised to Full-time, Part-time, Contract, Temporary, Internship, Freelance or Apprenticeship.
  • updatedAt is only available from Greenhouse and Recruitee. The other systems don't publish it.
  • Dates are ISO 8601 in UTC.

The run also saves a SUMMARY record in its key-value store. For each input it lists which board was used, how many jobs were open, matched and returned, and anything that wasn't found.

Limits

  • No logins or scraping — only the official public job-board APIs listed above. If a company hides its board or uses an unsupported ATS (e.g. Jobvite, iCIMS), you get zero rows for that input, not an error for the whole run.
  • Rate limits — concurrent requests per host are capped (Workable is the strictest). The Actor backs off on HTTP 429/503 and retries a few times.
  • Workday & BambooHR — one extra API call per returned job for full description (and Workday posting dates).
  • Greenhouse salary — optional per-job pay-transparency calls (fetchSalaryDetails); turn off if you only need titles and links.
  • Caps — maxJobsPerCompany and maxJobs stop the run early; in pay-per-event mode you are never charged beyond your run's spending limit.

Good to know

  • Jobs come only from public job-board endpoints that the ATS vendors provide for this purpose. Requests are spread out per host and retried politely when a service asks to slow down.
  • Jobvite and iCIMS have no unauthenticated public job JSON/XML feed; they aren't covered.
  • For SmartRecruiters, the company id is the part after jobs.smartrecruiters.com/. The API answers the same way for an unknown id as for a company with no open jobs, so check the id if a board comes back empty.