AI Research Labs Career Tracker
Pricing
from $2.00 / 1,000 job rows
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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.
| Field | Notes |
|---|---|
companyName, companySlug, labTier | Who is hiring |
title, department, team | Role and org placement |
employmentType | Full-time, Part-time, Contract, Internship |
locationRaw, locationsAll, city, country | All locations, including multi-site postings |
workplaceType, isRemote | Remote / Hybrid / On-site, taken from the employer's own field |
salaryMin, salaryMax, salaryCurrency, salaryInterval, salaryText | Parsed from the pay range the employer published |
salaryDisclosed | Whether a pay range was published at all |
postedAt, updatedAt, jobUrl, applyUrl | Freshness and direct apply link |
researchAreas | Research-area tags (see below) |
visaSignals | H1B / visa-sponsorship / work-authorisation / global-remote language |
computeHints | Mentions of GPU clusters, TPUs, cluster scale, compute budget |
descriptionText | Full 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 AIrather 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 360Safety 128 · LLM 90 · Audio 86 · Code Generation 54 · Alignment 15 · Data 15RL 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.
postedAtis 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.likelySponsorsH1bmeans the posting text mentions H1B — always confirm with the employer. - Boards that return nothing are recorded in
SUMMARY.boardErrorsasrowType: "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 installnpm test # offline unit tests for the parsers and helpersnode 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