# Workday Career Sites API (`johnvc/workday-career-sites-api`) Actor

Find the companies using Workday and every career site each one runs. Get the tenant, datacenter, careers URL, direct jobs API URL, and live open-role count as structured JSON. Build a Workday customer list, or resolve a single company in seconds. No key needed, MCP-ready for Claude and AI agents.

- **URL**: https://apify.com/johnvc/workday-career-sites-api.md
- **Developed by:** [John](https://apify.com/johnvc) (community)
- **Categories:** Jobs, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 6 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.01 / 1,000 results

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Career Sites API - Find Companies Using Workday

Find the companies using Workday and every career site each one runs, returned as clean, machine-readable JSON. For any company you get its Workday tenant, its datacenter, the site slug, the public careers URL, the direct jobs API URL, and a live count of open roles. Give it a list of companies and it resolves them in seconds, or turn on Discover All and it enumerates Workday career sites in bulk to build a full Workday customer list.

The part that matters: it returns **every** career site a company runs, not just the main one. Large employers routinely operate separate boards for regions, subsidiaries, and university hiring. A single semiconductor company in testing returned 7 career sites; a design-software company returned 8. Tools that stop at the first board silently miss the rest.

This Actor reads only public career-site information published on [Workday](https://www.workday.com/) careers pages. It is not affiliated with, endorsed by, or connected to Workday, Inc.

### What you get

- `tenant` - the company's Workday tenant label
- `datacenter` - which Workday datacenter hosts it (wd1, wd5, wd108 and so on). Not guessable, and required to build a working URL
- `siteSlug` - the individual career site identifier
- `careersUrl` - the public careers page, ready to open
- `apiUrl` - the direct machine-readable jobs endpoint for that site
- `totalJobs` - open roles on that site right now
- `status` and `slugSource` - verification outcome and how the site was resolved

### What you do NOT get

- Individual job postings. This returns the career sites and the API URL for each; fetching the postings themselves is a separate step you control.
- Applicant or candidate data of any kind.
- Companies that are not on Workday. If an employer uses a different hiring platform, it will not appear.

### Find the companies using Workday

Two ways to run it, depending on what you already know:

- **You have a company in mind.** Pass its name or domain and get back every Workday career site it runs, each with a direct jobs API URL and a live open-role count. Exact, and fast.
- **You want the whole list.** Turn on Discover All to enumerate Workday career sites in bulk from a public web index, then filter to the companies and boards you care about. This is how you build a Workday customer list or a Workday client list for sales and market research.

### Use cases

- **Sales and market research** - build a list of companies using Workday, enriched with how many roles each has open, as a live buying signal.
- **Recruiting data and sourcing tools** - build a company-to-career-site map so your product can pull openings from any employer on demand.
- **Job boards and aggregators** - discover the employers worth ingesting, then hit each `apiUrl` directly instead of rendering career pages.
- **Competitive intelligence** - watch where a competitor is expanding by which regional boards grow.
- **Data enrichment** - resolve a company name to its Workday tenant and career-site URLs to append to your CRM or dataset.

### When to use this Actor

| | This Actor | Generic job scrapers | Manual lookup |
|---|---|---|---|
| Finds every career site a company runs | Yes | Usually just the first | Rarely |
| Returns a direct API URL per site | Yes | No | No |
| Resolves the datacenter | Yes | N/A | Trial and error |
| Bulk enumeration of companies using Workday | Yes | No | No |
| Speed | Seconds per company | Minutes | Manual |

**Rule of thumb:** if you need the postings for one company you already know, use a job scraper. If you need to know *which* companies are on Workday and *where* their boards live, start here.

### 🔌 Integrations: turn Workday discovery into a recurring pipeline

This Actor is most useful as a step in a pipeline, not a one-off run. It resolves the career-site URLs; the tools below act on them.

- **Tasks and Schedules.** Save a run as a Task, then schedule it. Re-run a Workday customer list weekly (`0 7 * * 1`) to catch new companies and track how open-role counts move, or refresh a target-account list daily (`0 6 * * *`).
- **Chain into job extraction.** Feed each `apiUrl` straight into the [Workday Careers API](https://apify.com/johnvc/workday-careers-api?fpr=9n7kx3) to pull the actual postings. Discovery here, extraction there.
- **n8n, Make, and Zapier.** Trigger downstream steps (enrich a CRM record, post to Slack, append a row) whenever a run finishes, using Apify's native connectors.
- **Store the history (Supabase, BigQuery, a sheet).** Push each run's dataset to your own store to build a time series of which companies run Workday and how their hiring changes.
- **MCP and AI agents.** Call it as a tool from Claude and other agents (see the MCP section below).
- **Webhooks.** Fire a webhook on run completion to kick off any of the above.

### Pricing

Pay per career site returned. No per-run fee and no monthly minimum, so a single-company lookup costs a single site's worth. Current per-site pricing is shown on the Store page.

You are billed only for verified live sites unless you explicitly turn on `includeInactive`.

### Input

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `companies` | array | No | `["nvidia", "kla"]` | Company names or domains to resolve, for example `nvidia` or `cadence.com`. Each is looked up independently and every career site it runs is returned. |
| `discoverAll` | boolean | No | `false` | Enumerate companies using Workday in bulk instead of resolving a named list. |
| `maxResults` | integer | No | `100` | Cap on companies processed in Discover All mode. One company can host several sites, so rows returned is usually higher. |
| `verifyLive` | boolean | No | `true` | Verify each site against its jobs endpoint and record its open-job count. |
| `includeInactive` | boolean | No | `false` | Also return sites that failed verification (`dead` or `no_slug`). |
| `crawlDepth` | integer | No | `2` | How many index snapshots to combine in Discover All mode. Higher finds more companies at the cost of a longer run. |

Provide `companies`, or turn on `discoverAll`. An empty run exits cleanly with a message rather than an error.

#### Example input

```json
{
  "companies": ["nvidia", "kla"],
  "verifyLive": true
}
```

### Output

One dataset row per career site. A company that runs several boards produces several rows. Fields:

| Field | Type | Description |
|---|---|---|
| `resultType` | string | `career_site` for a discovered site, `error` for a run-level problem |
| `tenant` | string | The company's Workday tenant label |
| `companyName` | string | The company as supplied in the input, when the row came from a named lookup |
| `datacenter` | string | The Workday datacenter hosting the tenant, for example `wd1` |
| `hostKind` | string | `myworkdayjobs` or `myworkdaysite` |
| `siteSlug` | string | Identifier of the individual career site |
| `careersUrl` | string | Public careers page, ready to open |
| `apiUrl` | string | Direct machine-readable jobs endpoint for that site |
| `totalJobs` | integer | Open roles on that site at the time of the run |
| `status` | string | `live`, `dead`, or `no_slug` |
| `slugSource` | string | How the slug was resolved, a confidence signal |
| `discoveredAt` | string | UTC timestamp of the row |

#### Example output

```json
{
  "resultType": "career_site",
  "tenant": "kla",
  "companyName": "kla",
  "datacenter": "wd1",
  "hostKind": "myworkdayjobs",
  "siteSlug": "Penang_Semicon",
  "careersUrl": "https://kla.wd1.myworkdayjobs.com/en-US/Penang_Semicon",
  "apiUrl": "https://kla.wd1.myworkdayjobs.com/wday/cxs/kla/Penang_Semicon/jobs",
  "totalJobs": 37,
  "status": "live",
  "slugSource": "robots",
  "discoveredAt": "2026-07-30T18:54:41+00:00"
}
```

### How to get started

1. Open the Actor: [View on Apify Store](https://apify.com/johnvc/workday-career-sites-api?fpr=9n7kx3)
2. Put one or more company names into **Companies**, or switch on **Discover All Companies**
3. Click **Start**
4. Read the results from the **Output** tab, or pull them from the dataset API

For a Python quick-start (uv) and copy-paste MCP install steps for Claude, Cursor, and ChatGPT, see the [example repo on GitHub](https://github.com/johnisanerd/Apify-Workday-Career-Sites-API).

### Run from the API

```bash
curl -X POST "https://api.apify.com/v2/acts/johnvc~workday-career-sites-api/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companies":["nvidia","kla"],"verifyLive":true}'
```

### 🔌 Use this API from Claude (MCP)

Point any MCP client at the hosted Apify MCP server and this Actor becomes a tool your agent can call:

```
https://mcp.apify.com/?tools=actors,docs,johnvc/workday-career-sites-api
```

Works with [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial) and [Claude Cowork](https://claude.ai/referral/uIlpa7nPLg) (free trial). Ask it something like "find every Workday career site NVIDIA runs and tell me how many roles are open on each" and it will call this Actor and read the results back.

https://www.youtube.com/watch?v=4nxStxC1BJM

Apify MCP documentation: https://docs.apify.com/platform/integrations/mcp

### 🔗 Related Tools

- [Workday Careers API](https://apify.com/johnvc/workday-careers-api?fpr=9n7kx3) - the natural next step. This Actor finds the career sites; that one extracts every job posting from a site's URL. Discovery then extraction.
- [Google Jobs Scraper API (Pay Per Result)](https://apify.com/johnvc/google-jobs-scraper---pay-per-result?fpr=9n7kx3) - pull job listings from Google Jobs when you want postings across employers, not one company's Workday boards.
- [LinkedIn Jobs API](https://apify.com/johnvc/linkedin-jobs-api?fpr=9n7kx3) - search job listings and salaries on LinkedIn, a complementary hiring-data source.
- [LinkedIn Company API](https://apify.com/johnvc/linkedin-company-api?fpr=9n7kx3) - firmographics for the companies you discover, useful for enriching a Workday customer list.

Compared with a single-company scraper such as [crawlerbros/workday-jobs-scraper](https://apify.com/crawlerbros/workday-jobs-scraper?fpr=9n7kx3), which needs you to paste a Workday URL you already have, this Actor produces those URLs in the first place, then hands them off.

### FAQ

#### What companies use Workday?

Thousands of large enterprises run their hiring on Workday, across technology, healthcare, retail, finance, and manufacturing. Turn on Discover All to enumerate them in bulk from a public web index, or pass a specific company name to confirm whether it runs Workday and get its career sites.

#### How do I build a list of companies using Workday?

Run the Actor in Discover All mode. It enumerates Workday career sites in bulk and returns one row per site with the company tenant, careers URL, and open-role count, which you can export as a Workday customer list or Workday client list for sales and research.

#### What is a Workday tenant?

It is the company's own label inside Workday, and the first part of its career-site hostname. For a URL like `nvidia.wd5.myworkdayjobs.com`, the tenant is `nvidia`. It is the field most people mean when they ask for a Workday tenant name.

#### Why does the datacenter matter?

Every Workday career site lives in a specific datacenter (`wd1`, `wd5`, `wd108` and so on), and it is part of the URL. It cannot be derived from the company name, so without it you cannot build a working link or API call. This Actor resolves it for you.

#### Is this a Workday API or a web scraper?

Both, in effect. It behaves like an API: you send a company and get structured JSON back. Under the hood it discovers public career-site data the way a careful scraper would, but you never touch HTML or pagination. See the [difference between an API and a web scraper](https://en.wikipedia.org/wiki/Web_scraping) if you are choosing between approaches.

#### Why does one company return several rows?

Because large employers run several career sites: a main board, plus separate ones for regions, subsidiaries, and university or graduate hiring. Each is a distinct site with its own URL and its own open roles, so each gets its own row.

#### Can I get the actual job postings?

Not from this Actor. Each row includes an `apiUrl` pointing at that site's jobs endpoint. Feed it to the [Workday Careers API](https://apify.com/johnvc/workday-careers-api?fpr=9n7kx3) to page through the postings. This Actor's job is finding the boards.

#### What is myworkdayjobs.com?

It is the domain [Workday](https://www.workday.com/) hosts customer career sites on, in the form `{tenant}.{datacenter}.myworkdayjobs.com`. A live page there is a real employer career site; this Actor turns a company name into that URL.

#### Can I use this with the Apify API?

Yes. Start runs and read results through the [Apify API](https://docs.apify.com/api/v2), or use the `run-sync-get-dataset-items` endpoint shown above to get results in a single call.

#### Can I integrate this with other apps?

Yes. Use webhooks or the native connectors for Make and Zapier, plus [n8n](https://n8n.io/). Results land in a standard Apify dataset, so anything that reads a dataset works. See the Integrations section above.

#### Can I use this through an MCP server?

Yes. Point any MCP client at `https://mcp.apify.com/?tools=actors,docs,johnvc/workday-career-sites-api` and call it as a tool from an AI agent. See the MCP section above.

#### Do I need an API key?

No. There is nothing to sign up for and no third-party key to supply.

#### Can I schedule this?

Yes. Use Apify Schedules to re-run it on a cron, for example weekly, and track how a company's open-role counts move over time. See the Integrations section for cron examples.

#### Is it legal to scrape job data?

This Actor reads publicly available career-site information that employers publish for candidates to find. As with any data collection, review the terms of the sites you target and your own compliance requirements before running at scale.

#### How complete is bulk discovery?

Bulk mode is broad but not exhaustive. Some smaller employers are not represented in the underlying public index. If you have a specific company in mind, supply it in `companies` and it will be resolved directly, which is exact.

#### What does `slugSource` tell me?

How the site was identified. It is a confidence signal: sites resolved directly from the company's own published site list are the most reliable.

#### What happens if a company is not on Workday?

The run finishes cleanly and returns no rows for that company. You are not billed for a company that produces no sites.

### n8n integration

Available as an n8n community node, **[n8n-nodes-workday-career-sites-api](https://www.npmjs.com/package/n8n-nodes-workday-career-sites-api)**. In n8n: Settings, Community Nodes, install `n8n-nodes-workday-career-sites-api`, then use it in any workflow (it also works as an AI Agent tool).

### Featured Tasks

Ready-to-run examples, each a saved configuration you can open and start in one click:

- [Build a List of Companies Using Workday](https://apify.com/johnvc/workday-career-sites-api/examples/build-a-list-of-companies-using-workday?fpr=9n7kx3) - enumerate companies on Workday in bulk.
- [Build a Workday Customer List for Sales](https://apify.com/johnvc/workday-career-sites-api/examples/build-a-workday-customer-list?fpr=9n7kx3) - a sales-ready list with open-role counts.
- [Find Every Workday Career Site a Company Runs](https://apify.com/johnvc/workday-career-sites-api/examples/find-every-workday-career-site-a-company-runs?fpr=9n7kx3) - all boards, not just the main one.
- [Find a Company's Workday Careers URL](https://apify.com/johnvc/workday-career-sites-api/examples/find-a-company-workday-careers-url?fpr=9n7kx3) - resolve a name to its careers URL.
- [Get the Workday Tenant Name for a Company](https://apify.com/johnvc/workday-career-sites-api/examples/get-workday-tenant-name-for-a-company?fpr=9n7kx3) - the tenant and datacenter for any company.
- [Get the Workday Jobs API URL for a Company](https://apify.com/johnvc/workday-career-sites-api/examples/get-workday-jobs-api-url-for-a-company?fpr=9n7kx3) - the direct jobs endpoint, ready to POST.
- [Count Open Roles Across Workday Career Sites](https://apify.com/johnvc/workday-career-sites-api/examples/count-open-roles-across-workday-career-sites?fpr=9n7kx3) - hiring volume as a market signal.
- [Find Accenture Workday Career Sites & Jobs URL](https://apify.com/johnvc/workday-career-sites-api/examples/find-accenture-workday-career-sites?fpr=9n7kx3)
- [Find Boeing Workday Career Sites & Jobs URL](https://apify.com/johnvc/workday-career-sites-api/examples/find-boeing-workday-career-sites?fpr=9n7kx3)
- [Find Barclays Workday Career Sites & Jobs URL](https://apify.com/johnvc/workday-career-sites-api/examples/find-barclays-workday-career-sites?fpr=9n7kx3)

Last Updated: 2026.07.31

# Actor input Schema

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

Company names or website domains to resolve, for example 'nvidia', 'kla', or 'cadence.com'. Each is looked up independently and every career site it runs is returned, so one company can produce several rows. Leave empty and turn on Discover All to enumerate in bulk instead.

## `discoverAll` (type: `boolean`):

Enumerate Workday career sites in bulk from a public web index instead of resolving a named list. Use Maximum Results to control how many are returned and how long the run takes.

## `maxResults` (type: `integer`):

Upper bound on the number of companies processed in Discover All mode. One company can host several career sites, so the number of rows returned is usually higher than this figure. Ignored when you supply a company list.

## `verifyLive` (type: `boolean`):

Check each career site against its jobs endpoint and record the current open-job count. Leave this on for clean data. Turning it off makes a run faster but the open-job count will be empty and dead sites will not be filtered out.

## `includeInactive` (type: `boolean`):

Also return career sites that failed verification, marked with a status of 'dead' or 'no\_slug'. Useful for auditing coverage. Off by default so you are only billed for confirmed live sites.

## `crawlDepth` (type: `integer`):

How many historical snapshots of the public web index to combine in Discover All mode. Higher values find more companies, including ones that have since gone quiet, at the cost of a longer run. Most runs need 1 or 2.

## Actor input object example

```json
{
  "companies": [
    "nvidia",
    "kla"
  ],
  "discoverAll": false,
  "maxResults": 100,
  "verifyLive": true,
  "includeInactive": false,
  "crawlDepth": 2
}
```

# Actor output Schema

## `careerSites` (type: `string`):

All discovered career sites in the default dataset, one item per site.

## `overview` (type: `string`):

The same rows in the table view, with the key columns ordered for scanning.

# 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 = {
    "companies": [
        "nvidia",
        "kla"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnvc/workday-career-sites-api").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 = { "companies": [
        "nvidia",
        "kla",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("johnvc/workday-career-sites-api").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 '{
  "companies": [
    "nvidia",
    "kla"
  ]
}' |
apify call johnvc/workday-career-sites-api --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/1ECka9fUXuyMqvqO2/builds/if9APdQyfPVl8V2UB/openapi.json
