Levels.fyi Scraper avatar

Levels.fyi Scraper

Pricing

from $3.50 / 1,000 results

Go to Apify Store
Levels.fyi Scraper

Levels.fyi Scraper

Levels.fyi scraper & API: export tech compensation by company, level and location — base salary, stock, bonus, total comp, title, years of experience and date. Salary benchmarking, comp intelligence and talent-market data — fast, no login.

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

1

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

💰 Levels.fyi Scraper — Tech Salary, Total Compensation & Stock Grant Data by Company, Level & Role

Extract verified tech compensation data from Levels.fyi — median total compensation, base salary, annual stock grants (RSUs), bonuses, p10–p90 percentile spreads and sample counts by company, level, role and location. No login, no coding. This Levels.fyi scraper is a structured Levels.fyi API alternative built for compensation benchmarking, candidate offer negotiation, recruiter sourcing intelligence, People Ops band calibration and equity research.

Export every record to JSON, CSV, Excel, or API with automatic multi-company and multi-role expansion supporting 1,000+ compensation records.

Apify Actor Live Data Companies Pagination Export No Auth

Built for technical recruiters, compensation & People Ops analysts, hiring managers, software engineers negotiating offers, venture capital / equity researchers, and B2B workforce intelligence teams.


⚡ At a glance

FeatureDetails
Source platformLevels.fyi (levels.fyi) — Crowdsourced & verified tech compensation benchmarks
GranularityOne structured record per company × role × level (e.g. Google · Software Engineer · L5)
Built-in dropdowns19 top tech employers + 20 job families + 23 global metro locations + unlimited custom slugs & URLs
Compensation metricsLevel Median TC (totalCompensation), Role Median Split (baseSalary, stockGrant, bonus), Percentiles (p10TC–p90TC)
Workforce & YoE contextlevelTitle, levelSampleCount, sampleCountLast12Months, percentWorkforce, typicalYoeMin, typicalYoeMax
1,000+ scalingAutomatic expansion across 20 job families and 100+ top tech companies when maxResults exceeds initial selection
DeduplicationStrictly deduplicated on companySlug + jobFamily + level (0 duplicate rows)
Export formatsBulk export to JSON, CSV, Excel, HTML, Webhook & Apify REST API

🔎 Why scrape Levels.fyi?

Levels.fyi is the leading benchmark database for verified technology compensation, mapping hundreds of thousands of real compensation submissions onto each employer's internal leveling ladder — such as Google L3–L9, Meta E3–E9, Amazon SDE I–Principal (L4–L8), Apple ICT2–ICT6, Microsoft 59–80, NVIDIA IC1–IC8, and equivalents across thousands of public and late-stage private tech companies.

For every company and job family, Levels.fyi publishes:

  • Per-level median total compensation (totalCompensation),
  • Role-wide base salary, annual stock grant (RSU) and bonus medians,
  • 10th, 25th, 50th, 75th and 90th percentile total compensation spreads (p10TC–p90TC),
  • Submission sample counts (levelSampleCount and sampleCountLast12Months), and
  • Typical years of experience (typicalYoeMin–typicalYoeMax) and workforce distribution (percentWorkforce).

Collecting those numbers manually across dozens of companies, job families and levels takes hours of clicking and copying, and there is no public self-serve Levels.fyi API. This Levels.fyi data extractor automates the entire workflow: select your companies and roles (or set a high maxResults target for a market-wide sweep) and get clean, normalized USD integers ready for Excel, Google Sheets, Snowflake, BigQuery or BI dashboards.

Common reasons teams use this Levels.fyi scraper:

  • 💼 Candidate offer negotiation — compare a live offer against the verified level median (medianTC) and 75th percentile (p75TC) for that exact company and rung.
  • 🎯 Executive & technical recruiting — build competitive offer sheets per level across target talent pools before extending compensation packages.
  • 📊 People Ops & compensation band calibration — benchmark internal engineering, product, data and design salary bands against FAANG, AI labs and cloud leaders.
  • 📈 Venture capital & equity research — model R&D payroll burn, stock-based compensation (SBC) dilution and headcount distribution (percentWorkforce) across public and private tech portfolios.
  • 🧠 AI & labor-market analytics — track how total compensation scales from entry-level IC to Principal/Staff engineer across companies and roles over time.

✨ What this Levels.fyi scraper does

  • ✅ Zero-code dropdown targeting — select companies (google, meta, amazon, apple, microsoft, netflix, nvidia, uber, airbnb, stripe, openai, databricks, salesforce, oracle, adobe, linkedin, snowflake, tesla, coinbase) and 20 job families directly in the UI.
  • ✅ Custom company slugs & direct URLs — add any off-list employer via customCompanies (e.g. palantir, doordash, anthropic, scale-ai, citadel, jane-street) or paste exact Levels.fyi salary URLs into urls.
  • ✅ One row per level — emits a dedicated record for every level on the company/role ladder (L3, L4, L5, L6, L7, L8…) with its exact median total compensation.
  • ✅ Unlocked 1,000+ record scaling — when you request a large dataset (e.g. maxResults: 1000), the scraper automatically expands across all 20 job families and 100+ top tech companies so runs never stall at single-company limits.
  • ✅ Complete percentile context — captures p10TC, p25TC, medianTC (p50), p75TC and p90TC alongside medianBase, medianStock and medianBonus.
  • ✅ Sample confidence & workforce share — includes levelSampleCount, sampleCountLast12Months, percentWorkforce, typicalYoeMin, typicalYoeMax and midpoint yearsOfExperience.
  • ✅ Clean integer normalization — all dollar figures are converted to clean USD integers (426881, 200000) with ISO timestamps (dataDate, scrapedAt).

🎯 Use cases

PersonaHow they use this Actor
👩‍💼 Compensation & Total Rewards TeamsExport level-by-level medians across peer groups (FAANG, AI labs, FinTech, SaaS) to calibrate annual salary and RSU refresh bands.
🧲 Technical Recruiters & SourcersKnow the exact total compensation jump between L4 → L5 or E5 → E6 before pitching passive candidates from Google, Meta or NVIDIA.
🧑‍💻 Engineers, PMs & DesignersBenchmark an incoming job offer against verified medianTC, p75TC and p90TC numbers with sample-size confidence (levelSampleCount).
🏦 Institutional Investors & VCsCombine totalCompensation and percentWorkforce per level to estimate weighted-average engineering cost and SBC expense.
📰 Labor Economists & Data JournalistsBuild longitudinal datasets on tech compensation across 20 job families (software-engineer, product-manager, data-scientist, hardware-engineer, sales, etc.).

📥 Input configuration

All input fields are optional. Running with the prefill settings collects a fast ~20-record sample across Google, Meta and Amazon in under a minute; running with empty input ({}) collects a diverse ~100-record sample across top employers and roles.

FieldTypeDefaultDescription
companiesarray (select)[] (prefill ["google","meta","amazon"])Select one or more top tech companies from the dropdown. Leave empty for a diverse multi-company sample.
jobFamiliesarray (select)[] (prefill ["software-engineer"])Select one or more roles/job families (software-engineer, product-manager, data-scientist, engineering-manager, product-designer, data-engineer, hardware-engineer, etc.).
locationstring (select)"" (All locations)Optional metro filter (san francisco, new york, seattle, london, bangalore, remote, etc.).
maxResultsinteger100 (prefill 20)Maximum compensation records to collect. Set 0 for unlimited, or 1000+ to automatically expand across roles and companies.
customCompaniesarray[]Optional. Add extra companies by their Levels.fyi slug (e.g. palantir, doordash, anthropic, datadog).
urlsarray[]Optional. Paste full Levels.fyi salary URLs (https://www.levels.fyi/companies/google/salaries/software-engineer) to scrape those exact pages.
proxyConfigurationobject{ "useApifyProxy": true }Apify Proxy configuration. Residential proxies are recommended for consistent access.
requestDelayinteger2000Delay between page loads in milliseconds (0–10000).

Input example — multi-company comp benchmark

{
"companies": ["google", "meta", "amazon", "apple", "microsoft", "nvidia", "openai", "stripe"],
"jobFamilies": ["software-engineer", "product-manager", "data-scientist", "engineering-manager"],
"location": "",
"maxResults": 200,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
},
"requestDelay": 1500
}

Input example — 1,000+ market-wide tech salary dataset

{
"companies": ["google", "meta", "amazon", "apple", "microsoft", "nvidia"],
"jobFamilies": ["software-engineer", "product-manager", "data-scientist"],
"maxResults": 1000,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
},
"requestDelay": 1000
}

Supported job families (roles)

software-engineer · product-manager · data-scientist · product-designer · engineering-manager · data-engineer · solution-architect · hardware-engineer · technical-program-manager · information-technologist · business-analyst · security-analyst · sales · marketing · recruiter · human-resources · management-consultant · mechanical-engineer · accountant · chief-of-staff


📤 Output & field reference

The Actor emits one structured record per level of each scraped company and job family. Below is a real record from a Google Software Engineer run:

{
"company": "Google",
"companySlug": "google",
"jobFamily": "software-engineer",
"jobTitle": "Software Engineer",
"level": "L5",
"levelTitle": "L5 / Senior SWE",
"baseSalary": 200000,
"stockGrant": 84000,
"bonus": 23500,
"totalCompensation": 426881,
"yearsOfExperience": 10,
"yearsAtCompany": null,
"typicalYoeMin": 9,
"typicalYoeMax": 10,
"percentWorkforce": 20,
"location": "United States",
"country": "United States",
"offerDate": null,
"medianTC": 426881,
"medianBase": 200000,
"medianStock": 84000,
"medianBonus": 23500,
"p10TC": 177750,
"p25TC": 219850,
"p75TC": 410000,
"p90TC": 500000,
"levelSampleCount": 57,
"sampleCountLast12Months": 623,
"levelBreakdown": null,
"dataDate": "2026-10-30",
"sourceUrl": "https://www.levels.fyi/companies/google/salaries/software-engineer",
"scrapedAt": "2026-11-10T02:38:42.276Z"
}

🏢 Company, Role & Level Identity

FieldTypeCoverageDescription
companystring🟢 High (100%)Display name of the employer (e.g. Google, Meta, NVIDIA).
companySlugstring🟢 High (100%)URL slug on Levels.fyi (e.g. google, meta, nvidia).
jobFamilystring🟢 High (100%)Role category slug (e.g. software-engineer, product-manager).
jobTitlestring🟢 High (100%)Formatted role name or level title descriptor.
levelstring🟢 High (~98%)Employer level code (L3–L9, E3–E9, SDE I–Principal, ICT2–ICT6).
levelTitlestring🟢 High (~95%)Combined level code and internal title (e.g. "L5 / Senior SWE").

💵 Compensation & Percentile Spread (USD)

FieldTypeCoverageDescription
totalCompensationnumber🟢 High (100%)Per-level median total annual compensation in USD (base + stock + bonus).
baseSalarynumber🟢 High (~98%)Role-level median (p50) annual base salary in USD.
stockGrantnumber🟢 High (~95%)Role-level median (p50) annual stock/RSU grant value in USD.
bonusnumber🟢 High (~92%)Role-level median (p50) annual target/signing bonus in USD.
medianTCnumber🟢 High (100%)Median total compensation (totalCompensation on level rows; p50 on summary rows).
medianBase / medianStock / medianBonusnumber🟢 High (~95%)Role-level p50 base salary, stock grant and bonus in USD.
p10TC / p25TC / p75TC / p90TCnumber🟢 High (~95%)10th, 25th, 75th and 90th percentile total compensation for the role in USD.

📊 Sample Size, Experience & Metadata

FieldTypeCoverageDescription
levelSampleCountnumber🟢 High (~95%)Number of verified compensation submissions backing this specific level's median.
sampleCountLast12Monthsnumber🟢 High (~90%)Number of compensation submissions recorded for this level in the past 12 months.
percentWorkforcenumber🟡 Conditional (~80%)Approximate percentage of the role's workforce at this level.
typicalYoeMin / typicalYoeMaxnumber🟡 Conditional (~85%)Lower and upper bounds of typical years of experience for this level.
yearsOfExperiencenumber🟡 Conditional (~85%)Midpoint of the typical years-of-experience band.
location / countrystring🟢 High (100%)Geographic scope of the compensation aggregate (e.g. United States).
dataDatestring🟢 High (~98%)Date Levels.fyi last updated the aggregate statistics on the page.
sourceUrl / scrapedAtstring🟢 High (100%)Source salary page URL and ISO 8601 extraction timestamp.

🔁 Pagination & 1,000+ scaling

Each company and role salary page on Levels.fyi embeds the complete per-level roll-up (6 to 10 levels per page). The Actor scales from quick 20-record benchmarks to 1,000+ compensation records automatically:

  1. Selected pairs first: It scrapes every (company × jobFamily) combination you selected (or your exact urls).
  2. Automatic role & company expansion: When maxResults is set higher than what your initial selection produces (for example, maxResults: 1000), the Actor automatically expands your selected companies across all 20 job families, and then expands across a curated catalog of 100+ top technology employers (google, meta, amazon, apple, microsoft, nvidia, openai, anthropic, stripe, databricks, snowflake, palantir, cloudflare, datadog, citadel, jane-street, etc.) until maxResults is reached.
  3. Zero duplicates: Every row is deduplicated by companySlug + jobFamily + level before being saved to the dataset.

⚙️ How to use

  1. Open Levels.fyi Scraper in the Apify Console and click Try for free.
  2. Pick your target Companies and Roles / Job Families from the dropdowns (or add slugs in customCompanies).
  3. Set maxResults (20 for a fast test, 200 for a multi-company comparison, or 1000+ for a comprehensive market dataset).
  4. Click Start, then export your data to JSON, CSV, Excel, or API.

🔌 API usage

Start a run via REST API

curl -X POST "https://api.apify.com/v2/acts/haketa~levels-fyi-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"companies": ["google", "meta", "nvidia", "openai"],
"jobFamilies": ["software-engineer", "product-manager"],
"maxResults": 100,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}'

Fetch dataset items in CSV format

$curl "https://api.apify.com/v2/acts/haketa~levels-fyi-scraper/runs/last/dataset/items?token=YOUR_APIFY_TOKEN&format=csv"

Call from Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"companies": ["google", "meta", "amazon", "apple", "microsoft", "nvidia", "openai"],
"jobFamilies": ["software-engineer", "product-manager", "data-scientist"],
"maxResults": 200,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"],
},
}
run = client.actor("haketa/levels-fyi-scraper").call(run_input=run_input)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{row['company']} | {row['jobFamily']} | {row['level']} ({row.get('levelTitle')}) -> Median TC: ${row.get('totalCompensation'):,}")

Call from Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/levels-fyi-scraper').call({
companies: ['google', 'meta', 'stripe', 'databricks'],
jobFamilies: ['software-engineer', 'engineering-manager'],
maxResults: 100,
proxyConfiguration: {
useApifyProxy: true,
apifyProxyGroups: ['RESIDENTIAL'],
},
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Saved ${items.length} level compensation benchmarks`);

🔄 Integrations & compensation workflows

Plug Levels.fyi Scraper directly into your HR analytics, recruiting or investment research workflows:

IntegrationWorkflow example
📊 Google Sheets & ExcelMaintain a live Total Rewards benchmarking workbook comparing your internal L3–L8 engineering and PM bands against Google, Meta, Amazon, Apple, NVIDIA and OpenAI.
❄️ Snowflake, BigQuery & DatabricksIngest scheduled monthly snapshots (dataDate, totalCompensation, p25TC, p75TC, p90TC, levelSampleCount, percentWorkforce) to track tech compensation inflation over time.
⚡ Make, Zapier & n8nTrigger automated compensation-band alerts for your People Ops or executive recruiting team whenever target company medians shift.
📈 BI Dashboards (Tableau, Looker, Power BI)Join companySlug, jobFamily and level against your ATS (Greenhouse, Lever, Workday, Ashby) offer logs to measure offer competitiveness and close rates.
🤖 AI Recruiting & Negotiation CopilotsFeed verified level medians and percentile spreads into LLM agents via Apify MCP or REST API for instant, grounded offer analysis.

⚠️ Limitations & data notes

  • Role-level vs. per-level fields: Levels.fyi publishes exact total compensation (totalCompensation) per level (L3, L4, L5, L6…), while reporting the component breakdown (baseSalary, stockGrant, bonus) and percentile spread (p10TC, p25TC, p75TC, p90TC) as role-wide aggregates (p50) on the company/role salary page.
  • Thinly populated roles: For niche roles or smaller companies where Levels.fyi has too few submissions to publish a full per-level breakdown, the Actor automatically falls back to extracting the page-level percentile/median summary row so no available benchmark is lost.
  • Browser execution time: Because each salary page is rendered in a real browser session to clear anti-bot verification cleanly, expect roughly 4–8 seconds per company × jobFamily page.

💡 Pro tips for compensation analysis

  • Filter by levelSampleCount >= 10 when building executive dashboards so every level median is backed by a statistically solid sample.
  • Compare totalCompensation across levels (L3 → L4 → L5 → L6 → L7) to see exact promotion step-ups and equity weighting.
  • Use p25TC and p75TC as the realistic negotiation band for a given role, and p90TC as the top-of-band ceiling for competing offers.
  • Keep Apify Proxy enabled (residential recommended) so every company page clears verification smoothly.

❓ FAQ

How many compensation records can I collect in one run? Each company/role page yields roughly 6–10 level rows. With automatic role and company expansion enabled, setting maxResults: 1000 (or 0 for unlimited) collects 1,000+ unique level compensation records across top tech employers and job families.

Do I need a Levels.fyi account or API key? No. All extracted compensation aggregates come from publicly accessible Levels.fyi salary pages.

Why are baseSalary, stockGrant and bonus identical across levels on the same page? Levels.fyi publishes total compensation (totalCompensation) per level, while exposing the base/stock/bonus breakdown (baseSalary, stockGrant, bonus) and percentile spread (p10TC–p90TC) at the role level (p50). Both are included on every row so you have the exact per-level total compensation alongside the role-wide component split.

Can I scrape companies not listed in the dropdown? Yes. Enter any company's Levels.fyi URL slug into customCompanies (for example palantir, doordash, anthropic, scale-ai, figma, notion) or paste full salary URLs into urls.

How do I compare leveling ladders across two or more companies (e.g. Google L5 vs. Meta E5 vs. Amazon L6)? Select all target companies (["google", "meta", "amazon"]) and your role (["software-engineer"]), export to CSV or Excel, and pivot on company, level, typicalYoeMin–typicalYoeMax, and totalCompensation. Because typicalYoeMin/Max and percentWorkforce are included alongside level, you can align cross-company levels by experience band and workforce seniority rather than guessing from title names alone.

Can I run this scraper on an automated schedule? Yes. Use Apify Schedules to run the Actor weekly or monthly and send updated compensation benchmarks directly to Google Sheets, Snowflake, BigQuery, Slack or a webhook.

What currency are compensation numbers reported in? All compensation fields (totalCompensation, baseSalary, stockGrant, bonus, medianTC, p10TC–p90TC) are normalized integers in USD, matching Levels.fyi's standard display currency.

Sample tech compensation benchmarking playbooks

PlaybookRecommended input configuration
🚀 FAANG+ Software Engineering L3–L8 Laddercompanies: ["google", "meta", "amazon", "apple", "microsoft", "netflix", "nvidia"], jobFamilies: ["software-engineer"], maxResults: 100
🤖 AI Labs & Cloud Data Infrastructurecompanies: ["openai", "databricks", "snowflake", "nvidia"], customCompanies: ["anthropic", "scale-ai", "cohere"], jobFamilies: ["software-engineer", "data-scientist", "data-engineer"], maxResults: 150
💳 FinTech & Quantitative Trading Benchmarkscompanies: ["stripe", "coinbase"], customCompanies: ["block", "robinhood", "plaid", "citadel", "two-sigma", "jane-street"], jobFamilies: ["software-engineer", "product-manager"], maxResults: 150
🌐 1,000+ Record Cross-Industry Tech Salary Matrixcompanies: ["google", "meta", "amazon", "apple", "microsoft"], jobFamilies: ["software-engineer", "product-manager", "data-scientist", "engineering-manager"], maxResults: 1000


📋 Changelog

  • v1.2 (2026-11) — Unlocked 1,000+ compensation record scaling via automatic expansion across 20 job families and 100+ top tech employers when maxResults exceeds initial selection; removed per-task cap when maxResults is set; added strict companySlug + jobFamily + level deduplication; tuned fast prefill (maxResults: 20).
  • v1.1 (2026-10) — Upgraded per-level extraction (faqLevels) with levelTitle, levelSampleCount, sampleCountLast12Months, percentWorkforce, typicalYoeMin/Max, and role-wide p10TC–p90TC percentile spreads.
  • v1.0 (2026-09) — Initial release supporting company and job-family compensation extraction from Levels.fyi.
⌂ 换网址