Levels.fyi Scraper — Tech Salaries, Compensation & Leveling
Pricing
from $5.00 / 1,000 company compensation overviews
Levels.fyi Scraper — Tech Salaries, Compensation & Leveling
Scrape Levels.fyi tech compensation: company salaries by job family & level (base, stock, bonus, total), individual salary submissions, leveling data, percentiles, titles, and role + location market benchmarks with top-paying companies. Monitoring mode. No API key, no browser.
Pricing
from $5.00 / 1,000 company compensation overviews
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Extract complete Levels.fyi compensation data — the numbers other salary scrapers skip: per-level base, stock, bonus and total comp, individual salary submissions, leveling maps (skill index, % of workforce, title ladders), percentiles (p10–p90), and role-by-location market benchmarks with the top-paying companies. Turn any company or role into a clean, structured compensation dataset.
No login, no cookies, no browser — fast JSON extraction from the page's own data, with high reliability.
Why this Levels.fyi scraper?
Most Levels.fyi scrapers dump a flat list of raw salary rows and stop there. This actor ships the richest compensation dataset in the category — the aggregates, the leveling, and the individual submissions, in one run:
| Data | Typical scrapers | This actor |
|---|---|---|
| Individual salary submissions (base/stock/bonus/total) | ✅ | ✅ |
| Per-level aggregates by company & role | ❌ | ✅ |
| Leveling map (titles, skill index, % of workforce, bonus target) | ❌ | ✅ |
| Percentiles p10 / p25 / p50 / p75 / p90 | ❌ | ✅ |
| Company overview (median TC, all roles, highest/lowest-paying) | ❌ | ✅ |
| Role × location market (percentiles, histogram, submission count) | ❌ | ✅ |
| Top-paying companies & locations per role | ❌ | ✅ |
| Tracked titles per role with sample counts | ❌ | ✅ |
| Monitor mode — only new / changed comp | ❌ | ✅ |
| No start fee | charges start fees | ✅ |
Use cases
- Compensation benchmarking — build pay bands by company, level, role and location from real, recent data (
baseSalary,stockGrantValue,bonus,totalCompensation, percentiles). - Recruiting & sourcing — know what an offer needs to beat before you make it; compare
medianTotalCompensationacross companies and levels. - Job seekers & negotiation — pull every submission for your target company and level, with years of experience and offer dates.
- Market & talent intelligence — track role × location markets (
roleMarket), top-paying companies, and submission volume over time. - Leveling research — map title ladders across companies (
levels[].levelTitles,skillIndex,percentWorkforce) for HR, comp and people-analytics teams. - Monitoring — schedule recurring runs and capture only new salary submissions and changed medians.
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the Levels.fyi Scraper, pick a mode, enter companies (or job families + locations), and click Start.
- Watch results stream into the dataset table.
- Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.
Input
{"mode": "companyComp","companies": ["Google", "Stripe", "Jane Street"],"jobFamilies": ["Software Engineer", "Product Manager"],"includeSamples": true,"maxSamplesPerRole": 50,"maxJobFamiliesPerCompany": 6,"monitorMode": false}
- mode —
companyComp(full comp for the companies you list),roleComp(market benchmarks for a job family across locations), orcompanyDirectory(list popular companies + the job-family taxonomy to discover valid slugs). - companies — company names or Levels.fyi slugs (
Google,Meta,stripe,Jane Street). Names are auto-converted to slugs. - jobFamilies — limit which roles are detailed per company (empty = the company's most popular roles), or the roles to benchmark in
roleComp. Examples:Software Engineer,product-manager,data-scientist. - locations (roleComp) — location slugs:
united-states,san-francisco-bay-area,new-york-city-area,greater-seattle-area,united-kingdom,india,canada. - startUrls — paste Levels.fyi URLs directly; they auto-route (company page, single role,
/t/market page, or the/companies/directory). - includeSamples (default true) — also output every individual salary submission, not just per-level aggregates.
- maxSamplesPerRole (default 50) — cap individual submissions per company + role.
- monitorMode (default false) — only emit new submissions and changed aggregates across runs (see below).
Output
Records are tagged by type. company (overview), role (company + job family with per-level comp, leveling and percentiles), salary (individual submission), roleMarket (job family × location), and free jobFamily reference rows.
A salary record:
{"type": "salary","company": "Google","jobFamily": "Software Engineer","title": "Software Engineer","level": "L5","focusTag": "Full Stack","yearsOfExperience": 8,"yearsAtCompany": 3,"baseSalary": 230000,"stockGrantValue": 180000,"bonus": 45000,"totalCompensation": 455000,"location": "San Francisco, CA","offerDate": "2026-05-14T00:00:00.000Z","submissionId": "57c00b79-9761-41bf-8bb4-56ab9fffe7d7","scrapedAt": "2026-06-15T12:00:00.000Z"}
A role record (per company + job family) carries the full level ladder:
{"type": "role","company": "Google","jobFamily": "Software Engineer","levelCount": 8,"totalSampleCount": 1840,"medianTotalCompensation": 330000,"percentiles": {"totalCompensation": { "p10": 185000, "p25": 212000, "p50": 330000, "p75": 432500, "p90": 573000 },"baseSalary": { "p10": 160000, "p50": 200000, "p90": 267000 }},"levels": [{"level": "L3","levelTitles": ["L3", "SWE II"],"percentWorkforce": 20,"skillIndex": 10.2,"sampleCount": 32,"baseSalary": 161594,"stockGrantValue": 34141,"bonus": 16373,"totalCompensation": 212108}],"currency": "USD"}
A roleMarket record (job family × location) carries percentiles, a histogram and the top-paying companies/locations.
Monitor only new compensation
Turn on monitorMode and the actor remembers what it has already returned (in a named key-value store) and, on the next run, emits only new salary submissions and rows whose compensation changed. Combine it with Schedules to build a fresh-comp feed — e.g. "every Monday, give me the new Google + Stripe SWE submissions". Monitor mode is independent of scheduling, so the two work together with no conflict.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API — start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run it daily/weekly to track new submissions or shifting medians; perfect with monitor mode.
- Webhooks — trigger downstream actions (warehouse load, Slack alert, dashboard refresh) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/levels-fyi-scraper').call({mode: 'companyComp',companies: ['Google', 'Stripe'],jobFamilies: ['Software Engineer'],includeSamples: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} compensation records`);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push new comp data into Sheets, Notion or a database.
- Slack — get notified when a monitored company posts new submissions.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "compare median total comp for software engineers at Google, Meta and Stripe" and let it run this scraper for you.
More scrapers from scrapesage
Build a complete tech talent & market stack alongside this compensation data:
- LinkedIn Jobs Scraper — job postings as hiring-intent signals, no login.
- Multi-ATS Job Scraper — jobs from Greenhouse, Lever, Ashby & Workday boards.
- BuiltIn Jobs Scraper — tech jobs, salaries & companies.
- Y Combinator Scraper — startups, founders & jobs.
- Product Hunt Scraper — launches, makers & leads.
- Google Play Store Scraper — apps, reviews & developer leads.
- Apple App Store Scraper — apps, reviews & charts.
Tips
- Find a company's slug: run
companyDirectorymode, or just type the name —Jane Street→jane-street,JPMorgan Chase→jpmorgan-chase. Slugs are lowercase with hyphens. - Cheaper test runs: lower
maxSamplesPerRoleandmaxJobFamiliesPerCompany, or setincludeSamplesoff to get just the rich aggregates. - Whole-market view: use
roleCompwith severallocationsto compare the same role across geos. - Proxies: the default Apify datacenter proxy is plenty — Levels.fyi has no aggressive anti-bot.
FAQ
How do I scrape salaries for a specific company? Use companyComp mode and put the company in companies (name or slug). Add jobFamilies to focus on specific roles, or leave it empty to get the company's most popular roles.
Can I get individual salary submissions, not just averages? Yes — keep includeSamples on (default). Each role includes its individual submissions with base, stock, bonus, total, level, years of experience, location and offer date.
Can I compare a role across locations? Yes — use roleComp with a jobFamilies entry and several locations (e.g. united-states, san-francisco-bay-area, united-kingdom).
Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.
How do I monitor new compensation automatically? Turn on monitorMode and create a Schedule; each run returns only new submissions and changed medians.
A field is null — why? Some submissions genuinely omit bonus, focus, gender or other details, and some companies don't track every role. Fields are null only when the data doesn't exist, not because the scraper skipped them.
Is scraping Levels.fyi legal? This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws and Levels.fyi's terms.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.