# Workday Jobs Scraper (`parseforge/workday-jobs-scraper`) Actor

Scrape job postings from any Workday career site by URL. Exact posting dates, salary ranges parsed to numbers, full descriptions. Export to CSV, JSON, Excel, or XML.

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

from $1.50 / 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/actors/running/actors-in-store.md#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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 💼 Workday Jobs Scraper

> 🚀 **Export any Workday career site in seconds.** 32 fields per posting, exact ISO posting dates instead of "Posted 30+ Days Ago", and salary ranges parsed into numbers on 78% of postings.

Workday powers the careers page of a large share of the Fortune 500, and every one of those pages sits on a public JSON service that nobody has to log into. This Actor reads that service directly. Point it at a career site URL such as `https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite`, or at a single job URL, and it returns a flat row per posting with the title, company, locations, remote type, employment type, req ID, apply link, full description in both plain text and HTML, and the pay range when the employer discloses one.

Coverage measured on live sites while building this Actor: NVIDIA 2,000 reachable postings, Salesforce 1,542, Adobe 753, Workday 377, Red Hat 145. Across a 40-posting sample spanning those five employers, 31 postings carried a disclosed pay range and every one of them parsed into `salaryMin`, `salaryMax`, `salaryCurrency` and `salaryPeriod`. A 45-posting run finished in 10 seconds. No login, no API key, no proxy required.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Recruiters and talent intelligence teams | Track a competitor's open roles, headcount growth, and pay bands week over week |
| Compensation analysts | Build salary benchmarks from pay-transparency ranges published by real employers |
| Job board and aggregator operators | Feed a niche board with fresh postings straight from employer career sites |
| Market researchers and investors | Read hiring velocity as a signal of which business units a company is expanding |
| Job seekers and career coaches | Export every open role at a target employer into a spreadsheet and sort by pay |

### 📋 What the Workday Jobs Scraper does

- 🏢 **Any Workday career site.** Paste the URL. The Actor resolves the tenant and site name itself, including locale-prefixed URLs like `/en-US/`, `/details/` job links, and direct API URLs.
- 📅 **Exact posting dates.** Workday shows visitors a relative string like "Posted 30+ Days Ago". This Actor returns `postedDate` as a real ISO date, so a posting from 2026-01-24 is dated, not bucketed.
- 💰 **Salary parsed into numbers.** Pay-transparency ranges live inside the description prose, never in a structured field. The Actor extracts `salaryMin`, `salaryMax`, `salaryCurrency` and `salaryPeriod` across 20 currencies, and keeps the original text in `salaryText`.
- 🎛️ **Filters by plain name.** Every Workday tenant invents its own internal facet codes. Red Hat literally names them `a`, `b`, `c`. You type "Engineering", "Remote", "Intern" or "United States of America" and the Actor resolves the name against that site's live facet list.
- 🔍 **Keyword search.** `searchText` is passed to Workday's own search, exactly as the career site's search box does.
- 📝 **Description twice.** `descriptionText` is clean plain text with entities decoded, ready for an LLM or a spreadsheet. `description` keeps the original HTML for rendering.
- 🌍 **Multiple sites per run.** Queue as many career sites and single job URLs as you like in one run, deduplicated by posting.

> 💡 **Why it matters:** the two fields hiring analysts actually need, when a role opened and what it pays, are the two Workday never hands you in a usable form. This Actor derives both.

### 🎬 Full Demo (🚧 Coming soon)

### 📊 Output

Every run writes one flat row per job posting. 32 fields, always the same keys, so the dataset is safe to load straight into a pipeline.

| Field | Type | Description |
|---|---|---|
| 🖼 `imageUrl` | string | Employer logo served by the career site |
| 📌 `title` | string | Job title |
| 🏢 `company` | string | Hiring legal entity, as Workday records it |
| 🔗 `jobUrl` | string | Public job page |
| 📮 `applyUrl` | string | Direct link to the application form |
| 🆔 `jobReqId` | string | Employer requisition ID, for example JR2022179 |
| 🧾 `jobPostingId` | string | Workday posting slug |
| 🔑 `workdayId` | string | Internal Workday record ID |
| 📍 `location` | string | Primary location |
| 🗺 `additionalLocations` | array | Every other location the posting covers |
| #️⃣ `locationCount` | integer | Total locations for this posting |
| 🌎 `country` | string | Country of the primary location |
| 🏳 `countryCode` | string | ISO alpha-2 country code |
| 🏠 `remoteType` | string | Remote, Hybrid, Onsite, Flex, as the employer labels it |
| ⏱ `timeType` | string | Full time or Part time |
| 📅 `postedDate` | string | Exact ISO date the posting went live |
| 🗓 `postedOn` | string | Workday's own relative label |
| 🔚 `endDate` | string | Posting end date when the employer sets one |
| ⌛ `timeLeftToApply` | string | Application window remaining |
| ✅ `canApply` | string | Yes or No |
| 💵 `salaryMin` | number | Lower bound of the disclosed range |
| 💰 `salaryMax` | number | Upper bound of the disclosed range |
| 💱 `salaryCurrency` | string | ISO currency code |
| 📆 `salaryPeriod` | string | YEARLY, MONTHLY or HOURLY |
| 🧮 `salaryText` | string | The range exactly as printed in the posting |
| 📄 `descriptionText` | string | Full description as plain text |
| 🧬 `description` | string | Full description as original HTML |
| 📏 `descriptionLength` | integer | Character count of the plain-text description |
| 🏷 `tenant` | string | Workday tenant the posting came from |
| 🌐 `careerSite` | string | Career site name inside that tenant |
| 🕒 `scrapedAt` | string | ISO timestamp of collection |
| ❌ `error` | string | Populated only on a failed row |

Fields the employer chooses not to publish come back as `Not Disclosed` rather than an empty cell, so a blank always means a real gap in the source and never a parsing failure.

#### Three real records from a live run

```json
{
  "imageUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/assets/logo",
  "title": "Senior Deep Reinforcement Learning Engineer - Autonomous Driving",
  "company": "2100 NVIDIA USA",
  "jobUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Deep-Reinforcement-Learning-Engineer---Autonomous-Driving_JR2022179",
  "applyUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Deep-Reinforcement-Learning-Engineer---Autonomous-Driving_JR2022179/apply",
  "jobReqId": "JR2022179",
  "jobPostingId": "Senior-Deep-Reinforcement-Learning-Engineer---Autonomous-Driving_JR2022179",
  "workdayId": "9ba2757cdaf01037707d2f57c4200000",
  "location": "US, CA, Santa Clara",
  "additionalLocations": [],
  "locationCount": 1,
  "country": "United States of America",
  "countryCode": "US",
  "remoteType": "Not Disclosed",
  "timeType": "Full time",
  "postedDate": "2026-08-27",
  "postedOn": "Posted Today",
  "endDate": "Not Disclosed",
  "timeLeftToApply": "Not Disclosed",
  "canApply": "Yes",
  "salaryMin": 224000,
  "salaryMax": 356500,
  "salaryCurrency": "USD",
  "salaryPeriod": "YEARLY",
  "salaryText": "224,000 USD - 356,500 USD",
  "descriptionText": "NVIDIA has been transforming computer graphics, PC gaming, and accelerated computing for more than 25 years...",
  "description": "<p>NVIDIA has been transforming computer graphics, PC gaming, and accelerated computing...</p>",
  "descriptionLength": 3773,
  "tenant": "nvidia",
  "careerSite": "NVIDIAExternalCareerSite",
  "scrapedAt": "2026-08-27T20:58:32.097Z",
  "error": null
}
```

```json
{
  "title": "Senior Systems Software Engineer - Advanced Technology Group",
  "company": "2100 NVIDIA USA",
  "jobReqId": "JR2014995",
  "location": "US, OR, Hillsboro",
  "country": "United States of America",
  "countryCode": "US",
  "timeType": "Full time",
  "postedDate": "2026-08-27",
  "postedOn": "Posted Today",
  "canApply": "Yes",
  "salaryMin": 152000,
  "salaryMax": 241500,
  "salaryCurrency": "USD",
  "salaryPeriod": "YEARLY",
  "salaryText": "152,000 USD - 241,500 USD",
  "descriptionLength": 3911,
  "tenant": "nvidia",
  "careerSite": "NVIDIAExternalCareerSite",
  "scrapedAt": "2026-08-27T20:58:32.070Z",
  "error": null
}
```

```json
{
  "title": "Senior Firmware Engineer - CSP Engagements",
  "company": "2100 NVIDIA USA",
  "jobReqId": "JR1999599",
  "location": "US, CA, Santa Clara",
  "country": "United States of America",
  "countryCode": "US",
  "timeType": "Full time",
  "postedDate": "2026-08-27",
  "postedOn": "Posted Today",
  "canApply": "Yes",
  "salaryMin": 184000,
  "salaryMax": 287500,
  "salaryCurrency": "USD",
  "salaryPeriod": "YEARLY",
  "salaryText": "184,000 USD - 287,500 USD",
  "descriptionLength": 4423,
  "tenant": "nvidia",
  "careerSite": "NVIDIAExternalCareerSite",
  "scrapedAt": "2026-08-27T20:58:32.128Z",
  "error": null
}
```

### ✨ Why choose this Actor

| | What you get |
|---|---|
| **Dates you can sort on** | `postedDate` is a real ISO date. Sorting by "Posted 30+ Days Ago" is not a thing you can do. |
| **Pay as numbers** | `salaryMin` and `salaryMax` are numeric, so a spreadsheet can average them. 31 of 40 sampled postings across five employers carried a range. |
| **Filters that work on every tenant** | Facet codes differ per employer, and this Actor resolves your plain-language filter against the live facet list of whichever site you scrape. |
| **Honest empties** | `Not Disclosed` marks what the employer withheld. There are no silently blank columns. |
| **No credentials, no proxy** | The service is public and answered 12 out of 12 burst requests from a plain connection. Proxy support is included and off by default. |
| **Stable schema** | The same 32 keys on every row, so scheduled runs never break a downstream pipeline. |
| **Runs on Apify** | Schedule it, trigger it by webhook, or call it from the API. Export to CSV, JSON, Excel, or XML. |

### 📈 How it compares to alternatives

Prices and run counts below were read from the Apify Store API while pricing this Actor. The two most popular Workday scrapers publish no dataset schema at all, so their field coverage is listed as not published rather than guessed.

| Feature | ParseForge Workday Jobs Scraper | Workday Job Scraper (12,454 runs) | Workday Jobs API (6,903 runs) | Workday Jobs Scraper Fast Edition (3,449 runs) |
|---|---|---|---|---|
| Published output fields | 32 | Not published | Not published | 12 |
| Exact ISO posting date | Yes | Not published | Not published | No, relative label only |
| Salary parsed to numbers | Yes, 20 currencies | Not published | Behind an AI filter flag | No |
| Filter by job category, type, remote type, location | Yes, by plain name | No | Yes, on a pre-indexed database | Keyword and location text only |
| Reads the employer's live career site | Yes | Yes | No, serves a pre-built index | Yes |
| Plain text and HTML description | Both | Not published | Configurable | HTML only |
| Single job URL supported | Yes | No | No | No |

The Workday Jobs API is a different product rather than a direct competitor: it serves a pre-indexed database enriched with AI and LinkedIn data across many employers. Use it when you want breadth. Use this Actor when you want what a specific employer's career site says right now.

**The one ceiling worth knowing before you buy.** Workday itself returns at most 2,000 postings for any single query, and an offset past 2,000 silently wraps back to the first page. This Actor detects the wrap and stops instead of shipping duplicates, and it prints the true total so you always know your coverage. To go past 2,000 on a very large employer, split the run with a keyword or a category filter. No scraper can lift this cap, because it is enforced by Workday's own service.

### 🚀 How to use

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the Actor and paste a Workday career site URL into **Workday Career Site URLs**. Anything on `myworkdayjobs.com` works: a career site, a locale-prefixed URL, or a single job link.
3. Optionally type a keyword into **Search Keyword**, and plain-language values into the filter fields, for example `Engineering`, `Remote`, `Intern`, `United States of America`.
4. Set **Max Items**. Free-plan runs preview 10 results.
5. Click **Start**. A 45-posting run takes about 10 seconds.
6. Open the **Dataset** tab and download CSV, JSON, Excel, or XML, or pull the results from the API.

A first run:

```json
{
  "startUrls": [{ "url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite" }],
  "jobCategories": ["Engineering"],
  "maxItems": 100
}
```

### 💼 Business use cases

**📊 Competitor hiring intelligence.**

A talent intelligence team schedules a weekly run across the Workday sites of eight competitors. Because `postedDate` is exact, they diff week over week and see precisely which roles opened in the last seven days, which teams are growing, and which requisitions quietly closed.

**💰 Compensation benchmarking.**

A compensation analyst pulls every US posting from twelve employers and averages `salaryMin` and `salaryMax` by title and state. Pay-transparency law puts the numbers in the description prose, and this Actor is what turns that prose into two numeric columns a pivot table can read.

**📰 Running a niche job board.**

An aggregator serving healthcare recruiters queues the Workday sites of forty hospital systems, filters on the Nursing category, and republishes the fresh postings with `applyUrl` pointing straight at the employer's own form.

**🔎 Investment and market research.**

An analyst tracks hiring velocity at a portfolio company by counting postings per category each month. A sustained jump in Engineering headcount ahead of an earnings call is a signal that shows up in the career site long before it shows up in a filing.

### 🔌 Automating Workday Jobs Scraper

- **Make:** trigger a scenario on each finished run and route new postings into a CRM or an ATS.
- **Zapier:** connect the run-finished event to Google Sheets and append every new row automatically.
- **Slack:** post a digest of postings opened today, filtered on `postedDate`, into a recruiting channel every morning.
- **Airbyte:** sync the dataset into Snowflake, BigQuery, or Postgres for joins against your own headcount data.
- **GitHub:** run the Actor on a schedule from a workflow and commit the CSV so the history is versioned.
- **Google Drive:** drop each run's spreadsheet into a shared folder for the recruiting team.

Anything that speaks HTTP works too. The Apify API exposes runs, datasets, and webhooks directly.

### 🌟 Beyond business use cases

- **Research:** labour economists study how quickly pay-transparency disclosure spread across employers and states by measuring how often a range appears at all.
- **Personal:** a job seeker exports every open role at five dream employers, sorts by `salaryMax`, and tracks which ones they have applied to.
- **Non-profit:** a workforce development programme maps entry-level and intern postings by region to steer training toward roles that are actually open.
- **Experimentation:** feed `descriptionText` into an LLM to cluster required skills, or chart posting volume against a company's product launches.

### 🤖 Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude, or any assistant that can browse:

> I want to collect job postings from Workday career sites. Look at https://apify.com/parseforge/workday-jobs-scraper and tell me how to configure a run that pulls every Engineering role in the United States from a given employer, and how to turn the salaryMin and salaryMax fields into a pay-band report.

The Actor's input schema is published, so an assistant can read the field list and write the run configuration for you.

### ❓ Frequently Asked Questions

**🔐 Do I need a Workday login or an API key?**
No. Every career site on `myworkdayjobs.com` exposes a public JSON service, and that is what this Actor reads. Nothing behind a login is touched.

**🏢 Which companies does it work with?**
Any employer whose careers page is hosted on Workday. It was verified against NVIDIA, Salesforce, Adobe, Workday, and Red Hat while it was built, and it resolves the tenant automatically rather than shipping a hardcoded list.

**🔗 What URL should I paste?**
The career site URL is ideal, for example `https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite`. Locale-prefixed URLs, `/job/` and `/details/` links to a single posting, and direct API URLs all work.

**📅 Why does postedDate differ from what the website shows?**
The website shows a rounded label such as "Posted 30+ Days Ago". `postedDate` is the exact date the employer published the posting, taken from the same record the page is rendered from. Both are in the output, so you can use whichever you prefer.

**💰 Why is salary Not Disclosed on some rows?**
Because the employer did not publish a range. Pay transparency is required in some jurisdictions and not in others. Across a 40-posting sample from five employers, 31 disclosed a range and 9 did not, and the misses were concentrated in roles outside those jurisdictions.

**🧮 How is the salary extracted?**
Workday has no structured pay field, so the range is read out of the description text. The Actor takes the first range that is either marked with a currency or sits next to compensation wording, recognises 20 currencies, and detects yearly, monthly, and hourly periods. The untouched source string is kept in `salaryText` so you can always audit it.

**📉 Why did I get 2,000 results instead of the full 2,700?**
Workday returns at most 2,000 postings per query and wraps back to the first page beyond that. The Actor stops at the wrap rather than shipping duplicates. Split the run with a keyword or a category filter to reach the rest.

**🎛️ My filter value was ignored. What happened?**
Every employer defines its own facet values. If your value is not one of them, the run log prints the list that site does offer so you can pick from it. Matching is case-insensitive and partial, so "Engineering" matches "Product Development and Engineering".

**🌐 Do I need a proxy?**
No. The service answered 12 out of 12 burst requests from a plain connection during testing, so proxy support is included but off by default. Turn it on for very large runs or if your network throttles outbound traffic.

**⚡ How fast is it?**
A 45-posting run finished in about 10 seconds, and a 5-posting cloud run in under 5 seconds. Listing pages are fixed at 20 postings by Workday, and detail requests run concurrently.

**📦 What formats can I export?**
CSV, JSON, Excel, and XML from the dataset tab, or straight from the Apify API.

**🔁 Can I scrape several employers in one run?**
Yes. Queue as many career site URLs and single job URLs as you like. Postings are deduplicated across the whole run.

**📄 Is the full job description included?**
Yes, twice. `descriptionText` is clean plain text with HTML entities decoded, and `description` keeps the original HTML.

### 🔌 Integrate with any app

Results land in an Apify dataset, which means webhooks, the REST API, scheduled runs, and the official Python and JavaScript clients all work out of the box. Wire a run-finished webhook into your own service and the postings arrive as JSON the moment a run completes.

### 🔗 Recommended Actors

- [Greenhouse Jobs Scraper](https://apify.com/parseforge/greenhouse-jobs-scraper) for employers on Greenhouse.
- [Lever Jobs Scraper](https://apify.com/parseforge/lever-jobs-scraper) for employers on Lever.
- [SmartRecruiters Jobs Scraper](https://apify.com/parseforge/smartrecruiters-jobs-scraper) for employers on SmartRecruiters.
- [Workable Jobs Scraper](https://apify.com/parseforge/workable-jobs-scraper) for employers on Workable.
- [Ashby Jobs Board Scraper](https://apify.com/parseforge/ashby-jobs-board-scraper) for employers on Ashby.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** this is an independent tool and is not affiliated with, endorsed by, or connected to Workday, Inc. or any employer whose career site you scrape. It collects only publicly available data.

# Actor input Schema

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

Paste any myworkdayjobs.com URL. A career site (https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite) is crawled in full. A single job URL (.../job/... or .../details/...) returns just that posting. Locale prefixes such as /en-US/ are handled automatically.

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

Free-text keyword sent to Workday's own search, exactly as the career site's search box does. Example: compiler, nurse, account executive. Leave empty to take every posting on the site.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `jobCategories` (type: `array`):

Filter by the career site's own Job Category values, written as plain names (Engineering, Sales, Marketing). Matching is case-insensitive and partial. Every Workday tenant defines its own category list, so the Actor reads the live list for the site you point it at and logs the values it found when a name does not match.

## `jobTypes` (type: `array`):

Filter by the site's Job Type facet, for example Regular Employee, Intern (Fixed Term), New College Graduate, Management.

## `timeTypes` (type: `array`):

Filter by the site's Time Type facet: Full time or Part time.

## `remoteTypes` (type: `array`):

Filter by the site's Remote Type facet where it offers one, for example Remote, Hybrid, Onsite, Flex.

## `locations` (type: `array`):

Filter by the site's location facets: country, region, state or city, for example United States of America, India, Santa Clara. Matched against every location facet Workday exposes for that site.

## `includeDescriptionHtml` (type: `boolean`):

Adds the original HTML of the job description next to the plain-text version. Turn it off for smaller CSV exports.

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

Workday's public API answers fine without a proxy, so this is off by default. Switch it on for very large runs or if your network rate-limits outbound requests.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
    }
  ],
  "searchText": "engineer",
  "maxItems": 10,
  "jobCategories": [
    "Engineering"
  ],
  "jobTypes": [
    "Intern"
  ],
  "timeTypes": [
    "Full time"
  ],
  "remoteTypes": [
    "Remote"
  ],
  "locations": [
    "United States of America"
  ],
  "includeDescriptionHtml": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Every scraped posting in a formatted table

## `fullData` (type: `string`):

Complete dataset with all 32 fields

# 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": [
        {
            "url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
        }
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/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": [{ "url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite" }],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/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 '{
  "startUrls": [
    {
      "url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
    }
  ],
  "maxItems": 10
}' |
apify call parseforge/workday-jobs-scraper --silent --output-dataset

```

## MCP server setup

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