ATS Job Postings Scraper - 6 Platforms, Auto-Detect
Pricing
from $5.00 / 1,000 results
ATS Job Postings Scraper - 6 Platforms, Auto-Detect
Scrape live job postings from Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee & Workable. Auto-detects each company's ATS. One schema, no API key, export CSV.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Brandt May
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
ATS Job Postings Scraper - Greenhouse, Lever, Ashby & 3 More in One Run
Paste a company name, get its live job postings. This ATS job postings scraper figures out the platform for you.
What it does
This ATS job postings scraper pulls live job postings straight from company career boards across six applicant tracking systems - Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, and Workable - and normalizes every result into one schema. Give it a company name or slug and it auto-detects which ATS that company uses, then queries the public ATS job-board APIs (the same endpoints behind the careers page) with no API key required. Filter by role title, location, or remote-only, optionally attach the full job description, and export the dataset to CSV, JSON, Excel, or Google Sheets. Because it turns live openings into structured data, it doubles as a hiring signals scraper for sales prospecting and labor-market research.
Unlike single-platform tools (a Greenhouse jobs scraper, a Lever job scraper, an Ashby jobs API wrapper), you don't have to know the ATS or hunt for board tokens up front - one run covers all six.
Who it's for
- Recruiters and sourcers building candidate pipelines from live career-board openings
- Job boards and aggregators ingesting normalized postings from multiple ATS platforms at once
- Sales and BD teams using hiring signals as buying intent for prospecting
- Labor-market researchers and analysts tracking roles, locations, employment types, and salaries
- Job seekers monitoring target companies' openings over time
What you get / Output
One record per job posting. Fields:
| Field | Description |
|---|---|
ats | Which ATS the posting came from (greenhouse, lever, ashby, smartrecruiters, recruitee, workable) |
company | Company name / identifier |
title | Job title |
department | Department, where the ATS exposes it |
team | Team, where the ATS exposes it |
location | Location string as published |
remote | Remote flag set by the ATS |
employmentType | Full-time, part-time, contract, etc., where available |
postedAt | Posting timestamp |
salaryMin | Minimum salary, where published |
salaryMax | Maximum salary, where published |
salaryCurrency | Currency of the salary range |
url | Direct link to the live posting |
jobId | Unique posting ID from the source ATS |
description | Full job description as clean text (only when descriptions are enabled) |
Not every company publishes every field - department, team, salary, and employmentType depend on what the source ATS exposes.
Input / How to query
Two ways to target companies, and you can mix them in one run:
- Auto-detect (recommended): put company slugs in Companies (e.g.
stripe,spotify,ramp). The Actor tries all six platforms and finds where each company hosts its jobs - no need to know the ATS. - Direct per-platform lists: if you already know the platform, paste identifiers into the matching field to skip detection: Greenhouse board tokens, Lever companies, Ashby organizations, SmartRecruiters companies, Recruitee companies, Workable accounts.
Filters and options:
- Title contains - keep only jobs whose title matches text like
engineerorsales(case-insensitive) - Location contains - keep only jobs whose location matches text like
remoteornew york(case-insensitive) - Remote only - keep only jobs the ATS explicitly flags remote
- Include job descriptions - attach the full description as clean text; increases output size
Example use cases
- Sales intent list: run 200 target-account slugs on auto-detect, filter
titleContains = "sales", and hand your SDRs a list of companies actively hiring reps - a hiring signal that they're scaling. - Engineering sourcing pool: pull every open role across your target companies with
titleContains = "engineer"andRemote only, then export to CSV for your ATS or sourcing tool. - Aggregator ingestion: feed a list of employers and get normalized postings from Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, and Workable in one schema instead of maintaining six scrapers.
- Compensation research: collect postings with published salary ranges (
salaryMin,salaryMax,salaryCurrency) across an industry to benchmark pay by role and location. - Competitor watch: track a rival's careers page over time to see which teams and locations they're staffing up.
Recurring use & scheduling
Use Apify Schedules to run this on a cron (for example daily or weekly) against a fixed company list so you always have fresh openings.
Each run writes a full snapshot of currently live postings to its dataset. To turn snapshots into a "new vs. closed" view, dedupe downstream on the stable jobId (or url) key: postings whose jobId appears in today's run but not yesterday's are new, and jobIds that dropped off are likely closed or filled. Because jobId and url are stable per posting, this diffing is reliable across runs and easy to wire into a webhook, Google Sheet, or database.
FAQ
How do I scrape job postings from Greenhouse, Lever, and Ashby in one run?
Put the company slugs in the Companies field and run. The Actor auto-detects each company's ATS across all six supported platforms - including Greenhouse, Lever, and Ashby - and returns every posting in one normalized schema. No need to run three separate scrapers or know which platform each company uses.
How do I get job postings from a company's careers page without an API key?
Enter the company slug (usually the lowercase name from its careers URL, e.g. stripe). The Actor queries the public ATS job-board endpoints that power the careers page directly - no API key, login, or token setup required from you.
How can I find which ATS a company uses automatically?
That's the default behavior. In auto-detect mode the Actor probes all six platforms for each company slug and reports the match in the ats field on every record, so you learn the platform and get the jobs in the same run.
How do I export job postings to CSV or Google Sheets?
Every run stores results in an Apify dataset. From the run's Storage tab, export to CSV, JSON, Excel, or XML in one click, or push straight to Google Sheets via Apify's integration. The API and integrations let you automate the export on a schedule.
How do I use job postings as hiring signals for sales prospecting?
Companies posting roles in a function (sales, engineering, ops) are signaling investment and growth. Run your target-account slugs, filter with Title contains, and use the resulting list of actively-hiring companies as buying-intent signals for outreach.
How do I get only new and newly-closed jobs between runs?
Schedule recurring runs and diff on the stable jobId (or url) key: IDs present in the latest run but not the previous one are new; IDs that disappeared are likely closed or filled. The Actor emits a fresh snapshot each run; the delta is a lightweight compare in your sheet, database, or webhook handler.
Is it legal to scrape public job boards like Greenhouse and Lever?
The Actor reads only public job-board data - the same postings any visitor sees on a company's careers page - via the platforms' own public endpoints, and collects no personal candidate data. Public job data is generally low-risk to collect, but you are responsible for your own compliance, each platform's terms, and applicable laws in your use case.
How do I get salary data from job postings?
When a company publishes a salary range, it's captured in salaryMin, salaryMax, and salaryCurrency. Coverage depends on the employer - many roles omit pay, and those fields stay empty rather than being estimated.
Data source & notes
- Source: public job-board APIs of six ATS platforms - Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, and Workable - the same endpoints that render each company's public careers page.
- No API key or authentication is required.
- Coverage caveats:
department,team,employmentType, and salary fields appear only when the source ATS exposes them. Job descriptions are optional (enable Include job descriptions). Only public posting data is collected - no candidate or applicant information.
Actor: maydit/ats-job-postings-scraper (ID zkwXPahBHDRl7gxHu)