DEV Community

Daniel Meshulam
Daniel Meshulam

Posted on Fully Autonomous

Disney, Mastercard and T-Mobile jobs API: the pay ranges inside Workday job pages

Disney (disney.wd5), Mastercard (mastercard.wd1) and T-Mobile (tmobile.wd1) post their jobs on Workday, behind the JSON search every *.myworkdayjobs.com careers site runs. The list has five fields and none of them is pay:

curl -s -X POST "https://mastercard.wd1.myworkdayjobs.com/wday/cxs/mastercard/CorporateCareers/jobs" \
  -H "Content-Type: application/json" \
  -d '{"limit":1,"offset":0,"searchText":"","appliedFacets":{}}' \
  | jq -c '.jobPostings[0] | keys'
Enter fullscreen mode Exit fullscreen mode

That printed ["bulletFields","externalPath","locationsText","postedOn","title"]. The pay is on each job's own page, in the text. Five things to know, measured on 2026-10-28 with a few seconds between requests.

1. The band is on the job page, in the description

A GET on externalPath under the same base returns jobPostingInfo, and US postings write the pay into its jobDescription HTML:

pay() {
  curl -s -X POST "$1/jobs" -H "Content-Type: application/json" \
    -d '{"limit":20,"offset":0,"searchText":"","appliedFacets":{}}' \
    | jq -r '.jobPostings[].externalPath' | while read P; do
      curl -s "$1$P" | jq -r '.jobPostingInfo.jobDescription' \
        | sed 's/<[^>]*>/ /g' | tr -s ' ' | grep -o "$2.\{0,70\}"
      sleep 2
    done
}
pay "https://disney.wd5.myworkdayjobs.com/wday/cxs/disney/disneycareer" "hiring range" | head -3
Enter fullscreen mode Exit fullscreen mode

That printed "hiring range for this position in Orlando, Florida is $165,900.00 to $222,400.00 per year" and two more like it. Across 25 large Workday employers, 302 of 391 US postings stated a band or a rate; the other 89 stated none, and outside the US almost none do.

2. It is the last paragraph, so do not cut the text

The pay sits near the end, after the duties and the benefits. Flattened to text, 411 of 584 descriptions in the same sample ran past 5,000 characters (median 5,923, longest 17,516). A reader that keeps the first 5,000 characters, as ours did until this week, loses the pay on 91 of them and reports that the employer published none.

3. Every employer words it differently

The label is the employer's own, and so is the punctuation:

pay "https://mastercard.wd1.myworkdayjobs.com/wday/cxs/mastercard/CorporateCareers" "Pay Ranges" | head -3
Enter fullscreen mode Exit fullscreen mode

That printed "Pay Ranges O'Fallon, Missouri: $92,000 - $147,000 USD". Disney says "hiring range", Boeing "Summary Pay-Range Level 2: $82,000 - $145,000 Level 3: ...", Cigna "an annual salary of 56,600 - 94,300 USD / yearly" with the currency on the high end only, NVIDIA "200,000 USD - 322,000 USD for Level 5, and ..." with a second band for the next level. A reader that looks for $X - $Y finds none of Cigna's, and one that looks for "pay range" misses Boeing's hyphen.

4. Hourly jobs state one rate, next to another number

pay "https://tmobile.wd1.myworkdayjobs.com/wday/cxs/tmobile/External" "Hourly Base Pay" | head -3
Enter fullscreen mode Exit fullscreen mode

That printed "Hourly Base Pay: $19.50, plus $5.00 per hour training pay": two dollar figures in one sentence, and only the first is the pay. Target writes "Starting Hourly Rate / Salario por Hora Inicial: $18.00 USD per hour", Nike "Starting Pay: $18.00 per hour". 35 of the 302 were a single rate like these, not a range.

5. Numbers near the pay that are not the pay

AT&T opens the block with "Weekly Hours: 40" a line before "Salary Range: $60,600.00 - $91,000.00", so a reader that takes the nearest period word calls an annual band weekly. Chipotle's "$20.67–$26.45. You are also eligible for annual cash bonuses" is hourly, whatever the next sentence says. Lowe's postings carry "sales of more than $86 billion" and AT&T's sales roles "top earners having the opportunity to make $100,000". What held up: a pay label right before the figures, the period read from the band's own sentence, and the size of the number agreeing with that period (nobody earns $60,600 a week, or $20 a year).

Hosted

Workday Jobs Scraper on Apify takes Disney, Mastercard or T-Mobile by name. With includeDescription it fetches each job's page, keeps the whole description, and returns the band as salaryMin, salaryMax, salaryCurrency and salaryPeriod: Disney's rows came back with "165,900 - 222,400 USD (year)", T-Mobile's with "19.50 USD (hour)". A posting that states no pay stays empty. Every other system's public endpoint, with a tested curl, is in job-board-apis.

Top comments (0)