Microsoft's careers site, apply.careers.microsoft.com, is Eightfold. So are Starbucks, Qualcomm, Lockheed Martin, Northrop Grumman, Ford and John Deere, each at <company>.eightfold.ai or on their own domain. The page loads its openings from one public endpoint, and the site's robots.txt allows exactly that path (Allow: /api/pcsx) while closing the rest.
curl -s "https://qualcomm.eightfold.ai/api/pcsx/search?domain=qualcomm.com&query=&location=&start=0" \
| jq '.data.count, (.data.positions | length), .data.positions[0].name'
domain is the employer's own domain, and every Eightfold host takes the same request: starbucks.eightfold.ai with domain=starbucks.com, apply.careers.microsoft.com with domain=microsoft.com. Each position carries name, locations, department, postedTs (a Unix timestamp), workLocationOption (onsite, hybrid or remote) and a positionUrl. Measured on 2026-10-26:
num=100 still returns 10. Qualcomm had 2,072 open roles that day, which is 208 requests to read them all. Starbucks had 21,693: 2,170 requests. Read the first answer's count before you start, and do not page what you do not need.
Microsoft's host answered HTTP 429 Too Many Requests after a short run of requests, and later after only one or two, even spaced ten seconds apart. Qualcomm was far more tolerant, but it too refused a request now and then: once in a quick series of eight, and again after six requests spread over a minute, each time answering normally a minute or two later. Back off on a refusal rather than retrying at once, and on a host like Microsoft's, ask for less.
query and location are applied on Eightfold's side:
curl -s -G "https://qualcomm.eightfold.ai/api/pcsx/search" \
--data-urlencode "domain=qualcomm.com" --data-urlencode "query=software engineer" \
--data-urlencode "location=San Diego" --data-urlencode "start=0" \
| jq -r '.data.count, (.data.positions[] | "\(.name) | \(.locations[0])")'
That narrowed Qualcomm's 2,072 to 517 roles in San Diego: 52 requests to read them instead of 208.
The search rows carry no description. position_details does:
curl -s "https://qualcomm.eightfold.ai/api/pcsx/position_details?domain=qualcomm.com&position_id=<id>" \
| jq -r '.data.jobDescription' | head -c 400
Older scrapers call /api/apply/v2/jobs, which took 100 rows a page. It answers 403 now; /api/pcsx/search is the one the site itself uses.
Company Career Page Jobs Scraper on Apify reads Microsoft, Starbucks, Qualcomm and the other Eightfold employers by name, sends title and place filters to Eightfold's own search, and reads the pages it does need in parallel. It covers 23 other career systems with the same row shape. Their public endpoints, each with a tested curl, are in job-board-apis.