Workday Jobs Scraper: All Jobs, Salaries & Only-New Feed
Pricing
$0.80 / 1,000 job saveds
Workday Jobs Scraper: All Jobs, Salaries & Only-New Feed
Every open job from any Workday career site, even past Workday's 2,000-result cap. Descriptions, salaries, apply links, only-new & closed-job tracking.
Pricing
$0.80 / 1,000 job saveds
Rating
0.0
(0)
Developer
vantum
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 days ago
Last modified
Categories
Features
Share
Get every open job from any company career site that runs on Workday (*.myworkdayjobs.com, *.myworkdaysite.com) as clean JSON, CSV or Excel. That includes sites with more than 2,000 jobs, where Workday itself stops showing results. Each job comes with its full description, exact posting date, all locations, remote type, req ID, apply link and the salary range when the posting states one.
Run it on a schedule with Only new jobs turned on and it becomes a job feed. Each run returns only the postings that appeared since the last run, and you pay only for those. It can also tell you which jobs were closed.
$0.80 per 1,000 jobs. No start fee. Failed sites, dry runs and closed-job rows are free.
Why this one
| This Actor | Typical Workday scrapers on the Store | |
|---|---|---|
| Sites with more than 2,000 jobs | ✅ Gets all of them. It splits the search by Workday's own filters automatically (tested: Target 14,164 of 14,175, NVIDIA 2,689 of 2,689) | Many stop at 2,000 |
| Only new jobs since the last run | ✅ Built in, with memory between runs, and you pay only for new jobs | Usually "compare the IDs yourself" |
| Closed-job detection | ✅ Optional free closed rows | Rarely |
| Start from a search URL with filters | ✅ Paste a Workday URL with location or category filters and they are kept | Usually just the site root |
| Start from a company website or name | ✅ Finds the Workday site from target.com or from a name such as "Salesforce" (best effort) | Some do names, most need the exact URL |
| Salary range | ✅ Parsed from the description (min, max, currency, hour or year) | Some |
| Dry run (count and price before you pay) | ✅ Free | Rarely |
| Price per 1,000 jobs | $0.80, no start fee | About $1 to $3 at the most used ones |
What you get
One row per job:
{"status": "open","company": "NVIDIA","hiringEntity": "2100 NVIDIA USA","tenant": "nvidia","careerSite": "NVIDIAExternalCareerSite","jobId": "Senior-Software-Engineer--AI-Infrastructure_JR2005123","reqId": "JR2005123","title": "Senior Software Engineer, AI Infrastructure","location": "US, CA, Santa Clara","locations": ["US, CA, Santa Clara", "US, WA, Seattle"],"locationCount": 2,"country": "United States of America","countryCode": "US","remoteType": "Hybrid","timeType": "Full time","postedDate": "2026-10-28","postedOnText": "Posted 3 Days Ago","url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Software-Engineer--AI-Infrastructure_JR2005123","applyUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Software-Engineer--AI-Infrastructure_JR2005123/apply","descriptionText": "NVIDIA is looking for …\n• Design and build …","salaryMin": 184000,"salaryMax": 287500,"salaryCurrency": "USD","salaryPeriod": "year","salaryText": "184,000 USD – 287,500 USD","scrapedAt": "2026-10-31T08:00:00Z"}
(The values are illustrative. The field names and shapes are exactly what the Actor returns.)
The dataset has ready-made views: Jobs (overview), Details (with descriptions), Feed changes (new and closed) and Dry run. A per-site RUN_SUMMARY in the key-value store shows how many jobs were listed, saved, new and closed, how a large site was split, and any errors.
How to use it
- Add one or more Career site URLs, for example
https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite. Any page from the site works: the home page, a search with filters or a single job. You can also paste the company website or careers page (https://www.target.com), or type company names under Company names. - Optional: narrow it down with Search keywords or Posted within N days, or cap it with Max jobs per site (the newest jobs are kept).
- Run it. To see the job count and price first, turn on Dry run, which is free.
As a daily "new jobs" feed
- Turn on Only new jobs since the last run.
- Optional: turn on First run: just remember current jobs. The first run is then free and saves nothing, and later runs return only truly new postings.
- Optional: turn on Also report closed jobs to get a free
status: "closed"row for each job that disappeared. - Save it as a task and add a schedule, for example daily at 07:00.
The memory lives in a named key-value store (default workday-jobs-feed-state) and is kept per site and per filter combination, so feeds with different keywords don't interfere. Use a different Feed memory name for each independent feed.
Input example
{"startUrls": [{ "url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite" },{ "url": "https://www.target.com" }],"companies": ["Salesforce"],"searchText": "data engineer","postedWithinDays": 7,"onlyNewJobs": true,"reportClosedJobs": true}
Pricing
Pay per event. You pay only for jobs that are saved to your dataset.
| Event | Price |
|---|---|
Job saved (job) | $0.0008 (= $0.80 per 1,000 jobs) |
Free: dry runs, the first-run baseline, closed rows, sites that fail or cannot be found, and jobs that close while the run is reading them. In Only new jobs mode you pay only for new jobs. If you set a maximum cost per run, the Actor stops cleanly at that limit and never goes over it. If the platform restarts a run, jobs that were already saved are not saved or charged again.
Examples: NVIDIA's whole site (about 2,700 jobs) costs about $2.15. A daily feed that sees 30 new jobs a day across 10 companies costs about $0.72 per month.
Use it from code
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("vantum/workday-jobs-feed").call(run_input={"startUrls": [{"url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"}],"onlyNewJobs": True,})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["title"], job["location"], job["applyUrl"])
Tips
- Full job details is on by default and costs the same. Turning it off is faster, but you get only the title, location, req ID and URL. Without details, a job open in several places shows
locationCountinstead of a location, and jobs older than 30 days have no exact date. - A Workday search URL keeps its filters, for example
…/NVIDIAExternalCareerSite?locationHierarchy1=…. That's the easiest way to get "all jobs in Germany" or "all engineering jobs". - Company-name lookup tries Workday's data centers and common site names. If a name isn't found, paste the careers URL. It is always faster and exact.
- Big sites (10,000+ jobs) take a few minutes to list. Use Dry run to see the size first.
Limitations
- Workday only. For other job systems (Greenhouse, Lever, SuccessFactors…) use a different Actor.
- Salary is read from the description text. Many postings, especially outside the US, don't state pay, and those fields stay empty instead of being guessed.
- If a site has more than 2,000 jobs in a combination that Workday cannot split any further (very rare), the run warns you in the log and the summary. In that case no jobs are marked closed for that site.
- It reads only public job postings. It does not log in, apply or read anything behind an account.
FAQ
Do I need a Workday account or an API key? No. It reads the same public JSON that the career site's own page loads in your browser.
Do I need proxies? No. Workday serves its public job data to everyone. Polite concurrency (8 parallel requests by default) and automatic retries handle rate limits.
Is jobId stable? Yes. It is Workday's own job path ID and doesn't change while the job is open. Use it as a primary key.
What happens to a job that's reposted? Workday usually gives a reposted job a new ID, so the feed reports it as new.
Why does postedDate sometimes differ from "Posted N Days Ago"? With full details on, postedDate is Workday's exact start date. Without details it is calculated from the "Posted N Days Ago" text and is left empty for "30+ Days Ago".
Open-source components
Python with HTTPX (BSD-3-Clause), Beautiful Soup (MIT), lxml (BSD-3-Clause) and the Apify SDK (Apache-2.0). It uses no third-party data sets. Workday is a trademark of Workday, Inc. This Actor is not affiliated with or endorsed by Workday.