ATS Jobs Scraper API: Greenhouse, Lever & Ashby + AI
Pricing
from $1.50 / 1,000 job scrapeds
ATS Jobs Scraper API: Greenhouse, Lever & Ashby + AI
Scrape every open job from any company's Greenhouse, Lever or Ashby board via their official public APIs. One clean schema with salary, remote, department, location and dates, plus optional AI seniority, skills and salary estimates.
Pricing
from $1.50 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Ibraheem Ganayim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
ATS Jobs Scraper at a glance: data from the Greenhouse, Lever and Ashby public job-board APIs · no login, no browser, no proxies · $1.50 per 1,000 jobs · optional AI with your own key · JSON, CSV, Excel export, API and MCP ready
What does the ATS Jobs Scraper do?
Scrape every open job from any company that hires through Greenhouse, Lever or Ashby. Results come back in one clean, unified schema with salary ranges, remote status, departments, locations and posting dates. You can also turn on AI enrichment, which adds seniority, job function, skills, years of experience, visa sponsorship and a salary estimate to each job.
Data comes straight from each ATS's official public job-board APIs, the same feeds that power company careers pages. There is no browser, no login and no proxy, so runs are fast, cheap and very reliable.
Why this jobs scraper?
- 3 ATS platforms, 1 schema. Greenhouse, Lever and Ashby jobs share the same fields, so you can merge thousands of companies into one dataset.
- Just paste names. Use careers-page URLs,
greenhouse:stripe-style slugs, or plain names likenotion. Plain names are auto-detected across all three platforms. - Salary data included. Native compensation fields from Ashby and Lever, plus salary parsing from description text.
- Filters built in. Keywords, locations, remote only, and posted within N days.
- Optional AI layer. Structured skills and seniority for job-market analytics, using your own LLM key.
- Company job data only. No candidate or recruiter personal data. Emails and phone numbers are stripped from descriptions.
Use cases
- Build a niche job board or job alert newsletter, for example remote AI jobs at Series B+ startups
- Track hiring signals for sales, such as which companies are hiring sales or data teams this month
- Run competitor and talent-market research on headcount growth by department and location
- Compare salary ranges by role, seniority and city
- Feed fresh job data into RAG pipelines, AI agents or recruiting tools
How to use the ATS Jobs Scraper
- Click Try for free (or Start) on this page and sign in to Apify.
- Add companies as careers-page URLs,
greenhouse:stripe-style slugs or plain names likenotion. - Optionally filter by keywords, locations, remote only or posted within N days.
- Optionally enable AI enrichment and paste your OpenAI or OpenRouter key.
- Click Start, then download results as JSON, CSV or Excel, or fetch them via the API.
Input
| Field | Description |
|---|---|
companies | Careers URLs (https://boards.greenhouse.io/stripe, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/ramp), prefixed slugs (greenhouse:stripe, lever:palantir, ashby:ramp) or plain names (notion) |
keywords | Keep only jobs whose title or description contains any of these words |
locations | Keep only jobs whose location contains any of these strings |
remoteOnly | Keep only remote jobs |
postedWithinDays | Keep only jobs posted or updated in the last N days |
includeDescription | Include the plain-text job description (default true) |
maxJobsPerCompany / maxJobsTotal | Limits, so you control spend |
enableAi, llmProvider, llmApiKey, llmModel | Optional AI enrichment with your own key |
{"companies": ["https://boards.greenhouse.io/stripe", "lever:palantir", "ashby:ramp", "notion"],"keywords": ["engineer"],"remoteOnly": false,"maxJobsPerCompany": 200}
Output example
One row per job, straight from the Greenhouse, Lever and Ashby public job-board APIs:
{"company": "Stripe","companySlug": "stripe","ats": "greenhouse","jobId": "8172503","title": "Abuse Research Engineer","department": "8611 Security Analytics","team": null,"location": "Remote from the US","allLocations": ["US"],"remote": true,"workplaceType": "remote","employmentType": null,"salaryMin": null,"salaryMax": null,"salaryCurrency": null,"salaryInterval": null,"salaryText": null,"postedAt": "2026-09-09T10:52:09-04:00","updatedAt": "2026-10-29T10:42:09-04:00","jobUrl": "https://stripe.com/jobs/search?gh_jid=8172503","applyUrl": "https://stripe.com/jobs/search?gh_jid=8172503","descriptionText": "Who we are\n About Stripe\n Stripe is a financial infrastructure platform for businesses. Millions of companies—from the world’s largest enterprises to the mos...","scrapedAt": "2026-10-31T15:04:03.392Z"}
With AI turned on, each job also gets an ai object: seniority, jobFunction, remotePolicy, skills[], yearsExperienceMin, salaryEstimate, visaSponsorship, languages[] and summary.
Export to JSON, CSV, Excel or HTML, or pull results through the Apify API, webhooks, Zapier, Make, n8n or MCP.
How much does it cost?
This Actor uses pay per event pricing: you pay only for results saved to your dataset, with no monthly fee. Apify platform compute is included.
| Event | Price |
|---|---|
| Job scraped | $0.0015 per job ($1.50 per 1,000) |
| AI enrichment | $0.002 per enriched job (plus your own LLM tokens) |
You only pay for jobs that are actually saved. The Actor stops cleanly when your max cost per run is reached.
Examples
- 1,000 jobs: $1.50
- 10,000 jobs: $15
- 1,000 jobs with AI: $3.50 plus your LLM tokens (typically cents with
gpt-4o-mini)
Apify's Free plan includes $5 of monthly usage, enough for about 3,333 jobs without AI. Set Maximum cost per run in the run options to cap spend; the Actor stops cleanly at the limit.
Use it via API, Python, n8n, Make or AI agents
Run the Actor and get results in one call (replace <APIFY_TOKEN> with your token):
curl -X POST "https://api.apify.com/v2/acts/data-drip~ats-jobs-scraper/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \-H 'Content-Type: application/json' \-d '{"companies": ["stripe", "lever:palantir", "ashby:ramp"], "keywords": ["engineer"], "maxJobsPerCompany": 50}'
from apify_client import ApifyClientclient = ApifyClient('<APIFY_TOKEN>')run = client.actor('data-drip/ats-jobs-scraper').call(run_input={"companies": ["stripe", "lever:palantir", "ashby:ramp"], "keywords": ["engineer"], "maxJobsPerCompany": 50})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
- Schedules: run it hourly, daily or weekly from Apify Schedules.
- Integrations: send results to Google Sheets, Slack, Zapier, Make, n8n or a webhook.
- AI agents (MCP): add
data-drip/ats-jobs-scraperas a tool in the Apify MCP server (https://mcp.apify.com) for Claude, Cursor and other MCP clients.
Limitations
- Covers Greenhouse, Lever and Ashby only (not Workday, LinkedIn or Indeed).
- Returns jobs that are currently open; closed postings are not archived.
- Salary fields are only as complete as each company publishes them.
FAQ
Is this legal? The Actor reads public job postings from the official, unauthenticated job-board APIs that Greenhouse, Lever and Ashby publish for exactly this purpose. It collects no personal data. You remain responsible for how you use the data.
How do I find a company's slug? It is the last part of its careers URL: boards.greenhouse.io/<slug>, jobs.lever.co/<slug> or jobs.ashbyhq.com/<slug>. You can also just type the company name.
What about Workday, LinkedIn or Indeed? They are not supported. This Actor focuses on the open ATS APIs, which never break or get blocked.
Do I need an AI key? No. Without a key the Actor runs as a fast, plain scraper and you pay only for results. To turn on AI, paste your own OpenAI or OpenRouter key into the LLM API key field. It is stored as an encrypted secret input and only used to call the provider you picked. LLM tokens are billed by your provider, not by us.
Which models work? The default is gpt-4o-mini, or openai/gpt-4o-mini on OpenRouter. Any chat model that supports JSON output works. Set it in LLM model.
A company returned 0 jobs? It either uses a different ATS or has no open roles. The log tells you which platforms were tried.
Can I schedule it? Yes. Use Apify Schedules (for example daily) and connect the dataset to Google Sheets, Slack or a webhook to get only fresh jobs.
How do I get help or request a feature? Open an issue on the Actor's Issues tab.
Related searches: greenhouse scraper, lever jobs scraper, ashby jobs api, job board scraper, ats scraper, job postings data, hiring signals, remote jobs scraper, salary data, careers page scraper.