# Workday Jobs Scraper & API (`parsebird/workday-jobs-scraper`) Actor

Scrape Workday job listings and direct job pages. Extract titles, descriptions, locations, salary text, apply URLs, and public employer emails. Export JSON, CSV, Excel.

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

## Pricing

from $0.90 / 1,000 job scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

### Workday Jobs Scraper with Emails

Scrape public [Workday](https://www.workday.com/) career sites and job detail pages. Extract job titles, descriptions, locations, requisition IDs, salary bands when published, apply URLs, similar jobs, and public employer emails for recruitment analytics, job monitoring, and lead generation.

<table><tr>
<td style="border-left:4px solid #0F2D63;padding:12px 16px;font-weight:600">
Collect structured Workday job data from tenant career boards, filtered listing URLs, direct job pages, and company careers pages that redirect to or embed Workday.
</td>
</tr></table>

</br>

<table>
<tr>
<td colspan="3" style="padding:10px 14px;background:#0F2D63;border:none;border-radius:4px 4px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">ParseBird Jobs & Leads Suite</span>
<span style="color:#D6D3D1;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Job data, hiring signals, and public contact discovery</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;border-right:none;border-top:none;vertical-align:top;width:33%;background:#F5F5F4">
<img src="https://images.apifyusercontent.com/i8UNvqFGH8vShIu593aYLhQyzfRj1yP24PdGEGd6Lbw/cb:1/aHR0cHM6Ly9hcGlmeS1pbWFnZS11cGxvYWRzLXByb2QuczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vc2ZucEJvV2tRWE1rU1V2ZnQtYWN0b3ItN1cyanJGMWYybjY5S1hScEstVG52OGJxUWdDRy04NTkzNDY4MDAyNDA2XzI2OGIxNjIzZDNkOTFkYjJhZTI5XzUxMi5wbmc.png" width="20" height="20" style="vertical-align:middle"> &nbsp;<a href="https://apify.com/parsebird/workday-jobs-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Workday Jobs Scraper</a><br>
<span style="color:#1C1917;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%">
<img src="https://images.apifyusercontent.com/7vM76SdxVlG3qJ5efAqQ9-kq3FOvIZVuStSghezJi_M/rs:fill:250:250/cb:1/aHR0cHM6Ly9hcGlmeS1pbWFnZS11cGxvYWRzLXByb2QuczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vc2ZucEJvV2tRWE1rU1V2ZnQtYWN0b3ItbVQzMllGTUZXT29oUnhkMEsteHlISzZnRGthWC1zdmdfaW1hZ2VfLV8yMDI2LTA1LTE0VDE4MzkxNC41MDgucG5n.webp" width="20" height="20" style="vertical-align:middle"> &nbsp;<a href="https://apify.com/parsebird/hiring-cafe-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Hiring.cafe Scraper</a><br>
<span style="color:#78716C;font-size:11px">Aggregated jobs across many ATS platforms</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;border-top:none;vertical-align:top;width:33%">
<img src="https://images.apifyusercontent.com/VT-VK8D-HcdW5F_GUqg4jFScA9_zLs_wi3XD6LGtUBo/rs:fill:250:250/cb:1/aHR0cHM6Ly9hcGlmeS1pbWFnZS11cGxvYWRzLXByb2QuczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vc2ZucEJvV2tRWE1rU1V2ZnQtYWN0b3ItWXZLVkpIVDU1Qktqem5VRzktSERQbVBqSllmRy1zdmdfaW1hZ2VfLV8yMDI2LTA2LTIwVDExMjU0NC4zNzEucG5n.webp" width="20" height="20" style="vertical-align:middle"> &nbsp;<a href="https://apify.com/parsebird/website-contact-finder" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Website Contact Finder</a><br>
<span style="color:#78716C;font-size:11px">Public emails, phones, and social links</span>
</td>
</tr>
</table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

````

Apify Actor: parsebird/workday-jobs-scraper - scrapes Workday career sites and public job pages with optional public employer email discovery. Call via ApifyClient: client.actor("parsebird/workday-jobs-scraper").call(run\_input={"startUrls":\["https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite","https://accenture.wd103.myworkdayjobs.com/en-US/AccentureCareers?jobType=fullTime\&searchText=engineer"],"maxItems":100,"language":"en-US","proxy":{"useApifyProxy":true}}). Inputs: startUrls (string\[], required), maxItems (integer, default 1000 per listing URL), language (Workday locale, default en-US), proxy (Apify proxy object). Output: rowType, sourceSearchUrl, jobReqId, jobUrl, externalPath, sourceSite, totalJobsForUrl, title, description HTML, postedOn, startDate, timeType, jobPostingSiteId, canApply, employer, location, salary, applyUrl, applyType, similarJobs, emails, emailSources, scrapedAt. API docs: https://docs.apify.com/api/v2 Token: https://console.apify.com/settings/integrations

````

### What is Workday Jobs Scraper with Emails?

**Workday Jobs Scraper with Emails** is an [Apify Actor](https://apify.com/actors) that extracts structured job data from public Workday career sites such as [NVIDIA's Workday board](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite). It supports Workday listing URLs, filtered Workday URLs, direct job detail URLs, and company career pages that redirect to or embed a Workday board.

Use it as a **Workday jobs data extraction tool** for hiring intelligence, talent market research, competitor monitoring, and recruiting operations. Workday does not offer a universal public API for every employer; this scraper uses the same public JSON endpoints that Workday career pages use in the browser.

### What can Workday Jobs Scraper with Emails do?

- Scrape Workday job listings from tenant career boards such as `nvidia.wd5.myworkdayjobs.com` or `accenture.wd103.myworkdayjobs.com`.
- Accept filtered Workday URLs with `searchText` and supported facet query strings such as `jobType=fullTime`.
- Fetch direct Workday job detail URLs and emit one dataset row per job.
- Auto-detect Workday boards from company careers pages when the page redirects to, links to, or embeds Workday.
- Extract job descriptions, requisition IDs, locations, posting dates, employment type, apply status, similar jobs, and salary bands when the employer publishes them.
- Discover public employer emails from employer-owned websites, careers pages, contact pages, and about pages when those pages are available.
- Run on a schedule with [Apify Schedules](https://docs.apify.com/platform/schedules), access results through the [Apify API](https://docs.apify.com/api/v2), and connect data to [Apify Integrations](https://docs.apify.com/platform/integrations).
- Download results as JSON, CSV, Excel, XML, HTML, or RSS from Apify datasets.

### What data can you extract from Workday?

| Field | Description |
|-------|-------------|
| `jobReqId` | Workday requisition ID, usually stable within a tenant |
| `jobUrl` | Canonical Workday job detail and apply URL |
| `sourceSearchUrl` | Listing URL that produced the row, or `null` for direct detail URLs |
| `externalPath` | Workday path tail under `/job/` |
| `sourceSite` | Workday tenant and cluster host |
| `totalJobsForUrl` | Total jobs Workday reports for the source listing URL |
| `title` | Job title |
| `description` | Full Workday job description HTML |
| `postedOn` | Workday posting display string, such as `Posted Today` |
| `startDate` | Start date when Workday publishes it |
| `timeType` | Workday employment label, such as `Full time` |
| `canApply` | Whether Workday says the job can still accept applications |
| `employer` | Employer name, tenant slug, careers URL, and published organization URL |
| `location` | Primary and additional job locations |
| `salary` | Parsed salary range when present in the description text |
| `applyUrl` | Canonical Workday detail URL |
| `applyType` | Always `internal`, because Workday hosts the apply flow |
| `similarJobs` | Similar jobs surfaced by Workday when available |
| `emails` | Public emails found on employer-owned pages |
| `emailSources` | Pages where public emails were found |
| `scrapedAt` | ISO extraction timestamp |

### How to scrape Workday jobs

1. Open [Workday Jobs Scraper with Emails](https://apify.com/parsebird/workday-jobs-scraper) and click **Try for free**.
2. Paste Workday listing URLs, direct job URLs, or company career pages into `startUrls`.
3. Set `maxItems` to control how many job rows are emitted per listing URL. Direct job URLs emit one row each.
4. Choose a `language` such as `en-US`, `de-DE`, or `fr-FR`. Workday returns localized content only when the employer published that language.
5. Keep the default Apify datacenter proxy enabled for efficient Workday scraping. Switch to Residential only if a tenant needs a specific geo or blocks datacenter traffic.
6. Run the scraper and download results from the dataset as JSON, CSV, or Excel, or retrieve them through the Apify API.

Example input:

```json
{
  "startUrls": [
    "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite",
    "https://accenture.wd103.myworkdayjobs.com/en-US/AccentureCareers?jobType=fullTime&searchText=engineer",
    "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-CPU-Performance-Architect_JR2018189"
  ],
  "maxItems": 100,
  "language": "en-US",
  "proxy": {
    "useApifyProxy": true
  }
}
````

### How Workday job scraping works

1. **Classify input URLs** - The actor separates Workday listing URLs, direct job detail URLs, and company careers pages. If a company careers page redirects to or embeds Workday, the actor unwraps the underlying Workday URL.
2. **Pre-fetch tenant facets** - The first listing request uses `limit: 1` and reads Workday's `facets` payload. Friendly query labels such as `jobType=fullTime`, `jobType=Full-Time`, or `jobType=full time` are resolved case-insensitively to the tenant's internal facet values where Workday exposes the mapping.
3. **Paginate listings** - The actor posts to `/wday/cxs/{tenant}/{site}/jobs` with `limit: 20`, `offset`, `searchText`, and `appliedFacets`. Workday listing responses are walked in 20-item chunks until `maxItems` is reached or no more jobs are returned.
4. **Fetch job details** - Each listing item is enriched through `/wday/cxs/{tenant}/{site}/job{externalPath}` to collect the full job payload, including `jobPostingInfo`, `hiringOrganization`, and `similarJobs` when available.
5. **Map and emit rows** - Listing summary, detail payload, canonical URL, salary parsing, apply metadata, and email enrichment are combined into one dataset row per `externalPath`.
6. **Keep input order** - URLs are processed in the order you paste them. Each URL's rows are written as one ordered block, and a per-URL report is saved to the key-value store.
7. **Discover public emails** - When Workday provides an employer website or the input was a company careers page, the actor scans employer-owned pages for public emails. It does not invent or infer email addresses.

### Input / Output

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrls` | string\[] | **Yes** | - | Workday listing URLs, filtered listing URLs, direct job detail URLs, or company careers pages that lead to Workday |
| `maxItems` | integer | No | `1000` | Maximum rows emitted per listing URL. Direct detail URLs emit one row each |
| `language` | string | No | `en-US` | Preferred Workday locale sent as `Accept-Language`; this is a preference, not a translator |
| `proxy` | object | No | Apify datacenter | Proxy configuration. Use Residential only when a specific tenant requires it |

Output example:

```json
{
  "rowType": "job",
  "sourceSearchUrl": "https://accenture.wd103.myworkdayjobs.com/en-US/AccentureCareers?jobType=fullTime&searchText=engineer",
  "jobReqId": "JR2018189",
  "jobUrl": "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-CPU-Performance-Architect_JR2018189",
  "externalPath": "/US-CA-Santa-Clara/Senior-CPU-Performance-Architect_JR2018189",
  "sourceSite": "nvidia.wd5.myworkdayjobs.com",
  "totalJobsForUrl": 2000,
  "title": "Senior CPU Performance Architect",
  "description": "<div><p><span>Do you want to help drive the development of CPU technology...",
  "postedOn": "Posted Today",
  "startDate": "2026-05-22",
  "timeType": "Full time",
  "jobPostingSiteId": "NVIDIAExternalCareerSite",
  "canApply": true,
  "employer": {
    "name": "2100 NVIDIA USA",
    "tenantSlug": "nvidia",
    "careersUrl": "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite",
    "url": ""
  },
  "location": {
    "text": "US, CA, Santa Clara",
    "additional": ["US, TX, Austin", "US, OR, Hillsboro"]
  },
  "salary": {
    "rawText": "$184,000 - $282,000 USD per year",
    "min": 184000,
    "max": 282000,
    "currency": "USD",
    "period": "year"
  },
  "applyUrl": "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-CPU-Performance-Architect_JR2018189",
  "applyType": "internal",
  "similarJobs": [
    {
      "title": "GPU Performance Architect",
      "externalPath": "/US-CA-Santa-Clara/GPU-Performance-Architect_JR2014567"
    }
  ],
  "emails": [],
  "emailSources": [],
  "scrapedAt": "2026-05-22T21:05:44.129Z"
}
```

Download results in JSON, CSV, Excel, XML, HTML, or RSS, or access them through the [Apify API](https://docs.apify.com/api/v2).

### How to use via API - Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("parsebird/workday-jobs-scraper").call(run_input={
    "startUrls": [
        "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite",
        "https://accenture.wd103.myworkdayjobs.com/en-US/AccentureCareers?searchText=engineer",
    ],
    "maxItems": 100,
    "language": "en-US",
})

for job in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(job["title"], job["jobUrl"], job.get("emails", []))
```

### How to use via API - JavaScript

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('parsebird/workday-jobs-scraper').call({
    startUrls: [
        'https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite',
        'https://accenture.wd103.myworkdayjobs.com/en-US/AccentureCareers?searchText=engineer',
    ],
    maxItems: 100,
    language: 'en-US',
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((job) => {
    console.log(`${job.title} - ${job.jobUrl} - ${job.emails.join(', ')}`);
});
```

### How much does it cost to scrape Workday jobs?

Workday Jobs Scraper with Emails uses [pay-per-event pricing](https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event). Each dataset row is one paid result. New Apify users may receive free platform credit, which can be used to try Apify Store actors.

**How much does it cost to scrape 1,000 Workday jobs?**

Free, Bronze, and Silver users pay $1.00 per 1,000 rows. Gold users pay $0.90 per 1,000 rows.

**What counts as one paid result?**

One emitted job row counts as one result. A direct detail URL emits at most one row. A listing URL can emit up to `maxItems` rows.

### Pricing

| Plan | Event | Price per event | Price per 1,000 |
|------|-------|----------------|-----------------|
| Free, Bronze, Silver | `job-scraped` | $0.001 | **$1.00** |
| Gold | `job-scraped` | $0.0009 | **$0.90** |

Free-tier users are capped at 100 total rows through the Apify monetization configuration.

### Is it legal to scrape Workday jobs?

**Can I scrape public Workday job postings?**

This actor extracts publicly available job posting data from employer career pages hosted on Workday. It does not log in, access private accounts, or bypass paywalls. Users are responsible for ensuring their use of extracted data complies with applicable laws, Workday terms, and each employer's terms in their jurisdiction.

For general background, read Apify's guide on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Notes and limitations

**Why do some jobs appear multiple times for different locations?**

Workday can return one entry per job and location combination when a requisition is open at multiple sites. Use `jobReqId` downstream if you want one row per requisition.

**Why is salary sometimes empty?**

Salary publication depends on employer, region, and job description content. Pay transparency rules can increase salary availability in some regions, but many Workday postings do not publish salary bands. When no salary range is found, `salary` is `null`.

**Why are emails sometimes empty?**

Emails are collected only from public employer-owned pages. If Workday does not publish an employer website and the input was only a Workday tenant URL, or if the employer site does not expose emails, `emails` is an empty array.

**How does the apply flow work?**

Workday hosts the apply form on the same tenant subdomain as the job page. The actor sets `applyUrl` to the canonical Workday detail URL and `applyType` to `internal`.

**Can I use tenant-specific facet UUIDs?**

Yes. If you know a tenant's internal facet UUID, pass it as a query string parameter like `?appliedFacet_locationMainGroup={UUID}` and the actor passes it through.

### Related Actors

Looking for more job scraping and public contact extraction tools? Try these ParseBird actors:

- [Hiring.cafe Scraper](https://apify.com/parsebird/hiring-cafe-scraper) - Scrape aggregated job listings across many ATS platforms
- [Bayt Jobs Scraper](https://apify.com/parsebird/bayt-jobs-scraper) - Scrape Middle East job listings from Bayt.com
- [Xing Jobs Scraper](https://apify.com/parsebird/xing-jobs-scraper) - Scrape jobs across the DACH region
- [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) - Find public emails, phones, and social profiles from websites
- [Browse all ParseBird actors](https://apify.com/parsebird)

### FAQ

**What Workday URL formats are supported?**
Listing URLs like `/en-US/{site}`, filtered listings with `searchText`, direct detail URLs like `/en-US/{site}/job/{location}/{slug}_{reqId}`, and company careers pages that link to Workday.

**Does the actor translate job descriptions?**
No. The `language` setting is sent as a Workday locale preference. Workday returns localized content only when the employer published that version.

**Does Workday have a hard pagination limit?**
Workday listing calls return jobs in chunks of 20. The actor paginates those chunks until `maxItems` is reached or Workday returns no more jobs.

**Can I schedule recurring Workday monitoring?**
Yes. Use [Apify Schedules](https://docs.apify.com/platform/schedules) to run daily, weekly, or at a custom interval, then compare datasets over time.

**Can I connect results to Google Sheets, Slack, or a database?**
Yes. Use [Apify Integrations](https://docs.apify.com/platform/integrations), webhooks, or the API to send Workday job data to your downstream systems.

**What export formats are available?**
Apify datasets can be exported as JSON, CSV, Excel, XML, HTML, and RSS.

**Where can I report a bug or request a feature?**
Open an issue on the [Issues tab](https://apify.com/parsebird/workday-jobs-scraper/issues) with the input URL, run ID, and expected behavior.

# Actor input Schema

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

Add Workday listing URLs, filtered listing URLs, direct job detail URLs, or company careers pages. Supported Workday query filters include searchText and tenant facets such as jobType.

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

Maximum job rows emitted per careers listing URL. Direct job detail URLs always emit at most one row. Default is 1000; use a smaller value for quick tests.

## `language` (type: `string`):

Preferred Workday locale sent as Accept-Language. Workday returns localized titles and descriptions only when the employer published that language.

## `proxy` (type: `object`):

Apify datacenter proxy is the default. Switch to Residential only if a specific Workday tenant needs it or serves geo-sensitive content.

## Actor input object example

```json
{
  "startUrls": [
    "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite",
    "https://accenture.wd103.myworkdayjobs.com/en-US/AccentureCareers?jobType=fullTime&searchText=engineer",
    "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-CPU-Performance-Architect_JR2018189"
  ],
  "maxItems": 20,
  "language": "en-US",
  "proxy": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (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/en-US/NVIDIAExternalCareerSite",
        "https://accenture.wd103.myworkdayjobs.com/en-US/AccentureCareers?jobType=fullTime&searchText=engineer",
        "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-CPU-Performance-Architect_JR2018189"
    ],
    "maxItems": 20,
    "language": "en-US",
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/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/en-US/NVIDIAExternalCareerSite",
        "https://accenture.wd103.myworkdayjobs.com/en-US/AccentureCareers?jobType=fullTime&searchText=engineer",
        "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-CPU-Performance-Architect_JR2018189",
    ],
    "maxItems": 20,
    "language": "en-US",
    "proxy": { "useApifyProxy": True },
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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/en-US/NVIDIAExternalCareerSite",
    "https://accenture.wd103.myworkdayjobs.com/en-US/AccentureCareers?jobType=fullTime&searchText=engineer",
    "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-CPU-Performance-Architect_JR2018189"
  ],
  "maxItems": 20,
  "language": "en-US",
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call parsebird/workday-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parsebird/workday-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Workday Jobs Scraper & API",
        "description": "Scrape Workday job listings and direct job pages. Extract titles, descriptions, locations, salary text, apply URLs, and public employer emails. Export JSON, CSV, Excel.",
        "version": "1.1",
        "x-build-id": "balaS1fcchb8aWy3g"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parsebird~workday-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parsebird-workday-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parsebird~workday-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parsebird-workday-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parsebird~workday-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parsebird-workday-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Add Workday listing URLs, filtered listing URLs, direct job detail URLs, or company careers pages. Supported Workday query filters include searchText and tenant facets such as jobType.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max Jobs Per Listing URL",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum job rows emitted per careers listing URL. Direct job detail URLs always emit at most one row. Default is 1000; use a smaller value for quick tests.",
                        "default": 1000
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en-US",
                            "en-GB",
                            "de-DE",
                            "fr-FR",
                            "es-ES",
                            "it-IT",
                            "nl-NL",
                            "pt-BR",
                            "ja-JP",
                            "zh-CN"
                        ],
                        "type": "string",
                        "description": "Preferred Workday locale sent as Accept-Language. Workday returns localized titles and descriptions only when the employer published that language.",
                        "default": "en-US"
                    },
                    "proxy": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify datacenter proxy is the default. Switch to Residential only if a specific Workday tenant needs it or serves geo-sensitive content."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
