# Workday Jobs Scraper (`lergassy/workday-jobs-scraper`) Actor

Scrape jobs from any company career site on Workday (NVIDIA, Salesforce, Adobe, banks, pharma, retail — 10,000+ employers): title, location, posting date, requisition id, time type, remote type, full description and apply link. Give it career-site URLs and keywords. JSON/CSV, no login.

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

## Pricing

from $0.70 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

Scrape jobs from **any Workday career site** — NVIDIA, Salesforce, Adobe, Netflix, banks, pharma, retail chains: more than 10,000 employers publish their openings on `<company>.wd#.myworkdayjobs.com`. Paste the career-site URLs, add keywords, get one flat row per job with title, location, posting date, requisition id and, with the add-on, the full description, time type, remote type and apply link. The Actor talks to the same JSON endpoints the career site itself uses — no login, no browser, no proxy.

### What data can it extract

| Field | Example |
|---|---|
| `title`, `company`, `careerSite`, `url` | Director, Engineering – Software Engineering · nvidia · NVIDIAExternalCareerSite · https://nvidia.wd5.myworkdayjobs.com/… |
| `location`, `locationFull`, `additionalLocations`, `country` | 2 Locations · Vietnam, Hanoi · \["Vietnam, Ho Chi Minh City"] · Vietnam |
| `postedOn`, `postedAt`, `startDate`, `requisitionId` | Posted 30+ Days Ago · 2026-08-26 · 2026-07-10 · JR2021061 |
| `timeType`, `remoteType`, `hiringOrganization` | Full time · null · NVIDIA |
| `description`, `descriptionHtml`, `applyUrl` | full posting text (add-on) |

Measured on 25 Sep 2026: NVIDIA lists 2,000 jobs for "engineer", Salesforce 832, Adobe 383. Listings come 20 per request; the full posting is one request per job.

### How much does it cost

**$1.00 per 1,000 jobs** (FREE plan; $0.60 on Diamond). The full posting is an add-on at **$0.50 per 1,000**. Nothing per run, per site or per page; rows that fail are free. The free Apify plan ($5 credit) covers about 3,300 jobs with full postings.

#### Bulk export: what 50,000 jobs actually cost (25 Sep 2026)

| Actor | Per job | Per run | 50,000 jobs, 100 runs |
|---|---|---|---|
| **Workday Jobs Scraper (this one)** | $0.001 (+$0.0005 full posting) | $0 | **$50** ($75 with full postings) |
| fantastic-jobs/workday-jobs-api (most used) | $0.002 | $0 | $100 |
| miladamirzadeh/workday-job-scraper-fast-edition | $0.001 | $0.00005 | $50.01 |
| shahidirfan/Workday-Job-Scraper | $0.00099 | $0.0005 | $49.55 |

Prices are FREE-plan prices from each Actor's page on the date above; two smaller Actors match our per-row price.

### How to scrape Workday jobs

1. Paste career-site URLs (any page of `company.wd#.myworkdayjobs.com/<site>` works).
2. Add keywords, or leave them empty for every job on the site. Turn **Full posting** off if you only need the listing.
3. Run and download JSON, CSV or Excel, or read the dataset through the API.

#### Input

```json
{ "careerSiteUrls": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite", "https://adobe.wd5.myworkdayjobs.com/external_experienced"],
  "keywords": ["engineer", "marketing"], "maxJobsPerSite": 500, "includeDescription": true, "postedWithinDays": 7 }
```

#### Output

```json
{ "type": "job", "id": "Director--Engineering---Software-Engineering_JR2021061", "title": "Director, Engineering – Software Engineering",
  "url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/Vietnam-Hanoi/Director--Engineering---Software-Engineering_JR2021061",
  "company": "nvidia", "location": "2 Locations", "locationFull": "Vietnam, Hanoi", "additionalLocations": ["Vietnam, Ho Chi Minh City"], "country": "Vietnam",
  "postedOn": "Posted 30+ Days Ago", "postedAt": "2026-08-26", "requisitionId": "JR2021061", "timeType": "Full time",
  "description": "NVIDIA is widely recognized as one of the world's most desirable employers…", "applyUrl": "https://nvidia.wd5.myworkdayjobs.com/…/apply" }
```

### Use cases

#### Job aggregators

Hundreds of employer sites on one schedule; `id` is stable, so re-runs add only new postings.

#### Sales intelligence

Who is hiring for what: a spike of "data engineer" postings at a target account is a buying signal.

#### Recruiters

Requisition ids and posting dates per employer, exported to a sheet every morning.

#### AI agents

Call it through the Apify MCP server or x402 with a URL and a question and get structured rows.

### Integrations

Apify API and clients (Python, JavaScript), n8n, Make, Zapier, Google Sheets, webhooks, Apify MCP server.

```bash
curl -X POST "https://api.apify.com/v2/acts/lergassy~workday-jobs-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" -d '{"careerSiteUrls":["https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"],"keywords":["account executive"],"maxJobsPerSite":100}'
```

### Limits and troubleshooting

- Only Workday-hosted sites (`*.myworkdayjobs.com`, `*.myworkdaysite.com`). A URL that is not one returns a free error row.
- A wrong site name (the first path segment after the host) returns a free error row with the HTTP code — copy the URL from the employer's careers page.
- The posting date is what the site shows ("Posted 3 Days Ago"), so `postedAt` is accurate to the day and "30+ Days Ago" is stored as 30 days.

### ❓ FAQ

#### Is it legal to scrape Workday career sites?

The Actor reads job postings that employers publish for any visitor and collects no personal data. Use the data in line with each employer's terms and your local law.

#### How do I find an employer's Workday site?

Open the company's careers page; if the job links go to `something.wd5.myworkdayjobs.com/...`, paste that link.

#### Can it list every job on a site?

Yes — leave keywords empty and raise **Max jobs per site**.

### Your feedback

If a site fails or a field is missing, open an issue on the Actor page — fixes usually ship the same day. A ⭐ review helps other people find the Actor.

### You might also like

| Actor | What it does |
|---|---|
| [Jobs API](https://apify.com/lergassy/jobs-api) | Indeed, LinkedIn, Greenhouse, Lever, Ashby and more in one run |
| [Wellfound Jobs Scraper](https://apify.com/lergassy/wellfound-jobs-scraper) | Startup jobs with salary and company stage |
| [LinkedIn Jobs Scraper](https://apify.com/lergassy/linkedin-jobs-scraper) | LinkedIn job search without a login |
| [SEEK Jobs Scraper](https://apify.com/lergassy/seek-jobs-scraper) | Australia and New Zealand job ads |

# Actor input Schema

## `careerSiteUrls` (type: `array`):

Workday career sites, one per employer: https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, https://salesforce.wd12.myworkdayjobs.com/External_Career_Site. Any page URL from the site works — the Actor keeps the host and site name.

## `keywords` (type: `array`):

Search terms, one search each per site. Empty = every job on the site.

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

Stop each search after this many jobs (20 per request).

## `includeDescription` (type: `boolean`):

Fetch the full description, time type, remote type, country, apply link and requisition id for every job — one extra request per job, add-on $0.50 per 1,000.

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

0 = any time. Uses the 'Posted N days ago' label of the listing.

## `maxItems` (type: `integer`):

Hard stop for the whole run.

## `proxyConfiguration` (type: `object`):

Not needed: Workday sites answer plain requests. Add a proxy only if your own network is blocked.

## Actor input object example

```json
{
  "careerSiteUrls": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
  ],
  "keywords": [
    "engineer"
  ],
  "maxJobsPerSite": 40,
  "includeDescription": true,
  "postedWithinDays": 0,
  "maxItems": 100000,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `rows` (type: `string`):

One row per job posting from the given Workday career sites.

# 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 = {
    "careerSiteUrls": [
        "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
    ],
    "keywords": [
        "engineer"
    ],
    "maxJobsPerSite": 40,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("lergassy/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 = {
    "careerSiteUrls": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"],
    "keywords": ["engineer"],
    "maxJobsPerSite": 40,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("lergassy/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 '{
  "careerSiteUrls": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
  ],
  "keywords": [
    "engineer"
  ],
  "maxJobsPerSite": 40,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call lergassy/workday-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lergassy/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/DhWtRe1fVK9EN7bMJ/builds/ir29dL7YbhyX6YSYI/openapi.json
