# Workday Jobs Lookup — Careers Site Job Postings API (`accountable_eel/workday-jobs-lookup`) Actor

Look up any company's live Workday-hosted careers site and get its open roles — title, location, posted date, apply link. Filter by title, location, or remote, or watch for new postings since your last run. Charged once per company checked — none open costs nothing.

- **URL**: https://apify.com/accountable\_eel/workday-jobs-lookup.md
- **Developed by:** [Adrian Voss](https://apify.com/accountable_eel) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 successful lookups

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

## Workday Jobs Lookup

You give this actor a list of Workday careers-site URLs — the same link you'd paste into your
browser, like `https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite` — and it calls
Workday's own job-search API (`/wday/cxs/<tenant>/<site>/jobs`) directly, no login and no headless
browser. You get back one row per company: job titles, locations, how long ago each was posted,
and a working apply link, ready to drop into a spreadsheet, a Clay table, or a CRM.

### Who it's for

The accountable\_eel catalogue sells company intelligence columns for outbound. Each actor takes a
list of domains or company identifiers and returns one flat, stably-named row per input —
firmographics, registry IDs, tech stack, email route, hiring activity — the shape a Clay table, an
n8n workflow, or an AI agent can consume without post-processing. Pricing is pay-per-event and
per-domain: a few tenths of a cent for a row that was actually found, and nothing for a
miss, so a list that doesn't enrich costs you next to nothing. Where an official source exists —
VIES, GLEIF, SEC EDGAR, Brønnøysund, PRH, RDAP — it is queried directly instead of scraped. No
seat licence, no monthly minimum, no credit system to decode. Here the identifier is a company's
Workday careers-site URL and the "official source" is Workday's own CXS search endpoint, queried
live on every run.

### Why this one

- **Reads Workday's own API, not the rendered page.** No headless browser, no waiting for
  client-side JavaScript to paint a job board — this calls the same JSON endpoint the careers site
  itself calls.
- **Works for any tenant.** The tenant, pod (`wd5`, `wd12`, …), and site name are parsed generically
  out of the URL you paste — nothing is hardcoded to one employer.
- **Real filters, not a raw dump.** Narrow by title keyword, excluded keyword, location, or
  remote-only, and combine them — see [How to use](#how-to-use).
- **A hiring-alert mode.** Turn on `onlyNewSinceLastRun`, put the actor on a schedule, and every
  run after the first returns only postings you haven't seen before.
- **You only pay for a company that resolves.** A URL that isn't a live Workday site, or a site
  with zero open roles, comes back `found: false` and is never charged.

### What you get

One row per input URL by default, expanded into one row per job posting when the console's row
expansion is on (each job row repeats the company-level fields and adds its own title/location/
posting/apply columns). Every field is stably named — safe to build a Clay column or an agent
prompt around.

| Field | Type / format | What it is |
| --- | --- | --- |
| `query` | text | The Workday careers-site URL you submitted. |
| `found` | boolean | `true` if the URL resolved to a live Workday site. |
| `status` | text | `OK`, `NOT_FOUND`, `BLOCKED`, `BAD_FORMAT`, or `REQUEST_FAILED`. |
| `message` | text | Present only on a miss row (`found: false`) — a short explanation of why. |
| `tenant` | text | The Workday tenant name, parsed from the URL. |
| `site` | text | The careers-site name, parsed from the URL. |
| `totalReported` | number | Workday's own count of the company's *entire* open-role total — independent of pagination or filters. |
| `totalJobCount` | number | How many postings were on the fetched page (up to 20, Workday's own page size) **before** any filtering. |
| `jobCount` | number | How many of that page's postings matched your filters. |
| `newJobs` | number or `null` | Postings new since your last run — only populated when `onlyNewSinceLastRun` is on. |
| `firstRun` | boolean or `null` | Whether this was the baseline run of a delta watchlist — only populated when `onlyNewSinceLastRun` is on. |
| `note` | text | A human-readable caveat, e.g. `"Showing first 20 of 2000 — Workday's default page size."` |
| `jobs` | array | The full list of matching postings for this company, each with `title`, `location`, `postedOn`, `remote`, `applyUrl`. |
| `title` | text | Job title (present on each expanded job row). |
| `location` | text | Job location as Workday reports it (present on each expanded job row). |
| `postedOn` | text | Workday's own relative posting age — `"Posted Today"`, `"Posted 30+ Days Ago"` — kept verbatim. There is no separate absolute-date field; see the FAQ. |
| `remote` | boolean | Best-effort remote flag, matched against the location and title text. |
| `applyUrl` | link | The direct apply link for that posting. |
| `scrapedAt` | text (ISO datetime) | When this row was fetched. |

### Price

$5.2 per 1,000 companies, plus a $0.0001 start fee. Misses (`found:false`) are never charged.

1,000 companies through this actor: **~$5.20** if every one resolves to a live Workday site with
open roles, less if some don't. The same 1,000 rows through a credit-based enrichment platform
typically runs **$80–$400**. A company with no Workday careers site, or with zero open roles, costs
nothing either way here — you're only billed for a company that actually answers.

### How to use

1. **In the Apify Console.** Open the actor page and click **Start** — the `companies` field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
2. **Via the API.** Call it directly with a POST request — no Console needed once you have an API token:
   ```bash
   curl "https://api.apify.com/v2/acts/accountable_eel~workday-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
     -X POST \
     -H "Content-Type: application/json" \
     -d '{"companies":["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"]}'
   ```
3. **On a schedule.** Save this actor as an Apify **Task** with the input you want, then add a **Schedule** (hourly, daily, weekly) so it runs on its own — no server of your own required.

Paste one Workday careers-site URL per line into `companies` — the full URL as it appears in your
browser, locale prefix and all (`en-US` is accepted and ignored):

```json
{
  "companies": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
    "https://salesforce.wd12.myworkdayjobs.com/en-US/External_Career_Site"
  ],
  "maxConcurrency": 5
}
```

`maxConcurrency` (default 5, max 20) caps parallel requests. This target has no browser fallback,
so getting rate-limited costs you more than going slow — a lower value is safer than pushing it
high. `proxyConfiguration` lets you set Apify Proxy options directly; residential proxies help if
you see blocked or empty responses.

**Filters** (all optional, all under **🎯 Job filters** in the Input tab):

| Input | What it does |
| --- | --- |
| `titleKeywords` | Keep only roles whose title contains at least one of these — case-insensitive, partial words count (`"engineer"` matches *Engineering Manager*). |
| `excludeTitleKeywords` | Drop any role whose title contains one of these, applied after `titleKeywords`. |
| `locations` | Keep only roles whose location contains one of these. |
| `remoteOnly` | Keep only roles that read as remote — matches *remote*, *anywhere*, *work from home*, *wfh*, *distributed* in the location, and the literal word *remote* in the title. |

Different filters combine with AND; values inside one filter combine with OR. Filtering happens
before the row is built, so it applies the same whether you're reading one row per company or one
row per job.

Two counts protect you from ambiguous zeros: `totalJobCount` is what was on the fetched page before
filtering, `jobCount` is what matched your filters, and `totalReported` is Workday's own count of
the company's whole open-role total, independent of both. A company whose roles all get filtered
out still returns a `found: true` row with `jobCount: 0` — you asked, and got a real answer, so it's
charged like anything else. Only a URL with no live Workday site, or zero open roles company-wide,
comes back `found: false` and free.

**Watching for new jobs.** Turn on `onlyNewSinceLastRun` and put the actor on a schedule to get a
hiring alert instead of a full dump each time. The first run returns everything matching your
filters and remembers it; every run after returns only what's new, with `newJobs` telling you how
many and `firstRun` telling you whether this was the baseline. A quiet run still returns a row
(`jobCount: 0`, `newJobs: 0`) so you can tell "nothing changed" from "this broke." The seen-list
lives in a named key-value store in your own Apify account (`workday-jobs-lookup-state`), keyed by
tenant and site, and your filters are part of that identity — change `titleKeywords` and you start
a fresh watchlist.

### Input

```json
{
  "companies": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
  ]
}
```

One company per line — paste the full Workday careers-site URL you'd see in your browser. Accepted formats: https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, https://salesforce.wd12.myworkdayjobs.com/en-US/External\_Career\_Site.

### Sample output

| query | found | status | tenant | site | totalReported | jobCount | totalJobCount | newJobs | firstRun | note | jobs | title | location | postedOn | remote | applyUrl | scrapedAt |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite | true | OK | nvidia | NVIDIAExternalCareerSite | 2000 | 20 | \<open jobs on this page (before filters)> | <new since last run> | \<first run of this watchlist?> | Showing first 20 of 2000 — Workday's default page size. | \<all jobs (full list)> | Senior Software Engineer, Cloud-Native Stack – CSP Engagements | 5 Locations | Posted Today | \<remote? (best-effort)> | https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Software-Engineer--Cloud-Native-Stack---CSP-Engagements\_JR2001098 | 2026-08-23T23:07:36.711Z |

A found row, unexpanded:

```json
{
  "query": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
  "found": true,
  "data": {
    "tenant": "nvidia",
    "site": "NVIDIAExternalCareerSite",
    "totalReported": 2000,
    "jobCount": 20,
    "totalJobCount": 20,
    "newJobs": null,
    "firstRun": null,
    "note": "Showing first 20 of 2000 — Workday's default page size.",
    "jobs": [
      {
        "title": "Senior Software Engineer",
        "location": "Santa Clara, CA",
        "postedOn": "Posted 3 Days Ago",
        "remote": false,
        "applyUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/..."
      }
    ]
  },
  "scrapedAt": "2026-08-20T12:00:00.000Z"
}
```

A URL that isn't a valid Workday careers-site link, doesn't resolve, or resolves with zero open
postings comes back as `{"found": false, ...}` and is never charged.

### Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

```bash
curl "https://api.apify.com/v2/acts/accountable_eel~workday-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"companies":["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"]}'
```

**n8n.** Add an HTTP Request node: Method `POST`, URL `https://api.apify.com/v2/acts/accountable_eel~workday-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>`, Body Content Type `JSON`, JSON Body `{"companies":["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"]}` (swap in an expression from an earlier node for a real value).

**Clay.** Add an "HTTP API" column: Method `POST`, URL `https://api.apify.com/v2/acts/accountable_eel~workday-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>`, Body `{"companies":["{{company}}"]}`, mapping the row's company into the `companies` array.

**MCP.** In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "Workday Jobs Lookup | Apify" — the agent will find and run this actor.

### Tips

- **Paste the exact browser URL.** The parser expects the tenant/pod/site pattern
  (`<tenant>.<pod>.myworkdayjobs.com/<site>`) as it appears in the address bar, locale prefix
  optional. A shortened or redirected link won't parse.
- **Keep concurrency modest on a big batch.** There's no browser fallback here, so a blocked
  response costs you a retry, not a silent recovery — start at the default (5) and raise it only if
  you're not seeing blocks.
- **Use `totalReported`, not `totalJobCount`, for headcount comparisons across companies.**
  `totalJobCount` is capped at the 20-per-page limit; `totalReported` is the company's real total.
- **Set filters once, then schedule.** Combine `titleKeywords`/`locations`/`remoteOnly` with
  `onlyNewSinceLastRun` for a running "new roles matching X" alert instead of re-reading a full
  dump each week.
- **Don't pair delta mode with "only keep rows containing."** A row-level keyword filter can drop
  the `jobCount: 0` heartbeat row that tells you the watchlist is alive and just quiet.

### vs. alternatives

| | What it costs | What you get | Trade-off |
|---|---|---|---|
| **This actor** (`workday-jobs-lookup`) | $0.0052 per company whose Workday site is found (less on paid tiers), $0.0001 actor start, nothing for a company with no live Workday site | Every open posting on the first page of a company's Workday careers site — title, location, relative post age, apply URL — filtered by title keyword, location, or remote, with `onlyNewSinceLastRun` for a hiring-alert schedule | Workday only. v1 reads only the first page (up to 20 postings, though `totalReported` shows the real total), and there's no absolute posted date — Workday's own listing endpoint never provides one. |
| **TheirStack** | $0.005–$0.03 per company | A job-postings dataset with history, normalised across many ATS platforms and job boards | Broader coverage than one platform, and it keeps history. This reads Workday's own API live, at the bottom of that price range. |
| **Workday's own API (DIY)** | Free | The same JSON | It's the same source, but you handle the tenant/pod/site parsing from a careers-site URL, the CXS request shape, title/location/remote filtering, the delta seen-list, and the retries — this hands you a flat, filtered table instead. |
| **Clay** | $0.08–$0.40 per enriched row in credits, on top of a seat | A whole enrichment workspace — waterfalls across dozens of providers, plus the table and the sequencing around it | If you want one place that does everything and you're not counting rows, that's Clay. This is one column, priced per column, callable *from* Clay via its HTTP step. |

Prices for third-party tools are their published list prices as of August 2026 and are not tracked
here — check the vendor before relying on the comparison.

### FAQ

**What input format do I need?** The full careers-site URL as it appears in your browser, e.g.
`https://<tenant>.<pod>.myworkdayjobs.com/<site>`. A locale prefix like `en-US` is also accepted.

**What if my input isn't a valid Workday URL?** It comes back `found: false` and is never charged —
one bad item doesn't fail the whole run.

**Why was I charged for a company that returned 0 jobs?** Because its careers site resolved and had
open roles on the fetched page — they just didn't match your filters, or weren't new since your
last run. `totalJobCount` shows how many were actually on that page before filtering, and
`totalReported` shows the company's whole open-role count regardless of the page or your filters. A
company with no Workday site, or nothing open at all, comes back `found: false` and free.

**Why is there no `postedDate` field?** Workday's own job-search endpoint — the one this actor calls
— only ever reports posting age as relative text (`"Posted Today"`, `"Posted 30+ Days Ago"`). The
absolute calendar date lives on a separate per-job detail endpoint this actor doesn't call (one
extra request per posting, per company). Rather than fabricate a date from that text or ship a
column that's always empty, that field was dropped: `postedOn` carries Workday's own text verbatim,
and there's no `postedAfter` filter, because it couldn't actually filter on anything real.

**How does the "new since last run" state work, and can I reset it?** Turn on
`onlyNewSinceLastRun` and schedule the actor; the seen-list is kept in a named key-value store
(`workday-jobs-lookup-state`) inside your own Apify account, one entry per tenant+site, so nobody
else can see it. Delete that store to reset every watchlist. The identity it tracks is derived from
each posting's `externalPath` (its URL path) — Workday's listing has no native job id to use
instead. Changing your filters starts a fresh watchlist automatically.

**Does this paginate beyond the first 20 jobs?** No — v1 reads Workday's own default first page (up
to 20 postings) per query, plus `totalReported` so you know the real total.

**Should I use a proxy, and is there a rate limit to worry about?** Residential proxies help if
you're querying many tenants in one run or see blocked/empty responses — set this via
`proxyConfiguration`. There's no published Workday rate limit; `maxConcurrency` (default 5, max 20)
is the lever you control, and lower is safer since there's no browser fallback to recover a block.

**Is this GDPR-safe to run against EU companies?** The actor only reads what a company already
publishes on its own public careers site — job titles, locations, and apply links, no personal data
about applicants or employees. You're responsible for how you use the output, same as with any
public-web lookup.

**Can I call this from an AI agent instead of the Console?** Yes — it runs synchronously over the
Apify API, and it's discoverable through the Apify MCP server (ask for "Workday Jobs Lookup |
Apify"). See [Use it from Clay, n8n, Make, or an AI agent](#use-it-from-clay-n8n-make-or-an-ai-agent).

### Related actors

- [ATS Jobs Unified Lookup](https://apify.com/accountable_eel/ats-jobs-unified-lookup)
- [Personio Jobs Lookup](https://apify.com/accountable_eel/personio-jobs-lookup)
- [Greenhouse Jobs Lookup](https://apify.com/accountable_eel/greenhouse-jobs-lookup)

# Actor input Schema

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

One company per line — paste the full Workday careers-site URL you'd see in your browser. Accepted formats: https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, https://salesforce.wd12.myworkdayjobs.com/en-US/External\_Career\_Site. You're only charged for the ones we actually find — a miss costs nothing.

## `testRun` (type: `boolean`):

Turn this on to test your input on a small sample before running the full list. Turn it off to process everything.

## `onlyFound` (type: `boolean`):

Only keep rows where something was actually found. Misses are always free, whether or not you show them here.

## `includeKeywords` (type: `array`):

Optional. Only keep results that mention at least one of these words (e.g. a job title, a city, a product name). Leave empty to keep everything.

## `excludeKeywords` (type: `array`):

Optional. Drop any result that mentions one of these words. Leave empty to skip nothing.

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

Optional. Stop the run once this many results have been found — useful for a quick, cheap sample. Leave blank for no limit.

## `titleKeywords` (type: `array`):

Optional. Keep only roles whose title contains at least one of these words — e.g. "engineer", "account executive", "designer". Case doesn't matter, and partial words work ("engineer" matches "Engineering Manager"). Leave empty to keep every role.

## `excludeTitleKeywords` (type: `array`):

Optional. Drop any role whose title contains one of these words — e.g. "intern", "senior", "contract". Applied after the include list above, so a role matching both is dropped.

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

Optional. Keep only roles whose location mentions one of these — e.g. "Berlin", "New York", "United Kingdom". Case doesn't matter and partial matches work. Leave empty to keep every location.

## `remoteOnly` (type: `boolean`):

Keep only roles whose location or title says remote (also matches "anywhere", "work from home", "distributed"). Companies label remote work inconsistently, so treat this as a strong filter, not a guarantee.

## `onlyNewSinceLastRun` (type: `boolean`):

Turn this on for a scheduled watchlist: the first run returns everything that matches and remembers it, and every run after that returns only postings it hasn't shown you before. A company with nothing new still gets a row (with 0 jobs), so a quiet schedule never looks like a broken one. Changing the filters above starts a fresh watchlist.

## `columns` (type: `array`):

Choose which pieces of information to include in each result row. All are included by default.

## `expandRows` (type: `boolean`):

When on, each job posting found gets its own row instead of being grouped under its company. You're still only charged once per company, no matter how many rows it produces.

## `maxConcurrency` (type: `integer`):

Parallel requests. Keep conservative — this target has no browser fallback, so getting blocked costs more than slow-and-steady.

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

Apify Proxy config. Residential recommended for anti-bot-sensitive targets.

## Actor input object example

```json
{
  "companies": [
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
  ],
  "testRun": false,
  "onlyFound": false,
  "includeKeywords": [],
  "excludeKeywords": [],
  "titleKeywords": [],
  "excludeTitleKeywords": [],
  "locations": [],
  "remoteOnly": false,
  "onlyNewSinceLastRun": false,
  "columns": [
    "tenant",
    "site",
    "totalReported",
    "jobCount",
    "totalJobCount",
    "newJobs",
    "firstRun",
    "note",
    "jobs",
    "title",
    "location",
    "postedOn",
    "remote",
    "applyUrl"
  ],
  "expandRows": true,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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"
    ],
    "includeKeywords": [],
    "excludeKeywords": [],
    "titleKeywords": [],
    "excludeTitleKeywords": [],
    "locations": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("accountable_eel/workday-jobs-lookup").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"],
    "includeKeywords": [],
    "excludeKeywords": [],
    "titleKeywords": [],
    "excludeTitleKeywords": [],
    "locations": [],
}

# Run the Actor and wait for it to finish
run = client.actor("accountable_eel/workday-jobs-lookup").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"
  ],
  "includeKeywords": [],
  "excludeKeywords": [],
  "titleKeywords": [],
  "excludeTitleKeywords": [],
  "locations": []
}' |
apify call accountable_eel/workday-jobs-lookup --silent --output-dataset

```

## MCP server setup

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

```

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/fEJcmXZIYfASMk8Of/builds/UwVW10AxgMudpdubf/openapi.json
