ATS Jobs Scraper: Greenhouse, Lever & Workday avatar

ATS Jobs Scraper: Greenhouse, Lever & Workday

Pricing

$1.00 / 1,000 jobs

Go to Apify Store
ATS Jobs Scraper: Greenhouse, Lever & Workday

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

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

a day ago

Last modified

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:

FieldDescription
๐Ÿท๏ธ atsATS source (greenhouse, lever, workday, ashby)
๐Ÿข company_slugCompany slug on the ATS
๐Ÿ†” job_idATS internal job ID
๐Ÿ“„ titleJob title
๐Ÿ“ locationLocation string as posted
๐Ÿ—‚๏ธ departmentDepartment or team
โฑ๏ธ employment_typeFull time, contract, part time, etc. Omitted from the record when the ATS doesn't expose a detectable value
๐ŸŒ remoteRemote flag when the ATS marks it
๐Ÿ”— urlDirect link to the public job posting
๐Ÿ“ descriptionFull posting body when includeDescription is on, otherwise plain text truncated to 500 characters
๐Ÿ“… posted_atOriginal posting date
๐Ÿ”„ updated_atLast update timestamp
๐Ÿ•’ scraped_atISO 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

  1. Open the actor and add company slugs in companies with the matching board (greenhouse, lever, workday, or ashby).
  2. Set maxJobsPerCompany to cap volume per employer.
  3. Optionally set locationFilter, departmentFilter, or remoteOnly to narrow the run.
  4. Toggle includeDescription on if you need the full posting body.
  5. 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:

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.