# Workday Jobs Scraper: Hiring Change Feed (`getascraper/workday-tenant-jobs-monitor`) Actor

Monitor public Workday career sites for new, updated, reappeared, and closed roles. Paste ordinary career URLs to export source-linked requisitions, locations, and hiring changes to Apify schedules, webhooks, and HR-tech workflows.

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

## Pricing

from $0.65 / 1,000 job postings

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 jobs scraper

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed">
<tr>
<td style="padding:24px 28px;background:#FFF7ED;border:1px solid #FED7AA;border-top:4px solid #9A4A00;border-radius:12px">
<span style="display:block;font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">🔎 Track public Workday roles without maintaining a watchlist by hand.</span>
<span style="display:block;margin-top:10px;font-size:15px;color:#57534E;line-height:1.6">Collect current public listings, keep each row tied to its source, and make the next hiring decision with a clean, repeatable feed. Work only from pages that anyone can normally view.</span>

</td>
</tr>
</table>

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed">
<tr>
<td style="padding:16px 14px;width:25%;background:#FFFFFF;border:1px solid #FED7AA;border-top:3px solid #9A4A00;border-radius:10px 0 0 10px;vertical-align:top"><span style="display:block;font-size:15px;font-weight:800;color:#78350F;line-height:1.3">🧭 Focused sources</span><span style="display:block;margin-top:8px;font-size:12px;color:#57534E;line-height:1.5">Use ordinary public company and careers pages.</span></td>
<td style="padding:16px 14px;width:25%;background:#FFFFFF;border:1px solid #FED7AA;border-top:3px solid #9A4A00;border-left:none;vertical-align:top"><span style="display:block;font-size:15px;font-weight:800;color:#78350F;line-height:1.3">🔔 Meaningful changes</span><span style="display:block;margin-top:8px;font-size:12px;color:#57534E;line-height:1.5">Separate new, updated, returning, and closed roles.</span></td>
<td style="padding:16px 14px;width:25%;background:#FFFFFF;border:1px solid #FED7AA;border-top:3px solid #9A4A00;border-left:none;vertical-align:top"><span style="display:block;font-size:15px;font-weight:800;color:#78350F;line-height:1.3">🔗 Source context</span><span style="display:block;margin-top:8px;font-size:12px;color:#57534E;line-height:1.5">Keep the original job link beside every record.</span></td>
<td style="padding:16px 14px;width:25%;background:#FFFFFF;border:1px solid #FED7AA;border-top:3px solid #9A4A00;border-left:none;border-radius:0 10px 10px 0;vertical-align:top"><span style="display:block;font-size:15px;font-weight:800;color:#78350F;line-height:1.3">📅 Ready to repeat</span><span style="display:block;margin-top:8px;font-size:12px;color:#57534E;line-height:1.5">Run once for research or on a schedule for monitoring.</span></td>
</tr>
</table>

### 🎯 Turn public hiring activity into a useful signal

Follow public Workday career sites for role openings, changes, returns, and confirmed closures while keeping requisitions and original job links together. Each record stays connected to the public listing so a recruiter, analyst, or operations team can verify the context before acting.

#### Who gets value

- **I am a HR technology operations manager** looking to turn multiple public Workday career sites into a reliable recurring hiring feed.
- **I am a recruiting operations lead** looking to keep a clean, current feed of roles without checking company sites by hand.
- **I am a research analyst** looking to compare hiring signals across a defined company list.

### ⚡ Get results in three steps

Start with a small public source to confirm the output fits your workflow. Repeat the same setup on an Apify schedule when you need ongoing visibility.

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed">
<tr>
<td style="padding:16px 14px;width:33.333%;background:#FFF7ED;border:1px solid #FED7AA;border-radius:10px 0 0 10px;vertical-align:top"><span style="display:block;font-size:12px;font-weight:800;color:#9A4A00;letter-spacing:1px">STEP 1</span><span style="display:block;margin-top:6px;font-size:14px;font-weight:700;color:#1C1917;line-height:1.35">Add sources</span><span style="display:block;margin-top:6px;font-size:12px;color:#57534E;line-height:1.5">Paste ordinary public Workday career-site links or select your filters.</span></td>
<td style="padding:16px 14px;width:33.333%;background:#FFF7ED;border:1px solid #FED7AA;border-left:none;vertical-align:top"><span style="display:block;font-size:12px;font-weight:800;color:#9A4A00;letter-spacing:1px">STEP 2</span><span style="display:block;margin-top:6px;font-size:14px;font-weight:700;color:#1C1917;line-height:1.35">Choose the view</span><span style="display:block;margin-top:6px;font-size:12px;color:#57534E;line-height:1.5">Collect a current snapshot or focus on changes.</span></td>
<td style="padding:16px 14px;width:33.333%;background:#FFF7ED;border:1px solid #FED7AA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top"><span style="display:block;font-size:12px;font-weight:800;color:#9A4A00;letter-spacing:1px">STEP 3</span><span style="display:block;margin-top:6px;font-size:14px;font-weight:700;color:#1C1917;line-height:1.35">Use the feed</span><span style="display:block;margin-top:6px;font-size:12px;color:#57534E;line-height:1.5">Send source-linked records into your existing process.</span></td>
</tr>
</table>

### 🧩 Configure your run

The first setting identifies the public sources you want to follow. The remaining settings let you balance detail, scope, and the amount of history returned.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `careerSiteUrls` | List of links | No | One or more public Workday career-site links. |
| `searchText` | Text | No | Optional keyword applied to every career site. |
| `maxItems` | Number | No | Maximum roles returned across all career sites. |
| `pageSize` | Number | No | Roles requested in each result page. |
| `maxPagesPerSite` | Number | No | Maximum result pages checked for each career site. |
| `monitoringMode` | Choice | No | Choose a one-time snapshot, changed rows only, or all current rows with change status. |
| `stateName` | Text | No | Name the saved comparison history for this watchlist. |

### 📦 Use the data immediately

Every result is a structured record with the original public source retained for review. Choose a full view for a current snapshot or a change-focused view for downstream actions.

| Field | Type | Description |
| --- | --- | --- |
| `changeType` | Text | Change status for a monitored role. |
| `title` | Text | Public role title. |
| `location` | Text or null | Listed work location. |
| `remoteType` | Text or null | Remote-work information when published. |
| `requisitionId` | Text or null | Public requisition reference. |
| `tenant` | Text | Career-site owner identifier. |
| `siteId` | Text | Public career-site identifier. |
| `postedOn` | Date or null | Public posting date. |
| `url` | Link | Original public role page. |
| `changedFields` | List | Fields that changed since the prior complete check. |
| `firstSeenAt` | Date and time | First time this role appeared in this history. |
| `lastSeenAt` | Date and time | Most recent observation time. |
| `closedAt` | Date and time or null | Time a confirmed closure was recorded. |
| `scrapedAt` | Date and time | Time this Actor collected the row. |
| `source` | Text | Public source family used for the record. |

### 💳 Understand your run cost

Review the current pricing shown in the Apify Store before you scale a scheduled workflow. Begin with a small public source so you can confirm the records match your criteria.

### ⭐ Enjoying Workday jobs scraper?

After a successful run, rate the Actor based on the usefulness and clarity of the records. Your feedback helps improve the next release for teams with the same workflow.

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed">
<tr>
<td style="padding:20px 24px 14px;background:#FFF7ED;border:1px solid #FED7AA;border-left:5px solid #9A4A00;border-radius:10px 10px 0 0">
<span style="display:block;font-size:20px;letter-spacing:4px;color:#F59E0B">⭐ ⭐ ⭐ ⭐ ⭐</span>
<span style="display:block;margin-top:8px;font-size:17px;font-weight:800;color:#1C1917;line-height:1.35">Rate this Actor if it helped you keep public Workday roles in view.</span>
<span style="display:block;margin-top:8px;font-size:14px;color:#57534E;line-height:1.5">Your feedback helps HR operations teams find a repeatable public careers workflow.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#9A4A00;border:1px solid #FED7AA;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/workday-tenant-jobs-monitor/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ Frequently asked questions

These answers cover the safest way to get a reliable first result. Use a separate saved state for each independent watchlist or client workflow.

#### Can I start with a normal public source link?

Yes. Paste the public source described in the input form, then use the available filters to narrow the collection.

#### Can I use this for recurring monitoring?

Yes. Run it on an Apify schedule and choose the change-focused output when you only need records that have meaningfully changed.

#### How are closed roles handled?

A role is only treated as closed after complete checks confirm that it is no longer present. This reduces false closure events caused by incomplete source results.

#### Do I need access to the employer system?

No. This Actor is designed for publicly available listings and does not request employer, applicant, or account access.

### 🛡️ Use public information responsibly

Use the records for permitted recruiting research, workforce planning, and internal operations. Respect the source’s terms and intended use, minimize retention, and do not use the data to make sensitive decisions about individuals.

### 🔗 Other actors

These adjacent Actors cover public hiring sources that teams often track alongside this one. Choose the source that matches the company’s careers platform.

- [🌱 Greenhouse jobs scraper](https://apify.com/getascraper/greenhouse-requisition-monitor)
- [🏥 NHS jobs scraper](https://apify.com/getascraper/nhs-trust-vacancy-monitor)
- [🎯 SmartRecruiters jobs scraper](https://apify.com/getascraper/smartrecruiters-jobs-monitor)
- [🧲 Lever jobs scraper](https://apify.com/getascraper/lever-jobs-monitor)
- [🇨🇦 Job Bank Canada scraper](https://apify.com/getascraper/jobbank-scraper)

# Actor input Schema

## `careerSiteUrls` (type: `array`):

Paste one or more public myworkdayjobs.com career-site URLs. The Actor derives the public feed automatically, with no tenant IDs, tokens, cookies, or JSON configuration required.

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

Optional keyword applied to every career site, such as engineer or nurse.

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

Global cap across every career site in this run.

## `pageSize` (type: `integer`):

Number of jobs requested from each public Workday feed per page.

## `maxPagesPerSite` (type: `integer`):

Maximum number of public feed pages requested from each career site.

## `monitoringMode` (type: `string`):

Choose a one-time snapshot, changed rows only, or all current rows with change status.

## `stateName` (type: `string`):

Separates one customer, watchlist, or schedule from another.

## Actor input object example

```json
{
  "careerSiteUrls": [
    "https://bdx.wd1.myworkdayjobs.com/en-US/EXTERNAL_CAREER_SITE_USA"
  ],
  "searchText": "",
  "maxItems": 20,
  "pageSize": 20,
  "maxPagesPerSite": 1,
  "monitoringMode": "off",
  "stateName": "default"
}
```

# Actor output Schema

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

Source-faithful public job rows or selected monitoring events.

## `summary` (type: `string`):

Per-tenant coverage, row counts, and monitoring safety status.

# 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 = {
    "careerSiteUrls": [
        "https://bdx.wd1.myworkdayjobs.com/en-US/EXTERNAL_CAREER_SITE_USA"
    ],
    "searchText": "",
    "maxItems": 20,
    "pageSize": 20,
    "maxPagesPerSite": 1,
    "monitoringMode": "off",
    "stateName": "default"
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/workday-tenant-jobs-monitor").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 = {
    "careerSiteUrls": ["https://bdx.wd1.myworkdayjobs.com/en-US/EXTERNAL_CAREER_SITE_USA"],
    "searchText": "",
    "maxItems": 20,
    "pageSize": 20,
    "maxPagesPerSite": 1,
    "monitoringMode": "off",
    "stateName": "default",
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/workday-tenant-jobs-monitor").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 '{
  "careerSiteUrls": [
    "https://bdx.wd1.myworkdayjobs.com/en-US/EXTERNAL_CAREER_SITE_USA"
  ],
  "searchText": "",
  "maxItems": 20,
  "pageSize": 20,
  "maxPagesPerSite": 1,
  "monitoringMode": "off",
  "stateName": "default"
}' |
apify call getascraper/workday-tenant-jobs-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/SglwYxCUi8eCRFxoC/builds/eWYvSnXHNilBr1jut/openapi.json
