Updated Oct. 10, 2026

Frontier Lab Hiring

Daily archive of Anthropic's and OpenAI's job postings.

Settings
View
Break down by
Color by

Display

Show data as

More about this dataset

Documentation

Our Frontier Lab Hiring explorer tracks Anthropic’s and OpenAI’s open job postings over time. We scrape both labs’ public careers pages every day and use the scrapes to build a history of their job postings. For each role we record when it appeared, what the posting said, how long it stayed up, whether it reappeared and how its wording changed. Then a language model classifies every posting into a common set of categories. Each posting’s location is taken from the job board’s own location field, and a separate language model maps each location to a country. The model also names the city, and when the location field is empty it takes the place from the advert text instead; these inferred locations are marked as such in the downloadable data. A posting listed in several countries counts once in each. Counts and postings are shown with a seven-day delay.

Job postings are not one-to-one with hires. A lab may post a role it never fills. It may also hire several people against a single posting: one Software Engineer advert can lead to several hires.

Downloads

Citations

Epoch AI’s data is free to use, distribute, and reproduce provided the source and authors are credited under the Creative Commons Attribution license.

Citation

Epoch AI, 'Data on Frontier Lab Hiring'. Published online at epoch.ai. Retrieved from 'https://epoch.ai/data/frontier-lab-hiring' [online resource]. Accessed 10 Oct 2026.

BibTeX Citation

@misc{EpochFrontierLabHiring2026, title = {{Data on Frontier Lab Hiring}}, author = {{Epoch AI}}, year = {2026}, month = {10}, url = {https://epoch.ai/data/frontier-lab-hiring}, note = {Accessed: 10 Oct 2026} }

Python Import

import pandas as pd # All tables are also bundled at https://epoch.ai/data/frontier_lab_hiring.zip open_roles_url = 'https://epoch.ai/data/frontier_lab_hiring_open_roles_by_category.csv' open_roles_df = pd.read_csv(open_roles_url) by_country_url = 'https://epoch.ai/data/frontier_lab_hiring_open_roles_by_country.csv' by_country_df = pd.read_csv(by_country_url) postings_url = 'https://epoch.ai/data/frontier_lab_hiring_postings.csv' postings_df = pd.read_csv(postings_url) # The posting texts are served gzipped; pd.read_csv decompresses them. posting_texts_url = 'https://epoch.ai/data/frontier_lab_hiring_posting_texts.csv.gz' posting_texts_df = pd.read_csv(posting_texts_url) revisions_url = 'https://epoch.ai/data/frontier_lab_hiring_revisions.csv' revisions_df = pd.read_csv(revisions_url)

Frequently asked questions