# Workday Jobs Scraper - 3,100+ Company Job Boards (`dataspace/workday-jobs-scraper`) Actor

Search jobs on Workday career sites: all 3,183 companies in a built-in directory or your own list. Filter by title, location, remote and date. Title, company, location, salary, description, apply link. Monitoring mode.

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

## Pricing

from $1.50 / 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.

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

## Workday Jobs Scraper

Search jobs on **Workday career sites** — from the companies you choose or from **all 3,183 companies in our built-in Workday directory** at once. Filter by job title, location, remote and posting date and get clean job data: **title, company, department, location, remote, employment type, salary (when published), posting date, full description and apply link**. Straight from the companies' own career sites, always fresh.

- ✅ **Search all companies** — e.g. every "data engineer" job in "Berlin" across 3,183 companies using Workday
- ✅ **Or your own list** — paste career page URLs or company names
- ✅ **Fresh data** — read live from the companies' public Workday job boards on every run, no stale database
- ✅ **Monitoring mode** — schedule daily runs and get only new postings
- ✅ **Clean, unified fields** — the same structure as our other job scrapers
- ✅ **$1.50 per 1,000 jobs**, platform usage included

### What data do you get?

| Field | Example |
|---|---|
| `title`, `company`, `department`, `team` | Senior Data Engineer · Acme · Engineering |
| `location`, `locations` | the location text as the company wrote it, e.g. "Menlo Park, CA; New York, NY" (all locations as a list) |
| `city`, `region`, `countryCode`, `country` | **parsed and standardized**: Menlo Park · California · US · United States — filter and group jobs by country or state easily |
| `workplaceType`, `isRemote` | remote / hybrid / onsite |
| `employmentType` | full-time, part-time, contract, internship |
| `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryInterval`, `salaryText` | 150000 · 200000 · USD · year — from the job board's pay range, or **read from the job description** ("The base salary range for this role is $150,000 - $200,000") when the company only writes it there |
| `postedAt`, `updatedAt` | 2026-10-05 |
| `description`, `descriptionHtml` | full job description (plain text and optional HTML) |
| `url`, `applyUrl`, `careerPage`, `jobId`, `companySlug` | links to the posting and the career site |

### How to use

**Search all companies:** leave *Companies* empty, add title keywords (and optionally locations), set *Max jobs in total*, click **Start**.

**Specific companies:** add career page URLs or short names (e.g. `https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite`) to *Companies*.

### Example input

```json
{
  "titleKeywords": ["data engineer", "analytics engineer"],
  "locationKeywords": ["berlin", "germany", "remote"],
  "postedWithinDays": 14,
  "maxJobs": 300
}
```

### Example output (real result, shortened)

```json
{
  "title": "Senior Data Engineer",
  "company": "Wellington Management Company LLP",
  "location": "Boston, MA, United States",
  "city": "Boston",
  "region": "Massachusetts",
  "countryCode": "US",
  "country": "United States",
  "workplaceType": null,
  "employmentType": "FULL_TIME",
  "salaryMin": 90000,
  "salaryMax": 180000,
  "salaryCurrency": "USD",
  "salaryInterval": "year",
  "postedAt": "2026-05-26",
  "requisitionId": "R93559",
  "url": "https://wellington.wd5.myworkdayjobs.com/eFC/job/Boston-MA-United-States/Sr-Software-Engineer_R93559-2",
  "careerPage": "https://wellington.wd5.myworkdayjobs.com/efc",
  "description": "About Us\n\nWellington Management offers comprehensive investment management capabilities that span nearly all segments of the global capital markets. Our…"
}
```

### Pricing

Pay per result: **$1.50 per 1,000 jobs**, plus a tiny start fee of $0.00005 per run. You pay only for jobs that match your filters and are saved — searching thousands of companies costs nothing extra. Platform usage (compute and proxies) is included.

| Example | Cost |
|---|---|
| 300 matching jobs from all companies | $0.45 |
| daily monitoring, ~50 new jobs per day | ~$2.25 per month |

### Monitoring new jobs

Switch on **Only new jobs** and schedule the Actor (e.g. every morning). Each run returns only postings that were not returned before — perfect for job alerts, recruiting pipelines and job boards.

### Use it via API

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("dataspace/workday-jobs-scraper").call(run_input={
    "titleKeywords": ["product manager"],
    "remoteOnly": True,
    "maxJobs": 200,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(job["company"], "|", job["title"], "|", job["location"], "|", job["url"])
```

Results also flow into Google Sheets, Airtable, Make, Zapier, n8n, webhooks or your AI agent through the Apify MCP server.

### About the company directory

The directory lists companies whose public Workday job boards appear in public web archives (Common Crawl). It is refreshed regularly. Missing a company? Add its career page to *Companies*, or open an issue and we will add it.

### FAQ

**Is it legal?** The Actor reads job postings that companies publish on their public Workday job boards for job seekers — without logging in and without bypassing any protection. It does not collect recruiter names or e-mail addresses. You are responsible for using the data in line with applicable laws and the terms of the career sites.

**Why are some fields empty?** Companies fill in different fields; salary, for example, is only present when the company publishes it.

**Need other ATS platforms too?** Use our [Career Site Jobs Scraper](https://apify.com/dataspace/career-site-jobs-scraper) — Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio and Breezy in one run.

### More scrapers by dataspace

- [Greenhouse Jobs Scraper](https://apify.com/dataspace/greenhouse-jobs-scraper) — all Greenhouse career sites
- [Lever Jobs Scraper](https://apify.com/dataspace/lever-jobs-scraper) — all Lever career sites
- [Ashby Jobs Scraper](https://apify.com/dataspace/ashby-jobs-scraper) — all Ashby career sites
- [Career Site Jobs Scraper](https://apify.com/dataspace/career-site-jobs-scraper) — 9 ATS platforms in one run
- [Google Maps Scraper](https://apify.com/dataspace/google-maps-scraper) — local businesses with phones and websites

**Like it?** If this Actor saves you time, please leave a review on the Reviews tab — it helps others find it. Found a problem? Open an issue and it will be fixed quickly.

### Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Workday, Inc. or any of the companies whose jobs it returns. Workday is a trademark of its owner and is mentioned only to describe the publicly available data source. The Actor collects only job postings that companies publish publicly for job seekers — without logging in, without solving CAPTCHAs and without collecting recruiter names or e-mail addresses. You are responsible for making sure that your use of the data complies with applicable laws (including data protection laws such as GDPR) and with the terms of the career sites.

City, region and country names are standardized with [GeoNames](https://www.geonames.org) data, licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).

# Actor input Schema

## `titleKeywords` (type: `array`):

Keep jobs whose title contains any of these words, e.g. <code>data engineer</code>, <code>product manager</code>. Leave empty for all jobs.

## `locationKeywords` (type: `array`):

Keep jobs whose location contains any of these words, e.g. <code>London</code>, <code>Germany</code>, <code>remote</code>.

## `remoteOnly` (type: `boolean`):

Keep only jobs marked as remote.

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

Keep only jobs posted in the last N days (0 = any time).

## `excludeTitleKeywords` (type: `array`):

Drop jobs whose title contains any of these words, e.g. <code>senior</code>, <code>intern</code>.

## `maxJobs` (type: `integer`):

The run stops when this many matching jobs are saved. You pay only for saved jobs.

## `companies` (type: `array`):

Search only these companies: a Workday career page URL or the company's short name, e.g. <code>https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite</code>. Leave empty to search all companies in the built-in directory.

## `searchAllCompanies` (type: `boolean`):

Search every company in the built-in directory of Workday career sites (thousands of companies). Add title or location keywords to keep results focused.

## `maxCompanies` (type: `integer`):

Limit how many directory companies are searched (0 = all). A random sample is taken each run.

## `maxJobsPerCompany` (type: `integer`):

Upper limit of matching jobs saved from one company. Default: 25 when searching the directory (so results come from many companies), 1000 for your own company list.

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

Add the full job description as plain text.

## `includeDescriptionHtml` (type: `boolean`):

Also add the description with its original HTML formatting.

## `onlyNewJobs` (type: `boolean`):

Return only jobs that were not returned in previous runs with this option on. Schedule the Actor daily to get new postings only.

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

Requests go directly first; a proxy IP is used only if a career site slows the scraper down.

## Actor input object example

```json
{
  "titleKeywords": [
    "engineer"
  ],
  "remoteOnly": false,
  "postedWithinDays": 0,
  "maxJobs": 50,
  "searchAllCompanies": true,
  "maxCompanies": 0,
  "includeDescription": true,
  "includeDescriptionHtml": false,
  "onlyNewJobs": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

One item per job opening in a unified format across all supported career sites.

## `allFields` (type: `string`):

Every job with all fields, including the full 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 = {
    "titleKeywords": [
        "engineer"
    ],
    "maxJobs": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("dataspace/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 = {
    "titleKeywords": ["engineer"],
    "maxJobs": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("dataspace/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 '{
  "titleKeywords": [
    "engineer"
  ],
  "maxJobs": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call dataspace/workday-jobs-scraper --silent --output-dataset

```

## MCP server setup

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