# Workday Jobs Scraper: Career Site Job Listings API (`keelandcharter/workday-jobs-feed`) Actor

Scrape open jobs from any company's public Workday career site (myworkdayjobs.com) in one clean format: title, location, country, time type, remote type, posted date, job ID, apply link and optional full description. Paste a career site URL. $1.50 per 1,000 jobs.

- **URL**: https://apify.com/keelandcharter/workday-jobs-feed.md
- **Developed by:** [Keel & Charter](https://apify.com/keelandcharter) (community)
- **Categories:** Jobs, Lead generation, Business
- **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 returneds

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 Feed: Career Site Jobs API

Open roles from any company's public Workday career site, in one clean format. Built by Keel & Charter.

Thousands of large employers (NVIDIA, Salesforce, Target, banks, hospitals, universities) list their jobs on Workday. Paste a career site link and this Actor returns one tidy record per role, ready for a spreadsheet, a database, a job board or an AI agent.

### What you get

| Field | Example |
|---|---|
| company, career_site | nvidia, NVIDIAExternalCareerSite |
| job_id | JR2015832 |
| title | Senior Software Engineer, Platform Engineering |
| location, additional_locations, country | US, CA, Santa Clara; United States of America |
| time_type, remote_type | Full time, Remote |
| posted_on_text, posted_days_ago, posted_date_estimate | Posted 6 Days Ago, 6, 2026-10-20 |
| start_date | 2026-10-20 |
| job_url, apply_url | direct links to the posting |
| hiring_entity | the legal entity named on the posting |
| description_text | plain text, optional |
| scraped_at | when this run read the site |

### How to use it

1. Open the company's Careers page and copy the Workday link, for example `https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite`. Links with a language part such as `/en-US/` work too, and so do `myworkdaysite.com/recruiting/...` links.
2. Optional: search text, location keywords and posted within N days.
3. Keep **Include details** on for country, time type, remote type and the exact job ID. Turn on **Include full description** for the job text.
4. Run, then export as JSON, CSV or Excel, or call it from the API, Make, Zapier, n8n or an MCP client.

### Example input

```json
{
  "careerSites": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
  ],
  "searchText": "engineer",
  "postedWithinDays": 7,
  "includeDetails": true,
  "includeDescription": false,
  "maxJobsPerSite": 100
}
```

### Example output

One row per result. A row from a real run:

```json
{
  "company": "nvidia",
  "career_site": "NVIDIAExternalCareerSite",
  "site_url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
  "job_id": "JR2026094",
  "title": "Senior System Engineer, Solution Engineering",
  "location": "Poland, Remote",
  "additional_locations": [
    "Germany, Remote",
    "Netherlands, Remote"
  ],
  "country": "Poland",
  "time_type": "Full time",
  "remote_type": null,
  "posted_on_text": "Posted 7 Days Ago",
  "posted_days_ago": 7,
  "posted_date_estimate": "2026-10-19",
  "start_date": "2026-10-19",
  "job_url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/Poland-Remote/Senior-System-Engineer--Solution-Engineering_JR2026094",
  "apply_url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/Poland-Remote/Senior-System-Engineer--Solution-Engineering_JR2026094/apply",
  "hiring_entity": "PL01 Nvidia Poland sp. z o.o.",
  "description_text": "NVIDIA is widely considered to be one of the technology world’s most desirable employers. We have some of the most forward-thinking and hardworking pe...",
  "scraped_at": "2026-10-26T18:19:18.616616+00:00"
}
```

### Pricing

Pay per event, no subscription and no separate compute charge:

| Event | Price |
|---|---|
| Job returned | $0.0015 per job ($1.50 per 1,000 jobs) |
| Actor start | $0.00005 per run |

Example: 1,000 jobs from 5 employers cost $1.50. Set a maximum cost per run in the run options and the Actor stops cleanly when it is reached.

Pricing may change; any change follows Apify's notice rules.

### Good to know

- The Actor reads the same public job data the career page loads in your browser. It checks each site's robots.txt first and skips any site that does not allow it, and it keeps a polite pace of about two requests per second.
- No personal data. Recruiter names and contacts are never returned, and any email or phone number inside a description is removed.
- Workday shows at most 2,000 results per search. For bigger employers, run a few searches with different keywords.
- Workday reports dates as "Posted 6 Days Ago" and "30+ Days Ago". posted_date_estimate is worked out from that and left empty for "30+ Days Ago", since the exact day is unknown. start_date is the posting date Workday stores, returned when details are on, and is the better field for older roles.

Keel & Charter builds small, dependable data tools. A site that will not load? Open an issue and we will look at it.

### FAQ

**Which employers use Workday?**
Many large companies, banks, hospitals and universities, for example NVIDIA, Salesforce and Target. If the careers page link contains myworkdayjobs.com or myworkdaysite.com, it works here.

**Can I monitor new postings?**
Yes. Schedule a daily run with postedWithinDays set to 1 and send results to Google Sheets, Slack or a webhook.

### More from Keel & Charter

- [Greenhouse, Lever, Ashby and Workable Jobs Scraper](https://apify.com/keelandcharter/ats-jobs-feed)
- [Bulk WHOIS and Domain Lookup (RDAP, DNS, SPF, DMARC)](https://apify.com/keelandcharter/domain-rdap-dns-lookup)
- [Wayback Machine Domain History](https://apify.com/keelandcharter/wayback-domain-history)
- [South Carolina Short Term Rental Regulations](https://apify.com/keelandcharter/sc-short-term-rental-rules)

# Actor input Schema

## `careerSites` (type: `array`):

One Workday career site URL per line, for example https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite. Copy it from the company's Careers page; the part after myworkdayjobs.com is the site name.

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

Optional keywords, the same as typing in the career site search box.

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

Keep only roles whose location contains one of these words, for example Remote or Germany.

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

Keep only roles posted in the last N days. 0 keeps everything. Workday shows 30+ for older roles.

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

Open each posting for country, time type, remote type, start date and exact job ID. Slower; turn off for a quick list.

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

Add the job description as plain text. Needs Include details.

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

Stop after this many jobs from each site. 0 means no limit (Workday lists up to 2,000 per search).

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

Overall cap across all sites. 0 means no limit.

## Actor input object example

```json
{
  "careerSites": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
  ],
  "searchText": "engineer",
  "includeDetails": true,
  "includeDescription": false,
  "maxJobsPerSite": 20,
  "maxJobs": 0
}
```

# Actor output Schema

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

All rows returned by the run, in the default dataset.

# 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 = {
    "careerSites": [
        "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
    ],
    "searchText": "engineer",
    "maxJobsPerSite": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("keelandcharter/workday-jobs-feed").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 = {
    "careerSites": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"],
    "searchText": "engineer",
    "maxJobsPerSite": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("keelandcharter/workday-jobs-feed").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 '{
  "careerSites": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
  ],
  "searchText": "engineer",
  "maxJobsPerSite": 20
}' |
apify call keelandcharter/workday-jobs-feed --silent --output-dataset

```

## MCP server setup

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

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/6tdKKnhGY9Txqa3eo/builds/LGbdVUCGGfXmnxsDc/openapi.json
