A focused Workday jobs scraper that collects structured job postings, application links, and hiring details from Workday-powered career sites. It helps recruiters, HR teams, and data analysts automate job discovery and tracking directly from Workday job portals.
Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for Workday Jobs Crawler you've just found your team — Let’s Chat. 👆👆
The Workday Jobs Crawler is a specialized tool for extracting fresh job listings and metadata from career sites built on Workday. It turns complex job pages into clean, structured records containing titles, locations, descriptions, application URLs, and metadata such as work type and posting dates.
Built for recruitment teams, HR analytics, staffing agencies, and job market researchers, this crawler eliminates repetitive manual browsing and copy-paste work. Instead, it delivers machine-readable data ready for dashboards, CRMs, talent pipelines, or downstream automation.
- Targets Workday-based job portals and discovers individual job posting pages automatically.
- Captures application URLs, job titles, locations, employment type, and organization information.
- Extracts rich job descriptions, responsibilities, qualifications, and work model (onsite, remote, or flex).
- Normalizes fields like country, location descriptor, IDs, and posting metadata for easier analysis.
- Produces consistent, structured JSON output suitable for ingestion into databases or analytic tools.
| Feature | Description |
|---|---|
| Targeted Workday job crawling | Connect to Workday-powered career portals and collect job postings across locations, teams, and categories. |
| Clean, structured job output | Normalize fields such as title, location, country, time type, and identifiers into a well-defined schema. |
| Deep job description capture | Extract full job descriptions, responsibilities, qualifications, and policy statements for downstream analysis. |
| Application-ready links | Collect direct application URLs so candidates or automations can jump straight to the apply flow. |
| Location & work model awareness | Capture structured location descriptors and work model (e.g., Flex, Remote, Onsite) for better filtering. |
| Posting & start date metadata | Store posting dates and start dates to help track freshness and hiring timelines. |
| Resume parsing support flag | Respect flags indicating whether resume parsing is expected or supported for the posting. |
| Robust for large portfolios | Designed to handle many postings across multiple Workday instances and job families efficiently. |
| Field Name | Field Description |
|---|---|
| id | Internal job identifier used by the source system. |
| title | Human-readable job title (e.g., “Machine Learning Engineer”). |
| url | Canonical job detail page URL for viewing the full posting. |
| applyUrl | Direct URL for starting the job application process. |
| canApply | Boolean indicating whether the job is currently open for applications. |
| description | Full rich-text job description including team, role, responsibilities, and qualifications. |
| hiringOrganization.name | Name of the hiring organization or company. |
| hiringOrganization.url | Public URL to the company’s career or overview page. |
| country.descriptor | Full country name associated with the job location. |
| country.id | Internal country identifier used by the source platform. |
| jobRequisitionLocation.descriptor | Location descriptor combining country/region/city (e.g., “USA, CA, Pleasanton”). |
| jobRequisitionLocation.country.alpha2Code | Two-letter country code (e.g., “US”). |
| location | Short location text displayed on the job card. |
| timeType | Work time type (e.g., “Full Time”, “Part Time”). |
| remoteType | Work model description (e.g., “Flex”, “Remote”, “Onsite”). |
| posted | Boolean or status indicating whether the job is currently posted. |
| postedOn | Human-readable posting time label (e.g., “Posted Today”). |
| startDate | Expected starting date for the role, when available. |
| jobPostingId | Platform-specific job posting identifier. |
| jobPostingSiteId | Identifier of the origin job site or channel. |
| jobReqId | Requisition identifier used by the hiring system. |
| includeResumeParsing | Flag indicating whether resume parsing is expected or enabled. |
| questionnaireId | Identifier for the main candidate questionnaire associated with the posting. |
| secondaryQuestionnaireId | Identifier for any additional questionnaires associated with the posting. |
| hiringOrganization | Flattened or nested hiring organization object when needed for advanced consumers. |
| metadata | Optional additional metadata fields such as pay ranges, legal notes, or work policy text. |
[
{
"applyUrl": "https://workday.wd5.myworkdayjobs.com/Workday/job/USA-CA-Pleasanton/Machine-Learning-Engineer_JR-0097159/apply",
"canApply": true,
"country": {
"descriptor": "United States of America",
"id": "bc33aa3152ec42d4995f4791a106ed09"
},
"description": "****Your work days are brighter here.****\n\nAt Workday, it all began with a conversation over breakfast. When our founders\nmet at a sunny California diner, they came up with an idea to revolutionize\nthe enterprise software market.\n\n... (truncated for brevity) ...\n\nWorkday is an Equal Opportunity Employer including individuals with\ndisabilities and protected veterans.\n",
"hiringOrganization": {
"name": "Workday, Inc.",
"url": "https://www.workday.com/en-us/company/careers/overview.html"
},
"id": "5c141a9e2bff1000da08726a21960000",
"includeResumeParsing": true,
"jobPostingId": "Machine-Learning-Engineer_JR-0097159",
"jobPostingSiteId": "Workday",
"jobReqId": "JR-0097159",
"jobRequisitionLocation": {
"country": {
"alpha2Code": "US",
"descriptor": "United States of America",
"id": "bc33aa3152ec42d4995f4791a106ed09"
},
"descriptor": "USA, CA, Pleasanton"
},
"location": "USA, CA, Pleasanton",
"posted": true,
"postedOn": "Posted Today",
"questionnaireId": "15cb5c09d59b10194f4f392d4e9e0000",
"remoteType": "Flex",
"secondaryQuestionnaireId": "17b317d5f803100e867834a8420d0000",
"startDate": "2025-05-28",
"timeType": "Full Time",
"title": "Machine Learning Engineer",
"url": "https://workday.wd5.myworkdayjobs.com/Workday/job/USA-CA-Pleasanton/Machine-Learning-Engineer_JR-0097159"
}
]
Workday Jobs Crawler/
├── src/
│ ├── main.py
│ ├── crawler.py
│ ├── parsers/
│ │ ├── workday_parser.py
│ │ └── description_cleaner.py
│ ├── clients/
│ │ └── http_client.py
│ ├── utils/
│ │ ├── logging_utils.py
│ │ ├── retry.py
│ │ └── time_utils.py
│ └── pipelines/
│ └── jobs_pipeline.py
├── config/
│ ├── settings.example.json
│ └── workday_sites.example.json
├── data/
│ ├── inputs.sample.json
│ └── sample_output.json
├── tests/
│ ├── test_parser.py
│ └── test_crawler.py
├── scripts/
│ └── run_local.sh
├── requirements.txt
├── Dockerfile
└── README.md
- Recruitment agencies use it to collect Workday job listings across multiple clients, so they can quickly identify open roles and match candidates at scale.
- In-house talent acquisition teams use it to centralize jobs from different regions or business units, so they can build unified dashboards and pipelines.
- HR analytics teams use it to track hiring trends, compensation patterns, and location demand from Workday postings, so they can make better workforce planning decisions.
- Job boards and aggregators use it to enrich their platforms with structured Workday job feeds, so their users see more up-to-date and relevant opportunities.
- Market researchers and consultants use it to study role evolution, skill demand, and AI/ML job growth, so they can deliver data-backed insights to clients.
Q1: Does this crawler work only with a single Workday site? No. You can configure it to work with one or many Workday-powered career sites by providing the appropriate base URLs or configuration entries. Each site can have its own settings such as paths, filters, or query parameters.
Q2: What format is the output generated in? The crawler produces structured JSON objects for each job posting. These can be exported to files, streamed to a database, or piped into other tools that expect JSON-based input for further processing.
Q3: Can I filter jobs by location, time type, or work model? Yes. Because location, time type, and remoteType are captured as separate fields, you can filter results either at crawl time (with configuration) or after the run using custom scripts or queries.
Q4: Does this tool handle rich job descriptions and long text fields?
Yes. Full-length job descriptions, including formatting and policy notes, are captured in the description field so that downstream applications can perform analysis, search, or summarization on the complete text.
Primary Metric: On a typical Workday careers site with several hundred active postings, the crawler can process 100–150 job detail pages per minute on a standard network connection while preserving full job content.
Reliability Metric: For stable Workday implementations, end-to-end job collection succeeds for more than 98% of reachable postings, with failed pages logged for easy inspection and retry.
Efficiency Metric: A single run generally consumes modest CPU and memory resources, enabling it to run comfortably on small virtual machines or containers while still handling large portfolios of listings.
Quality Metric: Extracted datasets consistently retain core job attributes (title, location, time type, identifiers, and descriptions) with high completeness, minimizing the need for manual cleanup or enrichment.
