ATS Jobs API avatar

ATS Jobs API

Pricing

from $0.60 / 1,000 jobs

Go to Apify Store
ATS Jobs API

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

Headless Agent

Maintained by Community

Actor 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 (true for remote, false for 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:

FieldTypeRequiredDefaultDescription
companiesArray<Object>Yes—List of target companies with ATS and identifiers.
atsArray<String>NonullOptional list of ATS to run (greenhouse, ashby, lever, workday, workable, smartrecruiters, icims, personio).
queryStringNonullFilter job titles by keyword.
locationStringNonullFilter jobs by location keyword.
remoteBooleanNonullFilter jobs by remote status.
maxJobsIntegerNo200Maximum number of jobs to output (1 – 5000).
onlyNewSinceStringNonullISO 8601 date; only jobs posted on or after this date will be emitted.
stateKeyStringNoats-jobs-api-stateName 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 as tenant and specify ats explicitly.

  • Personio: { "ats": "personio", "tenant": "ads", "company": "ADS", "domain": "ads-steuer.de" }. Use the company career-site identifier as tenant and specify ats explicitly. 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"
}