AI Research Labs Career Tracker avatar

AI Research Labs Career Tracker

Pricing

from $2.00 / 1,000 job rows

Go to Apify Store
AI Research Labs Career Tracker

AI Research Labs Career Tracker

Track open roles across 34 AI labs and AI companies: OpenAI, Anthropic, xAI, Cohere, Perplexity, Databricks, Stripe, Harvey, ElevenLabs, Sierra, Notion, Figma, Ramp, Vercel and more. Normalised across Greenhouse, Ashby and Lever with parsed pay ranges plus research, visa and compute signals.

Pricing

from $2.00 / 1,000 job rows

Rating

0.0

(0)

Developer

Prime Sieve

Prime Sieve

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Track open roles across 34 AI labs and AI companies from a single input.

Every posting is pulled from the company's own public job board, normalised into one consistent schema, and annotated with signals that matter when you are evaluating AI roles: research area, pay transparency, visa sponsorship and compute access.

No API keys, no login, no browser rendering. The actor talks directly to the public ATS endpoints, so a full run over all 34 boards completes in well under a minute.


What you get

One dataset row per open role. Run metadata is written separately to the SUMMARY key-value store record, so the dataset stays purely job rows.

FieldNotes
companyName, companySlug, labTierWho is hiring
title, department, teamRole and org placement
employmentTypeFull-time, Part-time, Contract, Internship
locationRaw, locationsAll, city, countryAll locations, including multi-site postings
workplaceType, isRemoteRemote / Hybrid / On-site, taken from the employer's own field
salaryMin, salaryMax, salaryCurrency, salaryInterval, salaryTextParsed from the pay range the employer published
salaryDisclosedWhether a pay range was published at all
postedAt, updatedAt, jobUrl, applyUrlFreshness and direct apply link
researchAreasResearch-area tags (see below)
visaSignalsH1B / visa-sponsorship / work-authorisation / global-remote language
computeHintsMentions of GPU clusters, TPUs, cluster scale, compute budget
descriptionTextFull plain-text description (only when includeDescription is on)

The SUMMARY key-value record

Written once per run, it carries totalJobs, labsScraped, labsWithResults, the list of boards queried, the filters that were applied, and a salaryStats object with per-company pay statistics split into annual and hourly percentiles.

Example, from a live run:

"OpenAI": {
"jobsTotal": 200,
"jobsWithPostedSalary": 162,
"salaryDisclosureRate": 0.81,
"annual": { "min": 126000, "p25": 230000, "median": 285000, "p75": 342000, "max": 750000, "currency": "USD", "sampleSize": 322 },
"hourly": { "min": 57, "median": 70, "max": 70, "currency": "USD", "sampleSize": 2 }
}

Hourly and annual postings are summarised separately, so an intern rate never drags down an annual percentile.


Boards covered

openai anthropic xai cohere perplexity cerebras suno poolside character sierra harvey elevenlabs notion langchain ramp figma vercel deepgram assemblyai midjourney pika runway databricks snowflake scaleai supabase stripe plaid brex mercury airtable vanta linear verkada

Pass labs: ["openai", "anthropic"] to narrow the run, or leave it empty to query all 34. Add anything else with customBoards: ["greenhouse:somecompany"].

Board slugs are probed against the live endpoints and recorded in scripts/probe-boards*.sh, so you can re-verify them at any time.


Research-area tagging

Tags are derived from the job title, department, team and full description. Possible values: LLM, RL, NLP, Computer Vision, Multimodal, Robotics, Agents, Alignment, Safety, Theory, Infrastructure, Applications, Code Generation, Audio, Data, General AI.

Tagging is confidence-weighted rather than a flat keyword sweep, because a flat sweep over a long description tags almost everything with almost everything:

  • An area named in the role's title, department or team is high confidence. Roles are rarely mislabelled there, so up to four are kept.
  • An area appearing only in the description body is a weak signal. It must be reinforced by at least two distinct keywords, only the two strongest survive, and they are only used when the title/team named nothing at all.
  • A role that matches nothing anywhere is tagged General AI rather than left blank.

That keeps the average at ~1.3 tags per role instead of ~4, so the tags stay usable as a filter. A live run over all boards produced this distribution:

Applications 837 · Agents 529 · General AI 394 · Infrastructure 360
Safety 128 · LLM 90 · Audio 86 · Code Generation 54 · Alignment 15 · Data 15
RL 10 · NLP 7 · Robotics 5 · Multimodal 5 · Theory 1

Tags reflect language in the posting, not a verified research remit — a role can work on an area without naming it. Treat them as a filter to narrow a list, not as a taxonomy.


Example: research roles that publish a salary

{
"labs": ["openai", "anthropic", "xai", "cohere", "perplexity"],
"keywords": ["research", "scientist", "alignment", "safety"],
"minSalaryUsd": 200000,
"postedWithinDays": 30,
"includeDescription": true
}

Cost

Pay-per-event: $0.002 per job row written to the dataset, plus a flat $0.00005 each time the Actor starts (the platform charges one start event per GB of memory).

You are only ever billed for real postings. Board errors and run metadata live in the SUMMARY key-value record, not the dataset, so they are never charged.

A default run (all 34 boards, 200 rows/lab cap) yields around 1,900 rows, which is roughly $3.80. Narrowing labs or keywords cuts that proportionally — a five-lab run is typically under $0.50.

Set maxTotalChargeUsd on the Actor's pricing configuration if you want a hard ceiling per run; the platform stops charging (and stops writing rows) once it is hit.


Notes on the data

  • Pay ranges are parsed only when the employer publishes one. Coverage varies a lot by company — OpenAI and Cohere disclose on most postings, Anthropic's board does not expose a range through the public API at all.
  • postedAt is the employer's first-published date, not the last-modified date, so freshness sorting behaves as you would expect.
  • Signals are keyword-derived, not guarantees. visaSignals.likelySponsorsH1b means the posting text mentions H1B — always confirm with the employer.
  • Boards that return nothing are recorded in SUMMARY.boardErrors as rowType: "unavailable" or "board-not-found" rather than silently dropped. They are kept out of the dataset so they are never billed as if they were postings.

Development

npm install
npm test # offline unit tests for the parsers and helpers
node src/main.js # local run using storage/key_value_stores/default/INPUT.json

npm test covers the compensation parser (multi-currency, ranges, K/M suffixes, hourly rates, stray-number rejection), HTML-to-text conversion, location splitting and the salary statistics.


Prime Sieve