ATS Jobs Scraper: Greenhouse, Lever, Ashby & SmartRecruiters avatar

ATS Jobs Scraper: Greenhouse, Lever, Ashby & SmartRecruiters

Pricing

from $0.75 / 1,000 jobs

Go to Apify Store
ATS Jobs Scraper: Greenhouse, Lever, Ashby & SmartRecruiters

ATS Jobs Scraper: Greenhouse, Lever, Ashby & SmartRecruiters

Scrape job openings from Greenhouse, Lever, Ashby and SmartRecruiters company boards in one run, up to 100 companies: title, team, locations, salary where published, apply link and optional descriptions. Export JSON, CSV or Excel. $0.75 per 1,000 jobs.

Pricing

from $0.75 / 1,000 jobs

Rating

0.0

(0)

Developer

Philip Kirkbride

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Categories

Features

Limited permissions

Share

ATS Jobs Scraper

Collect public job openings from company career boards hosted on Greenhouse, Lever, Ashby and SmartRecruiters, in one run and one consistent format. Use it to compare roles and salary information across employers, watch companies for new openings, or fill a job directory.

What you get

  • One row per open job, from up to 100 company boards in a single run.
  • A single field set across all four platforms: title, company, department, team, locations, workplace type, employment type, salary fields, posting dates, job page and apply link.
  • Structured salary ranges where the platform publishes them (Ashby and Lever), plus the salary text as shown.
  • Plain-text descriptions when includeDetails is on.
  • A per-company result in the run summary, so a board that is empty or unavailable is named.

Who it is for

  • Recruiters and sourcing teams tracking openings at target companies
  • Job boards and newsletters that list roles from many employers
  • Analysts studying hiring trends by company, team, location or salary

How to run it

  1. Paste one or more company board addresses, for example https://job-boards.greenhouse.io/stripe or https://jobs.lever.co/palantir.
  2. Set how many jobs you want across all boards (default 50).
  3. Turn on descriptions if you need the job text.

The Console form is filled in with three boards (Stripe on Greenhouse, Palantir on Lever, Ashby on Ashby) and 50 jobs. That run takes a few seconds, fills the limit from the first board, and costs about $0.0425 (a $0.005 start plus 50 jobs at $0.00075).

{
"boards": [
"https://job-boards.greenhouse.io/stripe",
{"platform": "lever", "slug": "palantir"},
"https://jobs.ashbyhq.com/ashby"
],
"maxItems": 50,
"includeDetails": false
}

Boards are collected in the order you list them, and later boards are skipped once the limit is reached. To collect from every board, raise maxItems or run one board per run.

For a small SmartRecruiters collection with descriptions:

{
"boards": ["https://careers.smartrecruiters.com/smartrecruiters"],
"maxItems": 2,
"includeDetails": true
}

Cost

You pay $0.005 when the run starts and $0.00075 for each job saved to the dataset. Descriptions carry no separate charge.

RunJobsCost
Console default50$0.0425
Three boards, 50 each150$0.1175
Large watchlist1,000$0.755

Only delivered rows are charged, so an empty or unavailable board adds nothing to the bill.

Input

FieldTypeDefaultWhat it does
boardslist of 1 to 100 entriesStripe, Palantir, AshbyCompany board addresses, or objects with platform and slug.
platformgreenhouse, lever, ashby or smartrecruitersemptyUsed only when an entry is a bare slug such as stripe.
maxItemswhole number, 1 to 1000050Jobs to collect across all boards.
includeDetailstrue/falsefalseAdd a cleaned plain-text description to each row.

Supported board addresses:

  • Greenhouse: https://job-boards.greenhouse.io/<company> (US boards)
  • Lever: https://jobs.lever.co/<company> (including EU boards)
  • Ashby: https://jobs.ashbyhq.com/<company>
  • SmartRecruiters: https://careers.smartrecruiters.com/<company>

Use the company's board address, not an individual job link or a filtered search address. If a board address is wrong, the run message names that company and the other boards carry on.

Output example

Every row has the same fields:

FieldMeaning
jobIdThe platform's job ID.
platformgreenhouse, lever, ashby or smartrecruiters.
companyBoard name, or the formatted company name where the platform provides one.
titleJob title as published.
department, teamTeam information, when the board publishes it.
location, locationsMain location and all listed locations.
workplaceTypeFor example remote or hybrid, when published.
employmentTypeEmployment type as the company writes it.
salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryTextStructured pay where published, plus the salary text as shown.
postedAt, updatedAtPublication and last-update times (UTC).
url, applyUrlJob page and application page.
descriptionTextPlain-text description, with includeDetails on.

Example row:

{
"jobId": "7458d4e9-da2e-47bd-98cb-adfda43d42b2",
"platform": "ashby",
"company": "ashby",
"title": "Engineering Manager - EU",
"department": "Engineering",
"team": "EMEA Engineering",
"location": "Remote - European Union",
"locations": ["Remote - European Union", "Spain", "Italy", "Germany"],
"workplaceType": "remote",
"employmentType": "FullTime",
"salaryMin": 150000,
"salaryMax": 250000,
"salaryCurrency": "EUR",
"salaryPeriod": "1 YEAR",
"salaryText": "€150K – €250K • Offers Equity • Offers Bonus",
"postedAt": "2024-03-04T14:29:08.532000Z",
"updatedAt": null,
"applyUrl": "https://jobs.ashbyhq.com/ashby/7458d4e9-da2e-47bd-98cb-adfda43d42b2/application",
"url": "https://jobs.ashbyhq.com/ashby/7458d4e9-da2e-47bd-98cb-adfda43d42b2",
"descriptionText": null
}

Export the dataset as JSON, CSV or Excel, or read it with the Apify API.

FAQ

I listed three boards but only got jobs from the first one. maxItems was reached. Boards are collected in order and later boards are skipped, so put the companies you care about most first or raise maxItems.

Why are salary fields empty on Greenhouse and SmartRecruiters rows? Those platforms do not publish structured pay in their public board data. The description may still mention pay. Ashby and Lever rows carry ranges where the company publishes them.

Why is company a short name such as palantir? For Lever and Ashby boards the board name from the address is used, because those platforms do not return a formatted company name.

Why do the same values look different across rows? Job values keep the company's own wording, so full-time can appear as Full-time on one board and FullTime on another.

Why is a field null? The company does not publish it. Many employers leave out team, employment type or salary.

What happens when a board is wrong or empty? A confirmed board with no open jobs gives zero rows for that company. A wrong Greenhouse, Lever or Ashby slug also gives zero rows and the run carries on. An unavailable SmartRecruiters board is reported separately; if no jobs were delivered at all, the run fails with a message naming the board.

Will I see the same job twice? Within a run, jobs are deduplicated per board by job ID. Across runs, an open job appears again; use url or jobId plus platform as your unique key.

Can I run it on a schedule? Yes. A daily run over your watchlist with descriptions off is quick, and the job IDs you have seen give you a new-openings alert.

Limitations

  • Company boards on Greenhouse (US), Lever (including Lever EU), Ashby and SmartRecruiters only. EU Greenhouse boards and career sites on their own domains are not supported; use the company's board address on a supported platform instead.
  • Up to 100 boards and up to 10,000 jobs per run.
  • There are no keyword or location filters: each board returns all of its open jobs, up to your limit.
  • Large SmartRecruiters collections can take longer and return fewer jobs within run limits.
  • If a run reaches its time limit it keeps the jobs collected so far, and the run message says why it stopped.

Privacy

Only public job postings are collected. Public text is returned as published, including employer-provided names, business contacts and application instructions. Descriptions are converted to plain text.

Pricing

Pay per event: $0.005 per run start and $0.00075 per delivered job. The start charge is per GB of memory, rounded up; the default 512 MB run is one start. Result charges apply to delivered job rows; a run-start fee can still apply when no jobs are delivered.