Career-Site Jobs API
What it does
The Actor collects every open job from company career sites that use Greenhouse, Lever (global and EU), Ashby, Workable or Recruitee, and returns them in one format: title, seniority, department, team, location(s), workplace type (remote, hybrid, on-site), employment type, salary range when the company publishes it, posting dates, job and apply URLs, and the description as text and HTML.
Input
- Companies: company domains (stripe.com), careers page URLs, or job board URLs such as https://boards.greenhouse.io/airbnb, https://jobs.lever.co/palantir or https://jobs.ashbyhq.com/openai.
- Only new or changed jobs (onlyNew): return only jobs that are new or changed since the previous run with the same delta state name.
- Delta state name: separate memory per monitoring setup; default is "default".
- Job title keywords and location keywords: keep jobs containing at least one of the words (case-insensitive).
- Remote jobs only.
- Maximum jobs per company: 0 means no limit.
- Include job descriptions: on by default; turn off for smaller results.
How the job board is found
For a job board URL, that board is used directly. For a domain or careers page, the Actor looks for Greenhouse, Lever, Ashby, Workable or Recruitee links on the company's /careers, /jobs, careers. and jobs. subdomains and home page. If none are found, it checks for a board named after the company; for Greenhouse the board's company name must match. The run summary (the OUTPUT record in the key-value store) shows the board found for each company and how: url, page or guess. If a company isn't found, enter its job board URL directly.
Only new or changed jobs
The Actor remembers delivered jobs per company and per delta state name in a key-value store named career-site-jobs-delta in the user's own Apify account. The first run returns all jobs. Later runs return only new jobs and jobs whose title, location, department, team, employment type, workplace type, salary or description changed. Removed jobs are forgotten. To start over, use a new delta state name or delete that key-value store.
Pricing
Pay per event: one "job" event per job saved to the dataset, and one "company-resolved" event per company whose board was detected from a domain or careers page (board URLs entered directly are not charged this event). Apify also charges a small start event per run. Prices are on the Actor's Pricing tab; higher Apify plans pay less per job. Only-new mode charges only for new or changed jobs.
Maximum cost per run
When the run reaches the maximum cost per run set in Apify, the Actor stops saving jobs, ends the run, and says "stopped at your maximum cost per run" in the status message. Companies not finished are marked limit_reached or skipped in the run summary. In only-new mode, jobs that weren't delivered are returned on the next run.
Troubleshooting
- "not_found" in the run summary: the company doesn't use Greenhouse, Lever, Ashby, Workable or Recruitee, or its board couldn't be found from the domain. Enter the job board URL if the company uses a supported system.
- Empty salary: the job board doesn't publish it. Greenhouse's and Workable's job board APIs do not include salary ranges; Lever, Ashby and Recruitee include them only when the company publishes them.
- Fewer jobs than expected: check the title/location keywords, "Remote jobs only" and "Maximum jobs per company" settings, and in only-new mode remember that unchanged jobs are not returned again.
- Run stopped early: the maximum cost per run was reached; raise it in the run options.
Data and legality
Jobs are read from the job boards' public APIs that companies use for their own careers pages. robots.txt is checked for every host and crawl delays are respected. No logins, no LinkedIn or Indeed. Users are responsible for using the data lawfully.
Integrations
Results can be downloaded as JSON, CSV, Excel or XML, read through the Apify API and clients, or sent to Google Sheets, Zapier, Make, Slack and webhooks with Apify integrations. Runs can be scheduled with Apify Schedules.