# Workday Jobs Scraper – Career Sites by Company Name or URL (`flarewow/workday-jobs-scraper`) Actor

Scrape open jobs from any Workday career site (myworkdayjobs.com) – just type the company name, website or URL. Full descriptions, salary ranges, all locations, posting dates and apply links. Only-new-jobs monitoring for daily schedules. No login, no proxy needed.

- **URL**: https://apify.com/flarewow/workday-jobs-scraper.md
- **Developed by:** [FlareWOW](https://apify.com/flarewow) (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

Pay per event

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 – Career Sites by Company Name or URL

Get every open job from any company that hires through **Workday** (`*.myworkdayjobs.com`) – title, location, full description, pay range, posting date and apply link – by pasting the career site URL **or just typing the company name**.

### What can it do?

- **Any Workday career site** – NVIDIA, Salesforce, Intel, Cisco, Boeing, Pfizer, Target, Mastercard, Adobe and thousands more.
- **Company name or website as input** – type `Boeing` or `intel.com`; the Actor finds the Workday career site for you (works for many, not all companies – if it can't, the log tells you and you paste the URL).
- **Full job details** – description as clean text, all locations, country, remote/onsite, full/part time, exact posting date, legal hiring entity.
- **Pay range** – `salaryMin`, `salaryMax`, `salaryCurrency` and `salaryPeriod` extracted from the posting when the employer publishes it (common in US states with pay-transparency laws).
- **Only new jobs** – turn on monitoring and run it daily: you get (and pay for) only postings that earlier runs have not returned yet.
- **Filters** – keyword search (uses Workday's own search), location text, "posted within N days", max jobs per company.
- Uses Workday's public job API, so it is fast (about 1 s per 20 jobs) and needs no proxy or login.

### Who is it for?

- **Recruiters & staffing agencies** – watch target companies and react to new openings first.
- **Job boards & aggregators** – feed postings straight from the source, with salary and full text.
- **Sales teams** – hiring is a buying signal: a company opening 15 data-engineering roles needs data tools.
- **Market & HR analysts** – track hiring volume, locations and pay ranges of competitors.
- **Job seekers** – get a daily list of new roles at your dream companies.

### How to use it

1. Click **Try for free**.
2. In **Companies**, add one company per line – a Workday URL such as `https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite`, a website like `intel.com`, or a name like `Boeing`.
3. Optionally set **Search text**, **Location contains** and **Posted within last N days**.
4. Click **Start** and download the results as Excel, CSV, JSON or HTML – or connect them to your tools.

**Tip:** to find a company's Workday URL, open its careers page, click "Search jobs" and copy the address – it contains `myworkdayjobs.com`.

#### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/flarewow~workday-jobs-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"companies":["Boeing"],"searchText":"engineer","maxJobsPerCompany":20}'
```

```python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_TOKEN>")
run = client.actor("flarewow/workday-jobs-scraper").call(run_input={"companies": ["intel.com"], "postedWithinDays": 7})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(job["title"], job["location"], job.get("salaryText"))
```

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_TOKEN>' });
const run = await client.actor('flarewow/workday-jobs-scraper').call({ companies: ['Cisco'], onlyNewJobs: true });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

### Input example

```json
{
  "companies": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite", "Boeing"],
  "searchText": "engineer",
  "locationContains": "",
  "postedWithinDays": 30,
  "maxJobsPerCompany": 20,
  "includeDescription": true,
  "onlyNewJobs": false
}
```

### Output example

Real result (description and URLs shortened):

```json
{
  "jobId": "JR2026517946",
  "title": "Manufacturing Engineer - Structures & Propulsion - 2nd Shift - Millennium Space Systems",
  "company": "Boeing",
  "hiringEntity": "Millennium Space Systems",
  "location": "USA - El Segundo, CA",
  "allLocations": null,
  "country": "United States of America",
  "remoteType": "Onsite Job",
  "employmentType": "Full time",
  "postedText": "Posted Today",
  "postedDate": "2026-10-27",
  "salaryText": "$90,950 - $133,750",
  "salaryMin": 90950,
  "salaryMax": 133750,
  "salaryCurrency": "USD",
  "salaryPeriod": "year",
  "url": "https://boeing.wd1.myworkdayjobs.com/External_Careers/job/...",
  "applyUrl": "https://boeing.wd1.myworkdayjobs.com/External_Careers/job/.../apply",
  "description": "At Millennium Space Systems, a Boeing Company, ...",
  "careerSiteUrl": "https://boeing.wd1.myworkdayjobs.com/External_Careers",
  "workdayTenant": "boeing",
  "scrapedAt": "2026-10-27T21:13:57.000Z"
}
```

### Output fields

| Field | Description |
|---|---|
| `jobId` | Workday requisition ID (e.g. `JR2028554`) |
| `title` | Job title |
| `company` | Company (Workday tenant name) |
| `hiringEntity` | Legal entity that hires (e.g. "PL01 Nvidia Poland sp. z o.o.") |
| `location`, `allLocations`, `country` | Main location, all locations of a multi-location job, country |
| `remoteType` | Remote / hybrid / onsite label used by the employer (when set) |
| `employmentType` | Full time / Part time |
| `postedText`, `postedDate` | Workday's "Posted X days ago" and the exact posting date |
| `salaryText`, `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryPeriod` | Pay range found in the posting (only when published) |
| `url`, `applyUrl` | Job page and application page |
| `description` | Full job description as plain text (when "Include full description" is on) |
| `careerSiteUrl`, `workdayTenant` | The Workday career site the job came from |
| `scrapedAt` | Time of extraction |

With **Include full description** off, the Actor returns the list fields only (title, location, posting date, links) – faster for very large employers.

### Pricing

Pay per result: **$1.50 per 1,000 jobs** (plus the tiny Apify start fee per run). You pay only for jobs saved to the dataset – nothing for companies that were not found. With **Only new jobs** on, daily monitoring of a company costs cents. Platform usage is included.

### Limitations & FAQ

- **Does it work for every company?** For every company with a public Workday career site when you paste its URL. Name/website auto-detection works for many big employers but not all (some use unusual site names) – the run log then asks you for the URL.
- **Why at most about 2,000 jobs per search?** Workday's own job search returns at most about 2,000 results. For very large employers split the search with **Search text** (e.g. "engineer", "sales").
- **Pay range missing?** The employer did not publish it in the posting.
- **Location filter** matches the text of the location (e.g. "Germany", "Remote", "TX").
- **What if a company is not found or Workday is unavailable?** The run never returns a silent empty "success": if no company could be scraped it ends as *Failed* with a clear message, and a `RUN_SUMMARY` record in the key-value store lists the status of every company.
- **Other ATS (Greenhouse, Lever, Ashby, SmartRecruiters…)?** Use our [Greenhouse, Lever & Workday Jobs Scraper](https://apify.com/flarewow/greenhouse-lever-workday-jobs-scraper).

### Integrations

Connect the results to **Google Sheets, Slack, Airtable, n8n, Make, Zapier** or any webhook via Apify integrations, or let an AI agent call it through the **Apify MCP server**. Typical setup: a daily Schedule with **Only new jobs** on → new postings land in your sheet or Slack channel.

### Responsible use

The Actor reads only public job postings that companies publish on their own Workday career sites – company data, no personal data of private individuals and no login. Please respect Workday's and the employers' terms and use reasonable volumes.

# Changelog

This Actor's version history is a separate document: https://apify.com/flarewow/workday-jobs-scraper/changelog.md

# Actor input Schema

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

One per line. Best: the Workday job list URL (e.g. https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite). You can also type a company website (intel.com) or a company name (Boeing) – the Actor tries to find its Workday career site automatically and tells you in the log if it cannot.

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

Keyword sent to the Workday search, e.g. "data engineer" or "marketing". Leave empty for all jobs.

## `locationContains` (type: `string`):

Keep only jobs whose location contains this text, e.g. "Germany", "London" or "CA". Case-insensitive. Leave empty for all locations.

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

Keep only jobs posted in the last N days (based on Workday's "Posted X days ago"). 0 = any date.

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

Upper limit of jobs saved for each company. Workday lists at most ~2,000 jobs per search, use Search text to narrow very large employers.

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

Open every job to get the full description, all locations, employment type, exact posting date and the pay range (when the employer publishes it). Turn off for a faster list of titles and links only.

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

Return only jobs that earlier runs (same company and search text) have not returned yet. Ideal with a daily Schedule – you pay only for new postings. The first run returns jobs up to your limit.

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

Workday's public job API usually works without a proxy. Turn on Apify Proxy only if you see rate-limit errors (HTTP 429/403) in the log.

## Actor input object example

```json
{
  "companies": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
    "Boeing"
  ],
  "searchText": "engineer",
  "locationContains": "",
  "postedWithinDays": 30,
  "maxJobsPerCompany": 20,
  "includeDescription": true,
  "onlyNewJobs": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "companies": [
        "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
        "Boeing"
    ],
    "searchText": "engineer",
    "postedWithinDays": 30,
    "maxJobsPerCompany": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("flarewow/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 = {
    "companies": [
        "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
        "Boeing",
    ],
    "searchText": "engineer",
    "postedWithinDays": 30,
    "maxJobsPerCompany": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("flarewow/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 '{
  "companies": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
    "Boeing"
  ],
  "searchText": "engineer",
  "postedWithinDays": 30,
  "maxJobsPerCompany": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call flarewow/workday-jobs-scraper --silent --output-dataset

```

## MCP server setup

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