# Workday Jobs Scraper - myworkdayjobs.com API with Salary (`tenfoldfleet/workday-jobs-scraper`) Actor

Get all job postings from any Workday career site (myworkdayjobs.com): title, locations, exact post date, req ID, remote type, salary range, full description and apply URL. Filter by keyword, location or date; scrapes past the 2,000-job limit. $1.50 per 1,000 jobs; failed sites are free.

- **URL**: https://apify.com/tenfoldfleet/workday-jobs-scraper.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 job postings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Workday Jobs Scraper do?

**Workday Jobs Scraper** extracts **every job posting from any [Workday](https://www.workday.com/) career site** (`*.myworkdayjobs.com` and `myworkdaysite.com`). Paste the careers URL of NVIDIA, Salesforce, Adobe, Intel, Cisco, Mastercard, Target, Capital One or any of the thousands of companies that hire through Workday, and get a clean dataset of **job titles, locations, exact post dates, requisition IDs, remote/hybrid type, time type, salary ranges, full descriptions and apply links**.

It works like a **Workday jobs API**: it reads the same public JSON endpoints the career site itself uses. Plain HTTP, no browser, no login, so it is fast and costs **$1.50 per 1,000 jobs**.

### Why use it?

- 📈 **Job market and hiring analytics**: track how many roles a company opens, where, and in which teams.
- 🎯 **Sales prospecting**: find companies hiring for roles that signal they need your product.
- 🧲 **Recruiting and job boards**: aggregate fresh postings from many Workday employers into one feed.
- 🔔 **Daily new-jobs alerts**: run on a schedule with `postedWithinDays: 1` and get only new postings.
- 💰 **Salary research**: pay-transparency ranges are parsed into `salaryMin`, `salaryMax`, currency and interval.

What makes it different:

- **Gets past the 2,000-job limit.** Many Workday sites stop at 2,000 results and then silently repeat page 1. This scraper detects that, splits the search by location and removes duplicates, so you get far past 2,000 (about 97% of Walmart's 20,000+ postings in our test).
- **Filter by location name.** Type `Germany`, `Remote`, `Austin` or `US` and it is matched against each site's own filters. Several names return jobs in any of them. No facet IDs needed.
- **Exact post dates**, not "Posted 30+ Days Ago".
- **Shares its core fields with our [ATS Jobs Scraper](https://apify.com/tenfoldfleet/ats-jobs-scraper)** (Greenhouse, Lever, Ashby and more): `company`, `ats`, `jobId`, `title`, `location`, `remote`, `salary*`, `postedAt`, `descriptionText`, `applyUrl`. Workday adds `timeType` and `url`; ATS Jobs Scraper uses `employmentType`, `sourceUrl` and `department`/`team`.

### What data can it extract?

| Field | Example |
|---|---|
| `company` | `nvidia` (Workday tenant) |
| `title` | `Senior DFT Engineer` |
| `location`, `locations[]` | `US, CA, Santa Clara; US, TX, Austin` |
| `country`, `countryCode` | `United States of America`, `US` |
| `remote`, `remoteType` | `false`, `Hybrid` |
| `timeType` | `Full time` |
| `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryInterval` | `152000`, `241500`, `USD`, `year` |
| `postedAt`, `postedAtEstimated`, `postedOnText` | `2026-09-30T00:00:00.000Z`, `false`, `Posted Today` |
| `expiresAt` | application deadline, when the company sets one |
| `jobId`, `jobReqId` | `JR2000499` |
| `hiringOrganization` | legal entity that posts the job |
| `descriptionText`, `descriptionHtml` | full job description |
| `url`, `applyUrl` | job page and application link |

### How to scrape Workday jobs

1. Open the company's job search page (it lives on `something.wd5.myworkdayjobs.com/...`) and copy the URL from the address bar.
2. Paste one or more URLs into **Workday career site URLs**.
3. Optionally add **Search keywords**, **Locations** or **Posted within (days)**.
4. Click **Start**, then download the jobs as **JSON, CSV, Excel or HTML**, or read them through the API.

Tip: apply filters on the career site itself (job category, country, time type) and copy that URL. The filters in the URL are kept.

### How much does it cost?

You pay **$0.0015 per job** saved, which is **$1.50 per 1,000 jobs**. Each run also has a $0.00005 start fee. Sites that fail to load, wrong URLs and searches with no matches cost nothing. Apify's free plan includes monthly credit, enough for thousands of jobs. Set **Max jobs per site** or a maximum cost per run to stay within budget. Jobs whose details page fails to load are skipped and not charged.

### Input

```json
{
    "startUrls": [
        "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
        "https://salesforce.wd12.myworkdayjobs.com/en-US/External_Career_Site"
    ],
    "searchText": "engineer",
    "locations": ["United States", "Remote"],
    "postedWithinDays": 7,
    "includeDetails": true,
    "maxJobsPerSite": 500
}
```

### Output

```json
{
    "company": "salesforce",
    "ats": "workday",
    "jobId": "JR362322-1",
    "jobReqId": "JR362322",
    "title": "Chief Revenue Officer, Process Transformation",
    "location": "California - San Francisco; Illinois - Chicago; New York - New York; Georgia - Atlanta",
    "locations": ["California - San Francisco", "Illinois - Chicago", "New York - New York", "Georgia - Atlanta"],
    "country": "United States of America",
    "countryCode": "US",
    "remote": false,
    "remoteType": "Office - Flexible",
    "timeType": "Full time",
    "salaryMin": 239400,
    "salaryMax": 320200,
    "salaryCurrency": "USD",
    "salaryInterval": "year",
    "postedAt": "2026-09-30T00:00:00.000Z",
    "postedAtEstimated": false,
    "postedOnText": "Posted Today",
    "expiresAt": null,
    "hiringOrganization": "100 Salesforce, Inc.",
    "descriptionText": "To get the best candidate experience, please consider applying for a maximum of 3 roles...",
    "descriptionHtml": "<p>To get the best candidate experience, please consider applying for a maximum of 3 roles...</p>",
    "url": "https://salesforce.wd12.myworkdayjobs.com/External_Career_Site/job/California---San-Francisco/Chief-Revenue-Officer--Process-Transformation_JR362322-1",
    "applyUrl": "https://salesforce.wd12.myworkdayjobs.com/External_Career_Site/job/California---San-Francisco/Chief-Revenue-Officer--Process-Transformation_JR362322-1/apply",
    "site": "https://salesforce.wd12.myworkdayjobs.com/External_Career_Site",
    "input": "https://salesforce.wd12.myworkdayjobs.com/en-US/External_Career_Site",
    "scrapedAt": "2026-10-01T09:12:44.512Z"
}
```

Sites that cannot be scraped produce one item with an `error` field explaining why (wrong site name, no matching jobs), and are not charged. You can download the dataset as JSON, CSV, Excel or HTML.

### Tips

- **Turn off "Include full job details"** for a quick list of titles, locations, dates and links. It needs one request per 20 jobs instead of one per job, so it is much faster.
- For a **daily feed**, schedule the Actor with `postedWithinDays: 1`. Without search keywords it stops paging when it reaches older jobs. With keywords the site sorts by relevance, so every result page is checked (slower, nothing is missed).
- **Locations** take any of the given names: `["United States", "Remote"]` returns US jobs plus remote jobs. A filter already in the URL is kept, and the location names narrow it further.
- With details off, jobs posted in several places show `location: "3 Locations"` and an empty `locations` list, and `jobReqId` can be null. Turn details on for the full location list and req ID.
- **Large runs:** Workday allows a few requests per second per data center, so with details on it saves about 400 jobs per minute per data center (the `wd1`, `wd5`, ... in the URL; companies on different data centers run in parallel). The default timeout is 4 hours; raise it under **Run options** for very large multi-company runs.
- `postedAtEstimated: true` means the date was computed from "Posted N Days Ago" (only when details are off). With details on, dates are exact.
- Salary is parsed from the description, so it appears mostly for US, Canadian and other pay-transparency postings.

### FAQ

#### Which companies use Workday?

Thousands of large employers, including NVIDIA, Salesforce, Adobe, Intel, Cisco, Mastercard, Target, Capital One, Pfizer, Boeing, Disney, CVS Health, Wells Fargo, Medtronic and General Motors. If the careers page URL contains `myworkdayjobs.com` or `myworkdaysite.com`, it works.

#### Where do I find the site name?

It is the part after the domain, e.g. `NVIDIAExternalCareerSite` in `nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite`. Copy the whole address from the job list page.

#### Can I scrape a single job?

Yes. Paste the job's URL (it contains `/job/`) and you get that one posting with full details.

#### Do I need a proxy?

No. The scraper uses Workday's public job search API.

### Disclaimer

This Actor collects publicly available job postings. It does not log in or collect personal data about candidates. Use the data in line with the career sites' terms and applicable laws.

### More tools from Tenfold Fleet

| Actor | Price |
|---|---|
| [ATS Jobs Scraper - Greenhouse, Lever, Ashby & 5 More](https://apify.com/tenfoldfleet/ats-jobs-scraper) | $2 per 1,000 (job posting) |
| [Website Contact Scraper - Emails, Phones & Socials](https://apify.com/tenfoldfleet/company-contact-finder) | $8 per 1,000 (website with contacts) |
| [Google Ads Transparency Center Scraper - Competitor Ads by Site](https://apify.com/tenfoldfleet/google-ads-transparency-scraper) | $1 per 1,000 (ad scraped) |
| [Google News Scraper - Articles, Real URLs & Full Text](https://apify.com/tenfoldfleet/google-news-scraper) | $2 per 1,000 (article) |
| [Keyword Search Volume, CPC & Difficulty Checker (Bulk)](https://apify.com/tenfoldfleet/keyword-search-volume) | $5 per 1,000 (keyword with data) |
| [Remote Jobs Aggregator - RemoteOK, WWR, Himalayas & 4 more](https://apify.com/tenfoldfleet/remote-jobs-aggregator) | $1.2 per 1,000 (unique remote job) |
| [SEO Audit Tool - Technical On-Page SEO Checker & Score](https://apify.com/tenfoldfleet/seo-audit-tool) | $20 per 1,000 (page audited) |
| [Shopify Products Scraper - Prices, Variants & Stock](https://apify.com/tenfoldfleet/shopify-products-scraper) | $0.8 per 1,000 (product) |
| [Shopify App & Theme Detector - Store Analyzer & Contacts](https://apify.com/tenfoldfleet/shopify-store-analyzer) | $8 per 1,000 (shopify store analyzed) |
| [Sitemap URL Extractor - All URLs from sitemap.xml & robots.txt](https://apify.com/tenfoldfleet/sitemap-url-extractor) | $0.4 per 1,000 (url extracted) |
| [Technology Detector - Wappalyzer & BuiltWith Alternative](https://apify.com/tenfoldfleet/tech-stack-detector) | $10 per 1,000 (website analyzed) |
| [URL to Markdown - Web Page to LLM-Ready Text for AI Agents](https://apify.com/tenfoldfleet/url-to-markdown) | $1 per 1,000 (page converted) |
| [YouTube Comments Scraper - Replies, Likes & Sort by Newest](https://apify.com/tenfoldfleet/youtube-comments-scraper) | $0.6 per 1,000 (comment scraped) |
| [YouTube Transcript Scraper - Captions & Subtitles API](https://apify.com/tenfoldfleet/youtube-transcript-scraper) | $3 per 1,000 (transcript extracted) |

# Actor input Schema

## `startUrls` (type: `array`):

One Workday careers URL per line, copied from the browser address bar: https://{company}.wd{N}.myworkdayjobs.com/{site} (with or without /en-US/), wd{N}.myworkdaysite.com/recruiting/{company}/{site}, or a single job URL. A URL with filters applied on the site (e.g. ?locationCountry=...\&jobFamilyGroup=...) keeps those filters.

## `searchText` (type: `string`):

Optional. Same as typing in the site's search box, e.g. data engineer or nurse. Applied on every site.

## `locations` (type: `array`):

Optional. Location names as the sites show them, e.g. Germany, Remote, Austin or United States (US, USA, UK and GB also work). Each name is matched against the site's own location filters (whole words, case-insensitive), so it works across companies without looking up IDs. Several names = jobs in any of them. A name the site does not have is skipped with a warning in the log.

## `postedWithinDays` (type: `integer`):

Only jobs posted in the last N days. 0 = no date filter. Use 1 for a daily new-jobs feed: without search keywords the scraper stops paging once it reaches older jobs, so it is fast and cheap. With keywords the site sorts by relevance, so every result page is checked.

## `includeDetails` (type: `boolean`):

Fetch each job's page for the full description, exact post date, all locations, country, remote type, time type, salary range and hiring entity. Turn off for a faster list with title, location, post date and URL only.

## `maxJobsPerSite` (type: `integer`):

Stop after this many jobs per career site (after filters). Sites with more than 2,000 jobs are split automatically so you can get all of them.

## Actor input object example

```json
{
  "startUrls": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
    "https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"
  ],
  "postedWithinDays": 0,
  "includeDetails": true,
  "maxJobsPerSite": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
        "https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"
    ],
    "maxJobsPerSite": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/workday-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [
        "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
        "https://salesforce.wd12.myworkdayjobs.com/External_Career_Site",
    ],
    "maxJobsPerSite": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/workday-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
    "https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"
  ],
  "maxJobsPerSite": 100
}' |
apify call tenfoldfleet/workday-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tenfoldfleet/workday-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YMCHAktzDncMacM6i/builds/DVTob6XA07iCKb9o0/openapi.json
