Greenhouse, Lever & Ashby Job Scraper API
Pricing
from $1.50 / 1,000 job results
Greenhouse, Lever & Ashby Job Scraper API
Scrape job postings across 6 ATS — Greenhouse, Lever, Ashby, Recruitee, SmartRecruiters & Personio — into one unified schema. Descriptions, salary, seniority and remote-type included. Change-detection between runs, ATS auto-detect, curated company presets. No login, no browser, pure API.
Pricing
from $1.50 / 1,000 job results
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Job Scraper — Greenhouse, Lever, Ashby, Recruitee, SmartRecruiters & Personio
Scrape job postings across 6 major ATS platforms in a single run — every job comes back in one unified schema, no matter which ATS hosted it. No login, no API key, no browser: this scraper reads each ATS's public JSON/XML endpoint directly, so it's fast, cheap and stable.
Give it a list of company slugs — or skip the research and use a preset list, or let it auto-detect the ATS for you. Get clean, enriched rows with descriptions, salary, seniority and remote-type built in. Try it free — Apify's $5/month free tier covers thousands of jobs.
What this job scraper does
- Pulls every open posting from Greenhouse, Lever, Ashby, Recruitee, SmartRecruiters and Personio boards.
- Normalizes six wildly different ATS formats into one flat schema.
- Auto-detects the ATS when you only have a company name.
- Enriches every job with seniority (intern → executive) and remote-type (remote / hybrid / onsite).
- Returns full job descriptions (plain text + HTML), salary where the ATS exposes it, department, team, employment type, apply URL and posted date.
- Change-detection between runs — get only new and newly-closed jobs.
- Curated company presets so you can start without researching slugs.
- Filters by title keyword, location, or remote-only; output profiles to keep payloads lean.
Supported ATS platforms
| ATS | Board URL | Example slug |
|---|---|---|
| Greenhouse | boards.greenhouse.io/{slug} | stripe |
| Lever | jobs.lever.co/{slug} | spotify |
| Ashby | jobs.ashbyhq.com/{slug} | ramp |
| Recruitee | {slug}.recruitee.com | bunq |
| SmartRecruiters | jobs.smartrecruiters.com/{slug} | Visa |
| Personio | {slug}.jobs.personio.de | personio |
Most multi-ATS scrapers stop at the big three. This one covers six.
What data you get
One rectangular row per job — identical keys across every ATS:
{"ats": "ashby","company": "ramp","title": "Senior Security Engineer, Cloud","location": "New York, NY (HQ)","remote": true,"remote_type": "remote","department": "Engineering","team": "Backend","employment_type": "FullTime","seniority": "senior","salary": "$211.4K - $290.6K","url": "https://jobs.ashbyhq.com/ramp/34413f8d-...","apply_url": "https://jobs.ashbyhq.com/ramp/34413f8d-...","posted_at": "2026-04-07T17:12:35.753+00:00","job_id": "34413f8d-26bf-4bbc-8ade-eb309a0e2245","global_id": "ashby:ramp:34413f8d-...","description_text": "About Ramp\n\nRamp is building...","description_html": "<p>About Ramp...</p>"}
global_id({ats}:{company}:{job_id}) is a stable key for joining, diffing and de-duplicating across runs.seniorityandremote_typeuse the ATS's native fields where present and fall back to title/location inference.salaryis filled where the ATS publishes it (Ashby has the cleanest comp data; most boards don't expose salary).
Who uses this scraper
- Job boards & aggregators — power a niche board from a curated company list; one ETL, six ATS covered.
- Sales & B2B prospecting — "company X just opened 5 engineering roles" is a hiring signal. Track accounts and route to your CRM.
- Recruiters & sourcers — pull every open role at target companies, refresh nightly with change-detection.
- Market & wage researchers — build salary and hiring datasets on a stable, enriched schema.
How to use
- Click Try for free.
- In the Input tab, either:
- add companies, e.g.
{ "ats": "greenhouse", "company": "stripe" }(omitatsto auto-detect), or - pick a preset list:
top-tech,ai-ml,devtools,fintech.
- add companies, e.g.
- Optionally set
titleKeyword,locationKeyword,remoteOnly,includeDescriptions,outputProfile, ormaxJobsPerCompany. - Click Start, then download the dataset as JSON, CSV, or Excel — or pull it via the Apify API.
Daily "new jobs only" feed
Turn on onlyNewSinceLastRun and schedule the actor (hourly/daily). The first
run snapshots the jobs; every run after that emits only new jobs
(is_new: true) and closed jobs (is_closed: true). Wire it to a webhook,
Slack, Zapier or Make for real-time hiring alerts.
How to find a company's slug
The slug is the path segment in the company's careers URL:
boards.greenhouse.io/stripe→stripejobs.lever.co/spotify→spotifyjobs.ashbyhq.com/ramp→rampbunq.recruitee.com→bunqjobs.smartrecruiters.com/Visa→Visapersonio.jobs.personio.de→personio
Why use this scraper
- Six ATS, one schema — no per-ATS glue code on your side.
- Public APIs, not HTML scraping — doesn't break on careers-page redesigns, and runs in seconds without a browser.
- Enriched out of the box — seniority, remote-type, descriptions, salary.
- Change-detection — track hiring movement, not just snapshots.
- Pay only for results — a run that finds nothing costs nothing.
Pricing
This actor uses Apify's pay-per-result model: you're charged per job row
returned, nothing for companies that come back empty. The actor reads lightweight
JSON/XML, so runs are cheap and fast. Apify's free $5/month tier covers thousands
of jobs for testing. Tip: set outputProfile to compact or minimal, or use
onlyNewSinceLastRun, to keep scheduled runs lean.
FAQ
Do I need a proxy or API key? No. All six ATS expose public job-board endpoints that need no authentication.
What output formats are available? JSON, JSONL, CSV, and Excel via the Apify dataset export, plus the Apify API.
Can I run it on a schedule?
Yes — use Apify Scheduler, and combine it with onlyNewSinceLastRun for a
new-jobs-only feed wired to a webhook.
What if I don't know which ATS a company uses?
Leave out the ats field. The actor probes each platform and uses whichever
responds — built-in ATS detection.
What happens if a company's slug is wrong or it switches ATS?
It's reported in the run summary's failedTargets and skipped — it never breaks
the run.