ATS Jobs Feed

live$0.002/job rowSignal Detection

Last updated October 31, 2026

Every open job for a list of companies, read from their own Greenhouse, Lever, Ashby, Workday, and 13 other applicant tracking system boards. One row per job with the company domain, title, location, remote flag, date, and link. Title, location, and date filters, and only new jobs.

Features

  • Give a domain and the actor finds the board: Greenhouse, Lever, Ashby, Workday, and 13 more.
  • Every posting is read, up to 5,000 per board.
  • Title, location, department, remote, and date filters. Jobs that don't pass are never charged.
  • Only new jobs on a schedule. One free company row per company.
  • Pay per event: Job row at $0.002.

Input

companiesarrayoptional

One per line: a company domain (stripe.com), a homepage or careers page URL, or a job board URL (https://jobs.lever.co/palantir, https://job-boards.greenhouse.io/stripe, https://jobs.ashbyhq.com/linear, https://workday.wd5.myworkdayjobs.com/Workday). To tie a board URL to a domain, join them with an equals sign: gusto.com=https://job-boards.greenhouse.io/gusto. Up to 500 per run.

title_keywordsarrayoptional

Optional. Return only jobs whose title contains one of these words or phrases, matched as whole words and ignoring case, for example account executive, sales, engineer.

exclude_title_keywordsarrayoptional

Optional. Drop jobs whose title contains one of these words or phrases, for example intern.

locationsarrayoptional

Optional. Return only jobs whose location text contains one of these, ignoring case, for example new york, london, germany. The word remote matches remote jobs.

departmentsarrayoptional

Optional. Return only jobs whose department or team contains one of these, ignoring case. Boards that publish no department return nothing under this filter.

remote_onlystringoptional

true returns only jobs the board marks remote or whose location says remote.

posted_within_daysstringoptional

Optional. Return only jobs posted in the last N days. Jobs with no posting date are left out when this is set. Workday shows 30+ days for older postings, so those count as 30 days old.

max_jobs_per_companystringoptional

Job rows returned per company, newest first, after the filters. Default 1000, up to 5000. The whole board is read either way, up to 5,000 postings.

include_descriptionstringoptional

true adds the job description as plain text, up to 20,000 characters, for the jobs returned. No extra charge. Runs take longer on Workday boards, which need one read per job.

only_newstringoptional

true returns only jobs that were not on the board at the last run with the same state key. The first run returns every matching job and records the board.

state_keystringoptional

Names the saved state for only new jobs. Use one key per schedule, for example sales-accounts-daily.

reset_statestringoptional

true forgets the saved state for this state key and treats every board as a first run.

platformsarrayoptional

Optional. Limit board discovery to these: greenhouse, lever, ashby, workday, workable, smartrecruiters, personio, recruitee, rippling, oracle_hcm, successfactors, teamtailor, bamboohr, adp, ukg, paylocity, breezy. Empty means all.

max_charge_usdstringoptional

Optional. The run stops before it would charge more than this.

Output schema

json
{
  "row_type": "string",
  "input_key": "string",
  "company_domain": "string",
  "company_name": "string",
  "ats_provider": "string",
  "board_slug": "string",
  "board_evidence": "string",
  "board_confidence": "string",
  "job_id": "string",
  "job_title": "string",
  "department": "string",
  "location": "string",
  "secondary_locations": "string",
  "is_remote": "boolean",
  "workplace_type": "string",
  "job_url": "string",
  "posted_at": "string",
  "posted_at_precision": "string",
  "description": "string",
  "is_new": "boolean",
  "first_seen_at": "string",
  "jobs_on_board": "integer",
  "jobs_matched": "integer",
  "jobs_returned": "integer",
  "row_status": "string",
  "error_reason": "string",
  "billable_events_json": "string",
  "read_at": "string"
}

Pricing

$0.002per job row
EventFree plan price
Job row$0.002
Actor Start$0.001

Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.

On the Apify free plan the actor stops at $1.50 of charges a month, about 750 job rows. Any paid Apify plan removes the cap.

Limits

  • A board is found from the company's own site or its name. A company whose careers site uses an ATS outside the 17 above, or a custom careers page with no ATS behind it, returns no_board. Give the board URL when you know it.
  • A board found by name with no employer name on it is returned with board_confidence slug_only. Check those rows before you rely on them.
  • Department, remote, and workplace fields are only as complete as the board publishes them. Workday shows only relative dates, so posted_at there is a day, and older postings read 30 days or more (floor).
  • only_new sees a job only if it is still on the board when the actor runs.

Available on