Nimbryxo Studio

Use Workday Careers Site Job Listings Extractor with Python

Pull job postings from any company's Workday careers site: title, location, requisition ID, posting and start dates, time type, remote status and full description. Filter by keyword, location or posting date.

1. Choose the data you need

Review the published README for supported collection modes, examples, and limits. The recipe below uses the current published input definition.

2. Prepare a source-based input

This JSON contains published prefills and required-field defaults. Review every value for your task before running it; it is not a promise of successful collection.

{
  "includeJobFamily": false,
  "jobFamilies": [],
  "locations": [],
  "maxItems": 3,
  "mode": "careerSite",
  "postedWithin": "any",
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "region": "auto",
  "remoteOnly": false,
  "scrapeDetails": false,
  "startUrls": [
    "https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"
  ]
}

Download input.example.json and save your reviewed copy as input.json.

FieldTypeRequiredDescription
modestringrequiredHow to find jobs. 'Scrape career site URLs' accepts careers pages or job URLs. 'Scrape a tenant by name' uses tenant + site. 'Scrape specific job URLs' requires /job/... URLs in startUrls.
startUrlsarrayoptionalPublic Workday careers-site or job URLs (mode=careerSite or jobDetail). Paste the URL from your browser; both myworkdayjobs.com and myworkdaysite.com are supported. In careerSite mode a careers URL scrapes the site's jobs and a /job/... URL scrapes that single posting; in jobDetail mode use a /job/... URL.
tenantstringoptionalWorkday tenant name, for example 'nvidia' or 'capitalone' (mode=tenant). You can also paste the full careers URL here or use 'tenant/site'. When the site ID is omitted, the actor finds the tenant's first public site automatically.
sitestringoptionalOptional career site identifier shown in the URL after the tenant host, for example 'NVIDIAExternalCareerSite' or 'External_Career_Site' (mode=tenant). It is case-sensitive. Leave blank to discover the tenant's first public site automatically.
regionstringoptionalWorkday data-center region. Leave 'auto' to detect it, or set wd1, wd3, wd5, wd12, wd103, and similar when you already know it (mode=tenant).
searchTextstringoptionalOptional keyword passed to the site's own job search, for example 'engineer' or 'marketing'. Workday searches titles and descriptions.
locationsarrayoptionalOptional locations to keep. Use names such as 'United States', 'New York', 'Remote' or 'US, CA, Santa Clara'; the actor matches them against the site's own location filters. Facet IDs are also accepted.
jobFamiliesarrayoptionalOptional job families or categories to keep, for example 'Engineering', 'Sales' or 'Finance'. Names come from the site's own Job Category filter; IDs are also accepted.
remoteOnlybooleanoptionalKeep only postings the employer explicitly marks as remote. Hybrid and onsite postings are excluded. This turns on full detail fetching.
postedWithinstringoptionalKeep jobs posted within this window. 'Any time' applies no date filter. Use Posted After for an exact cutoff date.
postedAfterstringoptionalOptional exact cutoff date in YYYY-MM-DD form. When both Posted Within and Posted After are set, the stricter cutoff wins.
startDateFromstringoptionalOptional YYYY-MM-DD cutoff for the role's start date. Only applies when the posting publishes a start date. This turns on full detail fetching.
scrapeDetailsbooleanoptionalFetch each posting's public job page for the full description, exact posting date, employment type, work model and every location. Turn off for a fast listing-only run (title, location, requisition ID, posting label and URL). Direct job URLs always fetch details because a listing has no record for them.
includeJobFamilybooleanoptionalAdd each job's family or category (for example Engineering or Sales). This uses the site's own Job Category filter and is skipped automatically when a site has no such filter.
maxItemsintegeroptionalMaximum number of jobs to save across all URLs. Jobs are returned in URL order, so a large first site can use the whole cap.
proxyConfigurationobjectoptionalOptional. The actor works without a proxy and chooses a working connection automatically; change this only if you need a specific proxy setup.

3. Start an Actor run

Set APIFY_TOKEN in your environment. Python 3.10 or newer is sufficient; this recipe uses no third-party packages.

Execution may incur charges. Review current pricing on Apify. The request asks for a 120-second timeout and a charge limit; these settings are subject to Apify’s pricing and do not guarantee an all-inclusive spending cap.

import json
import os
import urllib.request

# Save the schema-derived example as input.json; review and edit it first.
with open("input.json", encoding="utf-8") as stream:
    actor_input = json.load(stream)

token = os.environ["APIFY_TOKEN"]
request = urllib.request.Request(
    "https://api.apify.com/v2/acts/vBZKUgBIGEdKTY5mi/runs?timeout=120&maxTotalChargeUsd=0.50",
    data=json.dumps(actor_input).encode("utf-8"),
    headers={"Authorization": "Bearer " + token, "Content-Type": "application/json"},
    method="POST",
)
# This starts a potentially billable run. Do not automatically retry this POST.
with urllib.request.urlopen(request, timeout=40) as response:
    run = json.load(response)["data"]
print("Run ID:", run["id"])
print("Status:", run["status"])
# Inspect and download results in Apify Console once the run succeeds.

4. Inspect the actual results

Open the run in Apify Console and wait for a successful completion. Use the published output schema to locate results and the dataset schema to understand declared views. Missing or optional record fields must not be treated as guaranteed values.

One record per job posting from a Workday careers site, with exact posting dates, every location, job family, remote/hybrid status, time type, salary range when published, full description and apply link.

Questions before you run

Which inputs are required?

The published required fields are mode

What does this guide verify?

The fields, prefills, and schema links are rendered from the published build. This is a usage recipe, not a paid live extraction test. Source availability and collection results can vary.

What if the run request times out?

Check Apify Console before retrying. The first request may already have created a run. Do not automatically repeat a run-creation POST.

Generated from source build L7eadpJIq6UsaeicD and its README and schemas. Source changes regenerate this guide; no third-party editorial claims are inferred.