ATS Job Board Scraper — Workday, Greenhouse, Lever, Ashby
Pricing
$1.50 / 1,000 job postings
ATS Job Board Scraper — Workday, Greenhouse, Lever, Ashby
Pricing
$1.50 / 1,000 job postings
Rating
0.0
(0)
Developer
Mike
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
One actor, four ATS systems, one clean schema. Feed it a list of companies (names or board URLs) and get every open job posting from Workday, Greenhouse, Lever and Ashby as normalized records — or run it in delta mode and get only what changed since the last run: the hiring signal itself.
Why this one
- Workday is first-class, not an afterthought. Most job scrapers stop at Greenhouse/Lever because they have friendly JSON APIs. Workday hosts the careers sites of most of the Fortune 500, and this actor speaks its native
wday/cxsJSON protocol directly: automatic tenant/shard discovery from a bare company name (nvidia→nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite), full pagination past the 20-per-page cap, and relative-date normalization. - Delta mode = hiring signals. The actor persists a fingerprint of every run in a key-value store. The next delta run emits only
change: "new"andchange: "removed"postings. Schedule it daily against your prospect list and you have a live feed of who just started hiring for what — and which roles quietly disappeared. - One schema across all four sources. No per-ATS parsing on your side, ever.
Input (all of this is optional except companies)
{"companies": ["stripe","https://jobs.ashbyhq.com/openai","https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite","lever:palantir","workday:acme.wd1/AcmeCareers"],"sources": ["greenhouse", "lever", "ashby", "workday"],"keywords": ["engineer", "data"],"locations": ["Remote", "New York"],"remoteOnly": false,"mode": "delta"}
Plain names are auto-discovered on every enabled source. Companies that can't be found are reported in the log and skipped gracefully — never a crashed run.
Output sample
{"company": "nvidia","source": "workday","job_id": "JR2018037","title": "Distinguished Engineer, Storage – AI Cloud","department": null,"location": "US, CA, Santa Clara","remote": null,"employment_type": null,"posted_at": "2026-08-03","posted_raw": "Posted Today","updated_at": null,"url": "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Distinguished-Engineer--Storage---AI-Cloud_JR2018037","board_url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite","change": "new"}
Fields not exposed by a given ATS (e.g. Workday's list API has no department) are null, never missing — the schema is stable.
Use cases
- Recruiting / sourcing intel — watch competitors' boards; a burst of "new" senior postings is a roadmap leak.
- Sales signals — a company opening its first "Head of Data" or 10 sales roles is a buying trigger. Pipe delta output straight into your CRM.
- Job aggregators — normalized multi-ATS ingestion without maintaining four parsers.
- Market research — remote-work share, department mix, posting velocity across a portfolio.
Delta mode details
State lives in the named key-value store ats-jobs-workday-state under stateKey (default default). Use a different stateKey per schedule/watchlist so they don't cross-contaminate. The first delta run seeds the baseline and emits everything as new. Keep the company list stable within one stateKey — postings of a company you removed from the input will show up once as removed.
Using from Claude / MCP
Once published, call it through the Apify MCP server (https://mcp.apify.com):
{"tool": "your-username/ats-jobs-workday","input": {"companies": ["stripe", "figma"],"mode": "delta","keywords": ["machine learning"]}}
Ask your agent: "Which of my target accounts started hiring ML engineers this week?" — that's one delta run.
Pricing
Pay-per-result: $1.50 per 1,000 job postings. A daily delta watch on 50 companies typically emits a few dozen records per day — pennies. A full snapshot of 50 large boards (~25k jobs) is about $37/run... which is why delta mode exists.
Fair use & data notes
The actor only reads public, unauthenticated JSON endpoints that the career sites themselves use, with per-source rate limiting (≤ ~2 requests/second/source) and exponential backoff. Job postings are public commercial data; no candidate or personal data is touched.