ATS Jobs Scraper & New-Job Monitor (Greenhouse, Lever +6)
Pricing
from $2.00 / 1,000 jobs
ATS Jobs Scraper & New-Job Monitor (Greenhouse, Lever +6)
Scrape jobs from Greenhouse, Lever, Ashby, Workday, Recruitee, Workable, HERP & HRMOS career pages in one schema. Monitor mode returns only new and removed jobs.
Pricing
from $2.00 / 1,000 jobs
Rating
0.0
(0)
Developer
panda studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
ATS Jobs Scraper & New-Job Monitor
ATS Jobs Scraper collects every open job from company career pages hosted on Greenhouse, Lever, Ashby, Workday, Recruitee, Workable and the Japanese ATSs HERP and HRMOS, and returns them in one normalized schema (title, department, location, remote flag, employment type, posting date, salary when published, apply URL, optional full description). Paste a job-board URL, a provider:slug shorthand, or just the company's own careers page — the ATS is detected for you. Turn on monitor mode and each run returns only jobs that are new or removed since the last run, which makes it a cheap hiring-signal and job-alert feed. No login, no proxies, no browser.
What does ATS Jobs Scraper do?
- Resolves each input to a job board: board URLs (
boards.greenhouse.io/stripe), shorthands (lever:palantir) or a company careers page (https://www.figma.com/careers/→ Figma's Greenhouse board). - Downloads all open jobs from that board through the public endpoint the ATS uses to render its own career pages.
- Normalizes the fields across all 8 ATSs, including salary ranges (Ashby, Lever, Recruitee when the company publishes them) and employment types (Japanese values are translated with the original kept, e.g.
Full-time (正社員)). - Filters by title keywords, excluded words, location, remote-only and posting age.
- In monitor mode, remembers every job per board and outputs only the changes.
Who is it for? Use cases
| Who | Use case |
|---|---|
| B2B sales / SDRs | Hiring signals: watch 50–500 target accounts and get alerted when one posts "Head of Data" or "Salesforce Admin". Push to Slack, HubSpot or a sheet with Apify integrations. |
| Recruiters & talent intelligence | Track which competitors hire for which roles, where, and at what salary band. |
| Job boards & newsletters | Build a niche board (remote Rust jobs, AI jobs in Tokyo, ...) from first-party career pages instead of aggregators. |
| Job seekers | Get an alert the day a target company opens a matching role. |
| Japan market research | HERP and HRMOS power career pages of many Japanese startups and listed companies (e.g. IVRy on HERP, Money Forward on HRMOS). |
Why use this ATS jobs scraper?
- 8 ATSs, one schema — including HERP and HRMOS, two Japanese ATSs.
- Careers-page auto-detection — paste
https://www.figma.com/careers/and the Actor finds the embedded Greenhouse board. No need to know which ATS a company uses. - Monitor mode with new and removed jobs — detect openings and closings; you pay per company checked plus only the changed jobs.
- Filters that don't break monitoring — the memory always tracks the full board, so changing filters later does not produce a flood of "new" jobs.
- Salary normalization —
min,max,currency,intervalplus the original text. In a run on 2026-09-24, 310 of 637 jobs (OpenAI on Ashby) came with a salary range. - One bad input never fails the run — errors are listed per board in
RUN_SUMMARY. - Lightweight — JSON/HTML requests only, 256 MB memory; a Greenhouse/Lever/Ashby board is one request.
Supported ATS and accepted inputs
| ATS | Example input |
|---|---|
| Greenhouse | https://boards.greenhouse.io/stripe, https://job-boards.greenhouse.io/figma, greenhouse:stripe |
| Lever | https://jobs.lever.co/palantir, lever:palantir (EU boards: jobs.eu.lever.co/...) |
| Ashby | https://jobs.ashbyhq.com/openai, ashby:notion |
| Workday | https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, workday:nvidia.wd5/NVIDIAExternalCareerSite |
| Recruitee | https://bunq.recruitee.com, recruitee:bunq |
| Workable | https://apply.workable.com/skroutz, workable:skroutz |
| HERP (Japan) | https://herp.careers/v1/ivry, herp:ivry |
| HRMOS (Japan) | https://hrmos.co/pages/moneyforward/jobs, hrmos:moneyforward |
| Any careers page | https://www.figma.com/careers/ → detects the embedded board |
What data do you get?
| Field | Description |
|---|---|
provider, companySlug, companyName | ATS, board slug and company name |
jobId, title | Job ID on the ATS and job title |
department, team | Department / team / category as published |
location, locations, country | Primary location, all locations, country when available |
workplaceType, isRemote | remote / hybrid / onsite and a boolean, when the ATS provides it |
employmentType | Normalized, e.g. Full-time, Contract, Full-time (正社員) |
postedAt, updatedAt | ISO 8601 timestamps |
url, applyUrl | Job page and application page |
salary | {min, max, currency, interval, text} when published |
tags | ATS tags/categories |
descriptionText | Plain-text description (when includeDescription is on) |
changeType, firstSeenAt | new / removed and first-seen time in monitor mode |
scrapedAt, sourceInput | Run timestamp and the input that produced the row |
Field availability by ATS
| Field | Greenhouse | Lever | Ashby | Workday | Recruitee | Workable | HERP | HRMOS |
|---|---|---|---|---|---|---|---|---|
| title, url, jobId | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| location | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | – | ✓ |
| department / team | ✓ | ✓ | ✓ | – | ✓ | ✓ | ✓ (group) | ✓ (category) |
| postedAt | ✓ | ✓ | ✓ | ✓ (exact with description) | ✓ | ✓ | – | – |
| employmentType | – | ✓ | ✓ | with description | ✓ | ✓ | – | ✓ |
| salary | – | when published | when published | – | when published | – | – | – |
| descriptionText | ✓ | ✓ | ✓ | ✓ (+1 request/job) | ✓ | ✓ | ✓ (+1 request/job) | summary |
How much does it cost to scrape ATS jobs?
Pay per event. Platform usage is included — you only pay these events:
| Event | Price |
|---|---|
| Actor start | $0.00005 per run |
| Company checked (each job board fetched successfully in a run) | $0.001 |
| Result (each job — or each new/removed job in monitor mode — in the dataset) | $0.002 ($2 per 1,000) |
Worked examples (calculated from the prices above):
| Scenario | Jobs output | Cost |
|---|---|---|
| Figma's whole board (160 open jobs on 2026-09-24) | 160 | $0.321 |
| 4 companies with an "engineer" title filter (the example run below) | 637 | $1.278 |
| Monitor 200 companies daily, a day with 30 new/removed jobs | 30 | $0.26 per run |
| Monitor 200 companies daily, a day with no changes | 0 | $0.20 per run (≈ $6 / 30 days) |
The first monitor-mode run outputs all current jobs (that is the baseline); later runs output only changes. Set Maximum cost per run in the run options to cap spending — the Actor stops cleanly at the cap.
How to scrape jobs from Greenhouse, Lever, Ashby, Workday and more
- Click Try for free (an Apify account is free).
- Add companies to Company career pages / job boards — board URLs,
provider:slug, or careers-page URLs. - Optionally set Title must contain, Title must NOT contain, Location contains, Remote jobs only, Posted within last N days, and Include full job description.
- Click Start and download the dataset as JSON, CSV, Excel or HTML.
- For alerts: turn on Monitor mode, give it a Monitor ID, save as a Task, add a Schedule (e.g. daily 08:00) and an Integration (Slack, email, Google Sheets, webhook, Make, Zapier).
Input example
This is the exact input used for the output example below:
{"companies": ["https://www.figma.com/careers/","https://jobs.ashbyhq.com/openai","lever:palantir","https://hrmos.co/pages/moneyforward/jobs"],"titleKeywords": ["engineer", "エンジニア"],"includeDescription": true,"maxJobsPerCompany": 1000}
| Input | Default | Notes |
|---|---|---|
companies | — (required) | URLs, provider:slug, or careers pages |
includeDescription | false | Adds descriptionText (extra request per job on Workday and HERP) |
titleKeywords / excludeTitleKeywords | — | Case-insensitive, any of |
locationKeywords | — | Location contains any of |
remoteOnly | false | Only jobs marked remote |
postedWithinDays | 0 | 0 = no limit |
maxJobsPerCompany | 1000 | Cap per board |
monitorMode / monitorId | false / — | Output only changes since the last run |
emitRemoved | true | Also output removed (closed) jobs in monitor mode |
requestIntervalSecs | 0.5 | Pause between requests |
Output example
Real output from a run on 2026-09-24 with the input above: 4 boards, 637 matching jobs, 0 errors, 13 s. Descriptions are shortened here.
Ashby (OpenAI) — with a salary range:
{"provider": "ashby","companySlug": "openai","companyName": "openai","jobId": "240d459b-696d-43eb-8497-fab3e56ecd9b","title": "Research Engineer","department": "Research","team": "Research","location": "San Francisco","locations": ["San Francisco"],"country": "United States","workplaceType": null,"isRemote": null,"employmentType": "Full-time","postedAt": "2025-04-05T00:03:20+00:00","updatedAt": null,"url": "https://jobs.ashbyhq.com/openai/240d459b-696d-43eb-8497-fab3e56ecd9b","applyUrl": "https://jobs.ashbyhq.com/openai/240d459b-696d-43eb-8497-fab3e56ecd9b/application","salary": {"min": 250000, "max": 445000, "currency": "USD", "interval": "1 YEAR", "text": "$250K – $445K • Offers Equity"},"tags": [],"descriptionText": "By applying to this role, you will be considered for Research Engineer roles across all teams at OpenAI. ...","scrapedAt": "2026-09-24T14:20:04+00:00","sourceInput": "https://jobs.ashbyhq.com/openai","changeType": null,"firstSeenAt": null}
Greenhouse (found from https://www.figma.com/careers/):
{"provider": "greenhouse","companySlug": "figma","companyName": "Figma","jobId": "6178851004","title": "Data Engineer Intern (2027)","department": "Early Career","location": "San Francisco, CA • New York, NY","locations": ["San Francisco, CA • New York, NY", "US"],"postedAt": "2026-09-23T19:30:27+00:00","url": "https://boards.greenhouse.io/figma/jobs/6178851004?gh_jid=6178851004","sourceInput": "https://www.figma.com/careers/"}
Lever (Palantir) — workplace type and country:
{"provider": "lever","companySlug": "palantir","title": "Backend Software Engineer - Application Development","team": "Dev","location": "London, United Kingdom","country": "GB","workplaceType": "hybrid","isRemote": false,"employmentType": "Full-time","url": "https://jobs.lever.co/palantir/10dfc8bc-99ad-4ca2-ab76-853cb90a92c2","applyUrl": "https://jobs.lever.co/palantir/10dfc8bc-99ad-4ca2-ab76-853cb90a92c2/apply"}
HRMOS (Money Forward) — Japanese employment type translated, original kept:
{"provider": "hrmos","companyName": "株式会社マネーフォワード","jobId": "0004175","title": "【エンジニア】オープンポジション_(東京・大阪・京都・名古屋・福岡)","department": "エンジニア","location": "東京都港区芝浦3-1-21 msb Tamachi 田町ステーションタワーS 21F","employmentType": "Full-time (正社員)","tags": ["エンジニア", "オープン", "日本語", "オープンポジション(エンジニア)", "正社員"],"url": "https://hrmos.co/pages/moneyforward/jobs/0004175"}
RUN_SUMMARY (default key-value store) from the same run, shortened:
{"durationSecs": 13.0,"boards": [{"board": "greenhouse::figma", "status": "ok", "openJobs": 160, "output": 32, "removed": 0},{"board": "ashby::openai", "status": "ok", "openJobs": 828, "output": 365, "removed": 0},{"board": "lever::palantir", "status": "ok", "openJobs": 318, "output": 193, "removed": 0},{"board": "hrmos::moneyforward", "status": "ok", "openJobs": 47, "output": 47, "removed": 0}],"errors": [],"resultsPushed": 637}
Monitor mode (new job alerts and hiring signals)
- Set
monitorMode: trueand give the watch list amonitorId. - The first run outputs every open job and remembers them in a named key-value store in your own account (
ats-jobs-monitor-state). - Every later run outputs only:
changeType: "new"— jobs that were not on the board last timechangeType: "removed"— jobs that disappeared (closed or filled), ifemitRemovedis on
- If nothing changed, the dataset is empty and you pay only the start and company-checked events.
Filters only affect what is output; the memory always tracks the whole board.
Tips
- Leave
includeDescriptionoff for monitoring large Workday boards — it adds one request per job there. - Use
excludeTitleKeywords(e.g.intern,senior) to cut noise. - Not sure of the slug? Paste the company's careers page URL.
- One Task per watch list (e.g. "target accounts", "competitors") keeps the monitor state separate.
Integrations & API usage
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("panda_studio/ats-jobs-monitor").call(run_input={"companies": ["greenhouse:stripe", "https://jobs.ashbyhq.com/notion"],"titleKeywords": ["engineer"],"monitorMode": True,"monitorId": "my-accounts",})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["changeType"], job["companyName"], job["title"], job["url"])
Node.js:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('panda_studio/ats-jobs-monitor').call({companies: ['greenhouse:stripe', 'lever:palantir'],remoteOnly: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL (run and get the items in one call):
curl -X POST "https://api.apify.com/v2/acts/panda_studio~ats-jobs-monitor/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"companies": ["greenhouse:stripe"], "titleKeywords": ["engineer"]}'
MCP (Claude, Cursor, VS Code and other AI agents):
{"mcpServers": {"apify": { "url": "https://mcp.apify.com?tools=panda_studio/ats-jobs-monitor" }}}
Is it legal to scrape ATS job listings?
The Actor reads the same public job listings anyone can see on a company's career page, through the endpoints the ATS vendors provide for that purpose: Greenhouse Job Board API, Lever Postings API, Ashby job-posting API, Recruitee and Workable career-site APIs, Workday career-site JSON, and the public HERP and HRMOS career pages. It never logs in. robots.txt is checked at run time for Workday, HERP and careers-page detection. SmartRecruiters is not supported because its robots.txt disallows generic crawlers. Job postings are company information, not personal data. You are responsible for how you use the data.
FAQ
A board returns 404. The slug is wrong or the company moved to another ATS. Paste the company's careers page URL instead and the Actor will detect the current board.
Which ATS does a company use? Paste its careers page; the detected board appears in RUN_SUMMARY (e.g. greenhouse::figma).
How fast is it? Greenhouse, Lever, Ashby, Recruitee and Workable boards are one request each. Workday returns 20 jobs per request and HRMOS 100 per page. The 4-board example above took 13 s including descriptions.
Why does companyName show the slug? Lever and Ashby do not publish a display name in their API, so the slug is used.
Is salary always available? No — only when the company publishes it on Ashby, Lever or Recruitee.
Do I pay for unchanged jobs in monitor mode? No. After the first (baseline) run you pay $0.001 per company checked plus $0.002 per new or removed job.
Can I add other ATSs (iCIMS, SmartRecruiters, Personio...)? Not currently. SmartRecruiters is excluded because of its robots.txt.
Does it collect personal data? No. Only job postings (company information).
Changelog
- 0.1 — Initial release: 8 ATSs, careers-page auto-detection, filters, monitor mode with new/removed jobs, cost-cap aware stopping.