All platforms

Eightfold AI Jobs API

What Eightfold AI career sites look like, how the PCSX API really behaves, and why ?source=eightfold reaches some tenants and 403s permanently on the rest.

?source=eightfoldsource reference

Eightfold AI is a talent-intelligence platform that large enterprises put in front of their hiring: Nvidia, Cisco and Bayer all run career sites on it. Boards live at <slug>.eightfold.ai, backed by a public JSON API Eightfold calls PCSX.

What the board looks like#

Two unauthenticated endpoints, a search and a detail:

BASH
# Search — paginated, server-fixed page size (~10)
curl "https://<slug>.eightfold.ai/api/pcsx/search?domain=<domain>&start=0"
 
# Detail — this is where the description is
curl "https://<slug>.eightfold.ai/api/pcsx/position_details?domain=<domain>&position_id=<id>"

The data itself is good. Positions carry a real department, a work-location option, the employer's own requisition id, a genuine apply URL, and a standardizedLocations array. Descriptions come from the detail call.

Why it's partial: the domain parameter#

Both endpoints require a domain query parameter, and it is not the board slug. It's a separate per-tenant value naming the employer's domain, and there is no way to derive it from the careers URL that identified the board in the first place.

So the adapter guesses <token>.com — for a tenant at acme.eightfold.ai, it tries domain=acme.com. When the guess is right, the board scrapes cleanly. When it's wrong, the API returns 403, and it returns 403 forever, because the request is not malformed and the tenant is not blocking us: we are asking for a domain that isn't theirs. Activision is the standing example.

This 403 is permanent, and that matters more than it sounds

Elsewhere in this pool a 403 is a transient burst — the platform's WAF twitching under concurrency, clearing on the very next attempt. Treating those as fatal disables live boards for no reason.

Eightfold's 403 is the opposite: it means detect() guessed the wrong tenant, and no amount of retrying, backing off, changing IP or improving the TLS fingerprint will ever change the answer. The fix is data, not networking. This is why "is a 403 retryable" has to be answered per platform rather than globally — the same status code means "wait a second" on one source and "you are asking the wrong question" on this one.

That leaves roughly 36 known boards, and a per-tenant domain that has to be supplied rather than computed. It's solvable — the adapter takes an override — but it's solvable one tenant at a time, and it hasn't been worth the run yet against platforms with thousands of boards waiting.

And there's a second wall behind it#

Some Eightfold tenants sit behind Cloudflare and reject plain requests. A TLS-impersonation tier clears some of them, but from datacenter IPs most stay blocked even with impersonation. Those boards return empty rather than wrong, which is harmless to the dataset and invisible in a log. Residential IPs open more.

So Eightfold needs two things it doesn't have: a per-tenant domain map, and egress that its tenants' Cloudflare rules will accept.

The adapter was never the bottleneck#

Eightfold was one of three platforms here that had a finished, working, tested adapter and scraped nothing for months purely because discovery never produced boards for it. The other two were ADP and join.com.

All three came out of that hole. join.com's 23,548-board list had been sitting in a public dataset the entire time, one file nobody had imported: 141 boards became 23,601, and 44,201 jobs appeared. ADP took a discovery run plus fixing a guard that was silently rejecting its UUID-shaped board ids, and now serves 4,560 postings. Eightfold serves rows too.

What caps it is the ceiling above, not the adapter and not the parse: a tenant whose domain the guess gets wrong isn't a board we're slow to reach, it's a board that answers 403 to the only question we know how to ask it.

The tenants the guess misses#

Many Eightfold customers are large enterprises that also run other boards, and a tenant sitting behind a wrong-domain 403 frequently reaches this dataset by another route anyway — the same job on LinkedIn, or the employer's Workday or Oracle Cloud HCM tenant. Cross-source mirrors are collapsed to one row, so you're not counting the same job twice.

Query what's here with ?source=eightfold. Read the live vocabulary off /v1/metasources rather than off this page, and sources for what each value means.

Quickstart · All platforms

Every source above normalises onto the same schema, with the hiring company already joined onto each posting.

Get an API key