ATS Jobs API
Pricing
from $0.60 / 1,000 jobs
ATS Jobs API
Collect normalized job postings from Greenhouse, Ashby, Lever, Workday, Workable, and SmartRecruiters.
Pricing
from $0.60 / 1,000 jobs
Rating
0.0
(0)
Developer
Headless Agent
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
Apify Actor that collects normalized job postings from eight Applicant Tracking System (ATS) platforms into one dataset. It removes duplicates and can return only newly posted jobs on repeat runs.
Supported ATS Platforms
- Greenhouse
- Ashby
- Lever
- Workday
- Workable
- SmartRecruiters
- iCIMS (public job-card portals)
- Personio
Features
- One schema: Every platform returns the same fields, so results can be combined without cleanup.
- Only new jobs: Remembers jobs already delivered, so scheduled runs return just new postings. Saved state is pruned automatically.
- Filtering:
query: Title substring filter (case-insensitive).location: Location filter (case-insensitive).remote: Boolean filter (truefor remote,falsefor onsite/hybrid).onlyNewSince: ISO 8601 date cutoff (e.g.2026-10-01T00:00:00Z).ats: Filter to specific ATS platform(s).maxJobs: Hard cap across the entire actor run (default 200, max 5000).
- Reliable runs: Temporary errors are retried, and one unavailable company does not stop the run.
Input Configuration
The Actor accepts the following input parameters:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
companies | Array<Object> | Yes | — | List of target companies with ATS and identifiers. |
ats | Array<String> | No | null | Optional list of ATS to run (greenhouse, ashby, lever, workday, workable, smartrecruiters, icims, personio). |
query | String | No | null | Filter job titles by keyword. |
location | String | No | null | Filter jobs by location keyword. |
remote | Boolean | No | null | Filter jobs by remote status. |
maxJobs | Integer | No | 200 | Maximum number of jobs to output (1 – 5000). |
onlyNewSince | String | No | null | ISO 8601 date; only jobs posted on or after this date will be emitted. |
stateKey | String | No | ats-jobs-api-state | Name for the saved state used by only-new mode. |
Company Object Identifiers
-
Greenhouse:
{ "ats": "greenhouse", "token": "gitlab", "company": "GitLab" } -
Ashby:
{ "ats": "ashby", "token": "linear", "company": "Linear" } -
Lever:
{ "ats": "lever", "token": "kinsta", "company": "Kinsta" } -
Workday:
{ "ats": "workday", "tenant": "nvidia", "wd": "wd5", "site": "NVIDIAExternalCareerSite", "company": "NVIDIA" } -
Workable:
{ "ats": "workable", "account": "careers", "company": "Workable" } -
SmartRecruiters:
{ "ats": "smartrecruiters", "company": "Freshworks" } -
iCIMS:
{ "ats": "icims", "tenant": "careers-hamiltoncompany", "company": "Hamilton Company" }. Use the complete portal subdomain astenantand specifyatsexplicitly. -
Personio:
{ "ats": "personio", "tenant": "ads", "company": "ADS", "domain": "ads-steuer.de" }. Use the company career-site identifier astenantand specifyatsexplicitly. Job IDs include the tenant. Salary and publication dates remain unknown; remote status is unknown unless a location explicitly says remote.
For iCIMS, descriptions are the public listing summaries. Dates, salary, and department remain unknown when the listing does not provide them. Job IDs include the tenant so postings from different companies remain distinct. Only collect from portals whose terms and crawler rules permit your use.
Example Input (INPUT.json)
{"companies": [{"ats": "greenhouse","token": "gitlab","company": "GitLab","domain": "gitlab.com"},{"ats": "ashby","token": "linear","company": "Linear","domain": "linear.app"},{"ats": "lever","token": "kinsta","company": "Kinsta","domain": "kinsta.com"},{"ats": "workday","tenant": "nvidia","wd": "wd5","site": "NVIDIAExternalCareerSite","company": "NVIDIA","domain": "nvidia.com"},{"ats": "workable","account": "careers","company": "Workable","domain": "workable.com"},{"ats": "smartrecruiters","company": "Freshworks","domain": "freshworks.com"}],"maxJobs": 50,"remote": true}
Output Schema
Each dataset item has the following normalized structure:
{"jobId": "8638232002","ats": "greenhouse","company": "GitLab","companyDomain": "gitlab.com","title": "AI Transformation Owner, CRO","department": "Enablement","employmentType": "Full-time","locations": ["Remote, United States"],"remote": true,"salary": {"min": 150000,"max": 190000,"currency": "USD","period": "1 year"},"descriptionHtml": "<div class=\"content-intro\"><p>...</p></div>","descriptionText": "GitLab is the intelligent orchestration platform...","applyUrl": "https://job-boards.greenhouse.io/gitlab/jobs/8638232002","postedAt": "2026-07-22T17:38:40.000Z","updatedAt": "2026-10-15T19:24:46.000Z","fetchedAt": "2026-10-27T08:00:00.000Z"}