Greenhouse, Lever & Ashby Job Scraper API | $1.50/1K
Pricing
from $1.45 / 1,000 job results
Greenhouse, Lever & Ashby Job Scraper API | $1.50/1K
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.45 / 1,000 job results
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
49
Total users
24
Monthly active users
an hour ago
Last modified
Categories
Share
Job Scraper โ Greenhouse, Lever, Ashby, Recruitee, SmartRecruiters & Personio
Built for talent intelligence teams, job aggregators, and AI pipelines that need clean, structured job data from multiple ATS platforms โ without writing a scraper per platform.
Pay per result โ $1.50 / 1,000 jobs. Try it free on the Apify free plan.
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 proxy, 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.
Use with AI agents (MCP)
This scraper is callable as a tool by AI agents (Claude Desktop, Cursor, VS Code, n8n, LangGraph, CrewAI, or any MCP-compatible client) via Apify's hosted Model Context Protocol server. An agent uses it to fetch live open-job data for a named company mid-conversation โ e.g. "list Stripe's open engineering roles" or "is company X hiring?".
Point your MCP client at this single tool:
{"mcpServers":{"apify":{"command":"npx","args":["mcp-remote","https://mcp.apify.com/?tools=bovi/greenhouse-lever-ashby-job-scraper","--header","Authorization: Bearer <YOUR_APIFY_TOKEN>"]}}}
Minimal call an agent can make (use outputProfile: "compact" to keep the response
token-lean โ drops the HTML description):
{"companies":[{"ats":"greenhouse","company":"stripe"}],"outputProfile":"compact"}
Returns clean, flat rows the agent can reason over directly:
{"ats":"greenhouse","company":"stripe","title":"Staff Engineer","location":"Remote, US","remote_type":"remote","seniority":"staff","salary":null,"posted_at":"2026-05-29","url":"https://boards.greenhouse.io/stripe/jobs/...","global_id":"greenhouse:stripe:..."}
Reliability for agents: the data comes from each ATS's official public API (not HTML
scraping), so rows don't silently break on careers-page redesigns, and every row has a stable
global_id for de-duplication. Stale/invalid company slugs are reported in failedTargets,
never as bad rows. The minimal profile trims further to just the core fields. No API key
needed inside the tool โ auth is your Apify token in the client config above.
Vs competitor comparison
| Feature | This actor | i-scraper ($1.90/1k) | nexgendata ($50/1k Lever-only) |
|---|---|---|---|
| ATS platforms | 6 (GH + Lever + Ashby + SR + Recruitee + Personio) | 3 | 1 |
parse_confidence score | Yes | No | No |
| Monitoring / delta detection | Yes (onlyNewSinceLastRun) | No | No |
| Seniority enrichment | Yes (11 levels) | Partial | No |
| Price | $1.50/1k | $1.90/1k | $50/1k |
Every record carries parse_confidence (0.0โ1.0) and warnings. This is the key differentiator vs every competitor โ your pipeline sees data quality signals before it sees broken output.
Pricing
This actor uses Apify's pay-per-result model: $1.50 / 1,000 jobs ($0.0015 per record). 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.
Integrations
Built for talent-intelligence teams and job aggregators pulling normalized job data across multiple ATS platforms in one run โ the JSON/dataset output drops into the tools you already run, no glue code:
- n8n / Make / Zapier โ trigger a run or pipe every new dataset item into 500+ apps (Google Sheets, Airtable, Slack, HubSpot, your database) with no code: n8n, Make, Zapier.
- Webhooks โ fire your own endpoint the moment a run finishes, to push results straight into your pipeline (docs).
- MCP server โ expose this actor as a tool to Claude, Cursor, or any MCP client so an AI agent can pull this data mid-conversation (guide).
- API & SDKs โ fetch the dataset as JSON, CSV, or Excel through the Apify REST API or the Python / JS SDKs.
See all Apify integrations.
Use it from your existing tools
Use with Claude Desktop / Cursor / Cline (MCP)
This actor is part of the Apify Jobs & Hiring Intelligence Suite โ a curated set of 6 actors you can load together as agent tools. Call it directly from your AI assistant via the Apify MCP server โ no Store browsing needed. Paste this into your MCP client config (e.g. claude_desktop_config.json) and restart the client:
{"mcpServers":{"apify-jobs":{"command":"npx","args":["-y","@apify/actors-mcp-server","--tools","bovi/greenhouse-lever-ashby-job-scraper,bovi/seek-jobs-scraper,bovi/naukri-jobs-scraper,bovi/xing-jobs-scraper,bovi/indeed-employer-intelligence,bovi/hiring-signal-monitor"],"env":{"APIFY_TOKEN":"YOUR_APIFY_TOKEN"}}}}
Replace YOUR_APIFY_TOKEN with your own Apify API token (free at apify.com โ Settings โ Integrations). Curated to a handful of tools so the agent selects reliably.
Works with Clay
Run this actor as an HTTP enrichment step inside a Clay table:
- Method:
POST - URL:
https://api.apify.com/v2/acts/bovi~greenhouse-lever-ashby-job-scraper/run-sync-get-dataset-items?token={{apify_token}} - Body (JSON): map your Clay columns to the actor input (see the Input section above), e.g.
{"companies": "{{clay_column}}"}
The run finishes synchronously and returns the dataset rows straight into your Clay table. It runs on Apify's cloud under your own token and usage. Synchronous runs must complete within 300 seconds.
More scrapers from our toolkit
Building a data pipeline? These actors pair well with this one โ each runs on your own Apify account with the same pay-per-result pricing, no subscription:
- Seek Jobs Scraper
- Glassdoor Scraper
- Naukri Jobs Scraper
- Indeed Employer Intelligence
- Hiring Signal Monitor
- Ashby Job Scraper
Chain any of them together from the Integrations tab (the Run succeeded trigger) to build a multi-step workflow โ one actor's output feeds the next.
