Workday Jobs Scraper API
Pricing
Pay per event
Workday Jobs Scraper API
Job postings from public Workday career sites (myworkdayjobs.com) through the same JSON endpoints the career page uses. Title, location, posting date, job description as clean text, and recruiter contacts removed.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Kman
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Share
Workday Jobs Scraper
Job postings from public Workday career sites (*.myworkdayjobs.com), read from the same public JSON endpoints the career page uses. One item per job, with the job description as clean text and recruiter contact details removed.
Independent tool. Not affiliated with, endorsed or sponsored by Workday, Inc. or any employer whose career site it reads. Company names and trademarks belong to their owners.
What it does
- Takes one or more public career site URLs, for example
https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite. A locale segment such as/en-US/is optional. Any other host is rejected, and that URL gets an error item with no charge. - For each career site, makes one list request per page of 20 jobs (
POST /wday/cxs/{tenant}/{site}/jobs) and, whenincludeDescriptionis on, one detail request per job (GET /wday/cxs/{tenant}/{site}{externalPath}). - Sends
searchTextto Workday's own search.postedWithinDaysandlocationContainsare checked on the list data before any detail request, except for multi-location postings, which need the detail to check every location. - Never logs in and never calls application or candidate endpoints.
Input
{"startUrls": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"],"searchText": "engineer","maxItems": 20,"includeDescription": true,"postedWithinDays": 30,"locationContains": "Santa Clara"}
| Field | Type | Default | Notes |
|---|---|---|---|
startUrls | string[] | required | Career site URLs. Max 50 per run. Duplicates of the same site count once. |
searchText | string | — | Sent to Workday's search. |
maxItems | integer | 50 | Jobs charged per run. Hard cap 1000, enforced in code. |
includeDescription | boolean | true | Adds the description (text and HTML) and additional locations. Off = list data only. |
postedWithinDays | integer ≥ 0 | — | Uses Workday's postedOn text (see limits). |
locationContains | string | — | Case- and accent-insensitive. Postings with several locations are checked location by location. |
Output (one item per job)
{"company": "nvidia","title": "Senior DFX Software Engineer - Machine Learning","jobId": "JR2023503","url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-DFX-Software-Engineer---Machine-Learning_JR2023503","location": "US, CA, Santa Clara","additionalLocations": [],"remoteType": null,"timeType": "Full time","postedOn": "Posted Today","postedDate": "2026-10-23","descriptionText": "We are now looking for a Senior DFX Software Engineer ...","descriptionHtml": "<p>We are now looking for a Senior DFX Software Engineer ...","source_url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite","retrieved_at": "2026-10-23T15:48:33.353Z","source_name": "Workday","status": "ok","error_message": null,"warnings": []}
statusisok(a job, charged) orerro(a career site or URL that could not be read, free).error_messagesays why.remoteTypeis only present when the tenant publishes it. NVIDIA does not, so it isnullthere.descriptionHtmlis null whenincludeDescriptionis off.- Warnings:
contato_removido(a contact was removed),detalhe_indisponivel(the detail request failed, so the job is listed without its description),teto_margem:<tenant>,paginacao_falhou:<tenant>:<motivo>,maxItems_limitado:<n>.
The key-value record RUN_SUMMARY has the run status (ok, sem_resultado, parcial, fonte_indisponivel, erro_url, erro_input), completo, the stop reason motivo (maxItems, teto_cobranca, prazo_interno, teto_margem), per-company HTTP status and counts, charged events and a margem block.
Pricing (pay per event)
| Event | When | Proposed price |
|---|---|---|
inicio-run | Once per run, after the input is valid and at least one career site URL is valid | US$0.002 |
job | Each job item with status ok (a job whose detail request failed is returned with the warning detalhe_indisponivel and is not charged) | US$0.001 |
Invalid input and runs where no URL is valid are not charged. Error items are free. The maximum charge per run (ACTOR_MAX_TOTAL_CHARGE_USD) is respected.
Limits
- Memory 256 MB, timeout 300 s. The Actor stops on its own at 270 s (or 20 s before the platform timeout, if that comes first) and keeps what it already saved.
- Requests run one at a time, at least 250 ms apart. Up to 3 tries on HTTP 429 and 5xx, with Retry-After honored up to 10 s.
- A source failure never fails the run. A career site that is down, returns 404, or returns a non-JSON page gets an
erroitem and the run endsSUCCEEDED. postedOnis read in English (Posted Today,Posted Yesterday,Posted N Days Ago,Posted 30+ Days Ago).Posted 30+ Days Agocounts as 31 days: withpostedWithinDays30 or less it is dropped, and above 30 it is kept because its exact age is not shown. Jobs with an unreadablepostedOnare dropped whenpostedWithinDaysis set.- Cost guard. Before each request the Actor checks that the estimated cost (compute time since the start, plus a 20 s tail for the request in flight, plus download bytes at US$0.20/GB) stays under 80% of the revenue charged so far, minus US$0.0005. When it would not, the run stops with
motivo: teto_margemandstatus: parcial. With only the start charge, a run with no matching job stops after about one minute of compute; each charged job gives roughly another minute. The cost guard uses the time already spent instead of the full deadline. Reserving the full deadline would need about US$0.004 of compute before the first request, which is more than the US$0.0011 the start charge leaves after the 80% rule.
Polite crawling
- Public, unauthenticated GET and search POST only. One request at a time, 250 ms apart, with capped backoff on 429 and 5xx.
- Check each site's
robots.txtand terms of use before large runs. You are responsible for how you use the data.
Data use and privacy
Job postings are company data. The only personal data that can appear is a recruiter's contact inside the free text. The Actor removes:
- e-mail addresses (
[email removido]), - Brazilian and US-format phone numbers (
[telefone removido]), - lines such as
Recruiter: Name,Recrutador(a): NomeorTalent Acquisition: Name(in the text and in the HTML),
and adds the contato_removido warning. No candidate data is read or stored.
The filter is pattern based. Check the output before you use it for mailings or a CRM, and make sure your use meets the rules that apply to you (for example LGPD or GDPR).
Known limits
- Phone detection covers Brazilian and US formats. Other formats may pass through.
- Multi-location postings show a text such as
6 Locationsin the list. The location filter then checks each location in the detail, which costs one detail request per such job. postedOnis parsed only in English. Other locales are kept as raw text and are dropped bypostedWithinDays.
Workday Jobs Scraper (português)
Vagas publicadas em sites de carreira públicos do Workday (*.myworkdayjobs.com), lidas pelos mesmos endpoints JSON que a página de carreira usa. Um item por vaga, com a descrição em texto limpo e sem contato pessoal de recrutador.
Entrada: uma ou mais URLs de sites de carreira (startUrls). Outros hosts são recusados com um item erro, sem cobrança. Saída: um item por vaga (company, title, jobId, url, location, postedDate, descriptionText, descriptionHtml, status, warnings etc.). Erros de fonte não derrubam o run: ele termina com sucesso e registra um item erro.
Preços: inicio-run US$0,002 por run com URL válida; job US$0,001 por vaga com status: ok. Erros não são cobrados.
Limites: até 50 URLs por run; maxItems padrão 50, teto de 1000 no código; 256 MB; prazo interno de 270 s; requisições uma a uma, com 250 ms entre elas. A trava de custo para o run antes de gastar mais do que 80% da receita cobrada.
Privacidade (LGPD): a vaga é dado da empresa. E-mails, telefones (BR e EUA) e linhas do tipo Recrutador(a): Nome saem da descrição, com o aviso contato_removido. Nenhum dado de candidato é lido ou guardado. O uso dos dados é responsabilidade de quem usa.
Related Actors
More Actors from the same publisher:
- Greenhouse Jobs Scraper API: Job postings from public Greenhouse job boards, with departments and clean descriptions.
- Ashby Jobs Scraper API: Job postings from public Ashby job boards, with department, employment type and pay summary.
- Lever Jobs Scraper API: Job postings from public Lever job boards, with clean descriptions.
- Brazil Jobs Scraper: Greenhouse & Lever (Vagas BR): Job openings at Brazilian companies from public Greenhouse and Lever job boards, with normalized city, state and work model.
Browse the full catalog: kman-br.github.io (Português).