ATS Jobs Scraper & Change Monitor
Pricing
from $2.00 / 1,000 company checkeds
ATS Jobs Scraper & Change Monitor
Every open job from any company's career page — Greenhouse, Lever, Ashby, Personio, Recruitee, SmartRecruiters, Workday — in one schema. Fetched live: no stale database, no ghost jobs. Monitor mode returns only new/removed/changed postings; an unreadable board is reported, never counted as zero.
Pricing
from $2.00 / 1,000 company checkeds
Rating
0.0
(0)
Developer
Захар Бараненко
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Share
ATS Jobs Scraper & Change Monitor — Workday, Greenhouse, Lever, Ashby + 3 more
Give it a list of companies — get every open job from their career pages, normalized into one clean schema. Switch on monitor mode and each scheduled run returns only what changed: new postings, removed postings, edited postings (title, location, salary). No proxies, no scraping tricks — the Actor reads the same public job-board APIs the career pages themselves use.
What you get
Each job record:
| Field | Example |
|---|---|
company / ats | stripe / greenhouse |
title | Backend Engineer, Payments |
department / team | Engineering / Payments |
location | New York · Remote |
remote | true |
employment_type | Full-time |
salary_min / salary_max / salary_currency | 140000 / 180000 / USD (where the board exposes it) |
url | direct apply link |
published_at / updated_at | ISO dates |
In monitor mode, change records add "change": "new" | "removed" | "changed".
Supported ATS — 7 platforms
- Workday —
TENANT.wd5.myworkdayjobs.com/SITE(pass the career-page URL) - Greenhouse —
boards.greenhouse.io/... - Lever —
jobs.lever.co/... - Ashby —
jobs.ashbyhq.com/... - SmartRecruiters —
careers.smartrecruiters.com/...(see the note below) - Recruitee —
COMPANY.recruitee.com - Personio —
COMPANY.jobs.personio.de
All seven were re-checked against live boards in September 2026. Two caveats worth knowing before you build on them:
- Workday is slow. It returns everything a tenant has — thousands of postings — but a small run took ~80 seconds where Ashby takes 2. Fine on a schedule, poor for anything waiting on an answer.
- SmartRecruiters cannot be trusted to say "no jobs". Its API answers
200 {"totalFound": 0}for unknown identifiers and for companies that never enabled the public postings API, exactly as it does for a company with no openings. The Actor therefore reports an empty SmartRecruiters board as an error rather than as zero jobs, so you are never told "no openings" when the truth is "could not read this".
Pass a bare slug (stripe), a career-page URL, or an explicit greenhouse:stripe.
For bare slugs the Actor probes the ATS platforms automatically and caches the
answer, so later runs are fast. Workday boards need the career-page URL (the
tenant/site pair can't be guessed from a name alone).
What a run can tell you
Every record carries a record_type, so a person or an agent can tell outcomes
apart without reading logs:
record_type | Meaning | Billed |
|---|---|---|
job | An open posting (pull mode, or the first monitor run) | per job result |
change | new / removed / changed since the previous run | per change |
warning | The board answered but returned nothing while jobs were known — previous state kept, no changes emitted | company check only |
error | The board could not be read at all; state untouched | not billed |
summary | End-of-run receipt: counts, and which companies went unchecked | not billed |
That warning row exists because a board answering with an empty list is
usually the source blinking — a migration, an unpublished board, a provider
hiccup — not every role closing at once. Diffing against it would emit a
removed for every job and a new for every job the next day. The Actor keeps
the previous state instead and only believes a zero after three consecutive
empty runs.
Two modes
Pull (default) — returns all current jobs every run. Good for one-off datasets and lead lists.
Monitor — the first run saves a baseline; every later run compares and returns only the diff. Put the Actor on a daily schedule and pipe the dataset into Slack, n8n, Make or a webhook: you get pinged the day a company opens (or quietly closes) a role. You pay cents for the change records instead of re-downloading a 500-job board every day.
Who uses this
- Recruiting agencies — a company opening 5 sales roles is a placement opportunity. Be first.
- B2B sales / GTM teams — job postings are buying signals: a new Head of Data means data-tooling budget. Watch your target accounts' hiring instead of paying $99+/mo for a signals platform.
- Job seekers (power users) — watch your 30 dream companies and apply on day one, not when the posting hits aggregators.
- Analysts & founders — track competitors' headcount moves by department.
- AI agents — callable via Apify MCP: “what is company X hiring for right now?”
Pricing
Pay per event, no subscription:
| Event | Price | When |
|---|---|---|
| Company checked | $0.002 | each company successfully fetched |
| Job result | $0.001 | each job row (pull mode, first baseline, or optional snapshot) |
| Change found | $0.008 | each new / removed / changed posting in monitor mode |
Typical spend: watching 100 companies daily with ~10 changes a day ≈ $8–9/month. Companies that fail (no supported board found) are never charged.
Example: Slack alert on a competitor's new job (n8n)
- Schedule this Actor daily with your watchlist, mode =
monitor. - n8n → Apify node: “Get dataset items” from the last run, filter
record_type = change,change = new. - Slack node: post
{{company}} just opened: {{title}} ({{location}}) — {{url}}.
The same three steps work in Make, Zapier or a plain webhook.
Input example
{"companies": ["linear", "https://jobs.lever.co/spotify"],"mode": "pull"}
FAQ
Where does the data come from? From the public job-board APIs of each ATS — the same JSON the company's own careers page loads. No login, no proxies, no personal data: only public job postings.
A company isn't found? Its careers site runs on an ATS we don't support yet or uses a custom board. You are not charged for it. Tell us in the Issues tab — the next ATS integrations are prioritized by requests.
Workday returns nothing for a bare slug? Workday needs the full career-page
URL (e.g. https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite) —
copy it from the company's careers site.
How do I reset the monitor baseline? Delete the ats-jobs-monitor-state
key-value store in your Apify console (Storage → Key-value stores) — the next run
rebuilds it.