ATS Jobs Scraper: Greenhouse, Lever & Workday
Pricing
$1.00 / 1,000 jobs
ATS Jobs Scraper: Greenhouse, Lever & Workday
Scrape live job listings directly from Greenhouse, Lever, Workday & Ashby ATS boards. Pass company slugs, get clean unified job data. No login, no anti-bot, pay per job. Hiring signal & recruiting feeds. Use it as an MCP server in Claude, ChatGPT & AI agents.
Pricing
$1.00 / 1,000 jobs
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
๐ผ ATS Jobs Scraper: Greenhouse, Lever, Workday & Ashby
Overview
ATS Jobs Scraper pulls live job openings straight from employer applicant-tracking systems (Greenhouse, Lever, Workday, and Ashby) by company slug. Instead of fighting the anti-bot walls and duplicate noise of consumer job boards, it reads jobs from the same structured boards employers publish for candidates. Give it [{"slug":"stripe","board":"greenhouse"}] and it returns clean, deduplicated job records: title, location, department, employment type, remote flag, posting URL, and timestamps. No login, no CAPTCHA, no API key.
Built for recruiters, sales teams building hiring-signal lists, market intelligence, and AI agents that need live employer hiring data.
Reliability posture: blocked, empty, or failed runs are never charged. You only pay for a job record that was actually delivered.
โ No login | โ No anti-bot fight | โ First-party ATS source | โ MCP-ready for AI agents
Features
Pulls jobs from Greenhouse, Lever, Workday, and Ashby boards in one unified schema. Per-company slug input so you scan only the accounts you care about. Optional job description text, location filter, department filter, and remote-only flag. Structured fields for ATS, company slug, job ID, title, location, department, and timestamps. Same output whether you consume it via CSV, JSON, Excel, API, or MCP tool call.
How it works
Every modern employer publishes its live job openings on an applicant-tracking system: Greenhouse, Lever, Workday, or Ashby. Each of these exposes a public board per company (e.g. boards.greenhouse.io/stripe, jobs.lever.co/notion) that is stable, structured, and rate-limit friendly. This actor talks to each ATS in its native format, joins the results into one clean schema, and returns them as flat records.
Because the data comes from the employer's own board, there is no duplication across aggregators, no stale listings, and no anti-bot game. You give it the slug list, it returns the jobs.
๐งพ Input configuration
{"companies": [{ "slug": "stripe", "board": "greenhouse" },{ "slug": "notion", "board": "lever" }],"maxJobsPerCompany": 100,"includeDescription": true,"locationFilter": "United States","departmentFilter": "Engineering","remoteOnly": false}
๐ค Output format
{"ats": "greenhouse","company_slug": "stripe","job_id": "7954688","title": "Account Executive, AI Sales (Grower)","location": "San Francisco, CA","department": "1654 Account Executives (AI)","remote": false,"url": "https://stripe.com/jobs/search?gh_jid=7954688","description": "Who we are. About Stripe. Stripe is a financial infrastructure platform for businesses. Millions of companies, from the world's largest enterprises to the most ambitious startups, use Stripe to accept payments, grow their revenue, and accelerate new business opportunities. Our mission is to increase the GDP of the internet, and we have a staggering amount of work ahead...","posted_at": "2026-06-02T08:58:57-04:00","updated_at": "2026-07-13T14:37:36-04:00","scraped_at": "2026-07-15T04:14:45.761Z"}
This is a real record captured live from Stripe's Greenhouse board. Every job record contains these fields:
| Field | Description |
|---|---|
๐ท๏ธ ats | ATS source (greenhouse, lever, workday, ashby) |
๐ข company_slug | Company slug on the ATS |
๐ job_id | ATS internal job ID |
๐ title | Job title |
๐ location | Location string as posted |
๐๏ธ department | Department or team |
โฑ๏ธ employment_type | Full time, contract, part time, etc. Omitted from the record when the ATS doesn't expose a detectable value |
๐ remote | Remote flag when the ATS marks it |
๐ url | Direct link to the public job posting |
๐ description | Full posting body when includeDescription is on, otherwise plain text truncated to 500 characters |
๐
posted_at | Original posting date |
๐ updated_at | Last update timestamp |
๐ scraped_at | ISO timestamp of capture |
๐ผ Common use cases
Recruiting and talent research Watch a portfolio of competitors and get notified the day they open a role you can steal. Build a live map of hiring in a niche (e.g. all rust engineering roles across YC companies).
Sales hiring signals Trigger outbound the moment a target account opens a role in your ICP (e.g. VP Marketing at any Series B SaaS). Prioritise accounts that are hiring aggressively as a proxy for budget and growth.
Market and industry intelligence Track hiring trends by function and location across a set of employers. Benchmark team size and hiring velocity across competitors.
AI hiring copilots Give an agent live ATS data so it can answer "who's hiring for X right now?" Feed structured job posts into a search index for candidates.
๐ Getting started
- Open the actor and add company slugs in
companieswith the matchingboard(greenhouse, lever, workday, or ashby). - Set
maxJobsPerCompanyto cap volume per employer. - Optionally set
locationFilter,departmentFilter, orremoteOnlyto narrow the run. - Toggle
includeDescriptionon if you need the full posting body. - Click Start, then download the dataset as JSON, CSV, or Excel, or pull it via API or MCP.
FAQ
How do I find a company's ATS slug?
Open the company's careers page and look at the URL. boards.greenhouse.io/stripe gives slug stripe on board greenhouse. Same pattern for Lever (jobs.lever.co/notion), Ashby (jobs.ashbyhq.com/scale), and Workday.
Are the postings real time? Yes. ATS boards update the moment a recruiter opens or closes a requisition. Schedule a daily run for a live hiring feed.
Do you scrape LinkedIn Jobs or Indeed? No. Consumer job boards are duplicative, anti-bot walled, and stale. Reading straight from the employer's ATS gives you the canonical, first-party posting.
How much does it cost? Pay per job. First 10 jobs on every account are free for life, then a low per-job rate. Empty runs cost nothing.
Can I use it inside an AI agent? Yes. It is exposed as an MCP tool. See below.
Use in Claude, ChatGPT & any MCP agent
https://mcp.apify.com/?tools=themineworks/ats-jobs
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/ats-jobs').call({companies: [{ slug: 'stripe', board: 'greenhouse' },{ slug: 'notion', board: 'lever' }],maxJobsPerCompany: 100,includeDescription: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
๐ ๏ธ Complete your hiring intelligence pipeline
Pair this actor with the rest of the themineworks recruiting and sales suite:
- B2B Leads Finder: turn hiring companies into decision-maker emails and LinkedIn profiles.
- AmbitionBox Scraper: pull company reviews, salaries, and ratings for target employers.
- GitHub Repo Intelligence: cross-check engineering hiring signals with public GitHub activity.
Typical flow: ats-jobs surfaces the hiring event, b2b-leads-finder finds the right person to reach, ambitionbox-companies gives context on the employer.
Found a bug or have a feature request? Open an issue on the actor's Apify Console page or reach out through the Apify profile.