Skip to main content
Glama

Open jobs from Workday career sites

workday_jobs
Read-only

Collect job postings from Workday career sites using full career site URLs, then filter by keywords, location, salary, work arrangement, employment type, seniority, and posting date.

Instructions

Open jobs from a Workday career site. Pass companies as full career site URLs as shown in the browser (for example https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite); bare company names are skipped. Also filters by salary, work arrangement, employment type, seniority and years of experience. Filter with keywords, excludeKeywords, locations, remoteOnly and postedWithinDays. Full descriptions are off by default here to save tokens; set includeDescription to true to get them. Not affiliated with Workday. Cost, charged to your own Apify account: $0.002 per job returned. Each call is capped at maxCostUsd (default $0.25). Defaults applied by this server when omitted: maxTotalJobs=25, includeDescription=false. Runs Apify Actor fecklesspleb/workday-jobs-scraper (https://apify.com/fecklesspleb/workday-jobs-scraper).

Input Schema

NameRequiredDescriptionDefault
dedupeByNoRemove duplicate jobs. Drop duplicates inside this run before they are output, so you never pay for them. None: every job is output (as before). Same job: a job with the same company, title and first location as one already output in this run is dropped (the dedupeKey field). Same company and title (merge locations): jobs of one company with the same title are output as one record whose locations list holds all their locations, with duplicateCount and mergedUids; such records are output when the company's board has been read. Duplicates of jobs output by earlier runs are not affected (use Only new jobs for that). Values: none = None; job = Same job (company + title + location); companyTitle = Same company and title (merge locations).none
keywordsNoTitle keywords (any). Keep jobs whose title contains at least one of these words (case-insensitive). Leave empty to keep all.
companiesNoWorkday career site URLs. One Workday career site URL per line, as shown in your browser, for example https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite or https://wd5.myworkdaysite.com/recruiting/qvc/QRG. A company careers page that links to or embeds a Workday site also works. The tenant, data center (wd1, wd3, wd5...) and site name are read from the URL. Bare company names and non-Workday URLs are skipped with a message, and the run fails if no entry is a valid Workday career site. Leave empty for a demo run: up to 4 sample jobs from https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite at the normal per-job price. The form is prefilled with this sample board and 'Max jobs in total' 4, which runs the same small demo (4 x $0.002 = $0.008); replace it with your own boards and clear or raise 'Max jobs in total' for a real run.
hasSalaryNoOnly jobs with a salary. Return only jobs that state a salary, from the ATS's pay field or a range in the description (any currency or period). Jobs without one are dropped before they are output, so they are never charged.
locationsNoLocations (any). Keep jobs whose location contains one of these strings, for example 'London', 'United States', 'Remote'.
seniorityNoSeniority. Keep jobs with one of these seniority levels (derived from the title). Jobs whose title shows no level are left out when this is set. Empty by default (no change).
timeRangeNoPosted within (fixed window). Optional. Only jobs whose ATS publish or update date falls in this window, as in career-site-jobs-feed. When set it replaces 'Posted within days'; 'Any time' turns the date limit off. Undated jobs follow 'Include undated jobs'. Empty by default (no change). Values: 1h = Last hour; 24h = Last 24 hours; 7d = Last 7 days; 30d = Last 30 days; all = Any time.
maxCostUsdNoMost this call may charge your Apify account, in US dollars. Default 0.25, maximum 5. Passed to Apify as maxTotalChargeUsd, the most Apify will charge for this run.
remoteOnlyNoRemote jobs only. Keep only jobs marked remote by the ATS or with 'remote' in the location.
onlyNewJobsNoOnly new jobs (monitoring mode). Return only jobs not returned by a previous run with this option on. State is kept in a named key-value store, so scheduled runs give you a clean feed of new postings and you pay only for new ones.
maxTotalJobsNoMax jobs in total. Stop the whole run after this many jobs. 0 means no limit (the value used when the field is empty). The run also stops at your 'Maximum cost per run'. The form is prefilled with 4 for a cheap sample run (4 x $0.002 = $0.008); clear it or raise it for real runs.
includeExpiredNoReport expired jobs. On scheduled runs, add a free record with status 'expired' for each job an earlier run returned that its career site no longer lists. Only sites read completely in this run are checked (not when 'Max jobs per company', 'Max total jobs' or the cost limit stopped the read, or when the site has rows past Workday's 2,000-row cap that could not be reached). Job records get status 'active' while this is on. Uses the state store.
maxConcurrencyNoCompanies in parallel. How many companies to scrape at the same time. Requests to each host are rate limited regardless.
stateStoreNameNoState store name. Named key-value store used by 'Only new jobs'. Use different names for independent monitors.workday-jobs-scraper-state
employmentTypesNoEmployment type. Keep jobs whose normalised employment type is one of these. Jobs whose ATS gives no type are left out when this is set. Empty by default (no change).
excludeKeywordsNoExclude title keywords. Drop jobs whose title contains any of these words, for example 'intern' or 'senior'.
visaSponsorshipNoVisa sponsorship. Filter on visaSponsorship, read from the description text (yes / no / not stated). Pattern-based, not a legal statement by the employer. When on, job details are fetched (slower runs) and visaSponsorship / visaSponsorshipEvidence are added to each record; the description itself is still only output when 'Include description' is on. Values: any = Any; yes = Mentions sponsorship is offered; not_no = Exclude jobs that say no sponsorship.any
workArrangementNoWork arrangement. Keep jobs with one of these arrangements (derived from the ATS field, location and title). Jobs with no detectable arrangement are left out when this is set. Empty by default (no change).
postedWithinDaysNoPosted within last N days. Keep only jobs first published in the last N days. Empty keeps all.
descriptionFormatNoDescription format. Plain text, HTML, or both. Values: text = Plain text; html = HTML; both = Both.text
maxJobsPerCompanyNoMax jobs per company. Stop after this many matching jobs per company. 0 means no limit.
includeDescriptionNoInclude description. Include the full job description. Workday detail pages are always read, so locations, requisition ID and company come back filled in. This setting only controls whether the description text is included.
includeUndatedJobsNoKeep jobs without a posting date. When 'Posted within last N days' is set, keep jobs whose ATS does not expose a date.
maxAnnualSalaryUsdNoMaximum annual salary (USD). Keep jobs whose annual USD salary starts at or below this amount (the bottom of the range, or its only figure). Same conversion and handling of jobs without a convertible salary as the minimum.
maxYearsExperienceNoMax years of experience required. Drop jobs whose description asks for more years than this (e.g. 2 for early-career). Jobs that state no number are kept. When set, job details are fetched (slower runs) and yearsExperienceMin / yearsExperienceMax are added to each record.
minAnnualSalaryUsdNoMinimum annual salary (USD). Keep jobs whose annual salary in US dollars reaches this amount (the top of the range, or its only figure, is at least this). Salaries are annualised (hour x 2,080, day x 260, week x 52, month x 12) and converted with a fixed rate table bundled with the Actor (rough reference rates, see salaryAnnualUsdMin). Jobs whose salary cannot be converted (none given, no pay period, or an unlisted currency) are dropped unless 'Keep jobs without a salary' is on.
searchInDescriptionNoMatch keywords in description too. Also match 'Title keywords' against the job description. Works with 'Include description' on or off, because Workday detail pages are always read.
includeJobsWithoutSalaryNoKeep jobs without a salary. With a minimum or maximum annual USD salary set, also keep jobs whose salary is missing or cannot be converted. Ignored when 'Only jobs with a salary' is on (jobs with no salary are dropped) and when no USD bound is set.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/idempotent=false, but the description adds substantial context beyond them: per-job pricing ($0.002), a maxCostUsd cap, server-applied defaults (maxTotalJobs=25, includeDescription=false), external Actor provenance, and a non-affiliation disclaimer. However, it does not describe the returned record shape despite there being no output schema, so it does not reach a 4 or 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the URL requirement, then filters, then cost/defaults. Dense but each sentence carries information; slightly long for a single paragraph yet not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 28 parameters and no output schema, the description is fairly complete: it covers cost model, defaults, demo behavior, and state store usage. The main gap is that it does not describe the shape of returned job records.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description reinforces a few (keywords, excludeKeywords, locations, remoteOnly, postedWithinDays, includeDescription, maxCostUsd) and states defaults, but does not add meaning beyond the schema for the 28 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verb and resource ('Open jobs from a Workday career site') and clarifies the URL-based input requirement with an example. It is distinguishable from greenhouse_jobs/lever_jobs/ashby_jobs by the Workday scope, though it never explicitly routes to those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains key usage conditions: pass full career site URLs, bare names are skipped, empty companies triggers a demo run, and descriptions are off by default. No explicit when-to-use-versus-alternative guidance for the sibling ATS tools, which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.