Levels.fyi Scraper API - Tech Salaries by Level & Company
Pricing
from $1.70 / 1,000 results
Levels.fyi Scraper API - Tech Salaries by Level & Company
💰 Scrape verified tech compensation from Levels.fyi: every job level of any company with total comp, base salary, stock, bonus, years of experience and p10–p90 percentiles, plus company overview. By company name or URL, filtered by role and location. No login, no browser. Pay per result.
Pricing
from $1.70 / 1,000 results
Rating
0.0
(0)
Developer
Scrapifier
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
Benchmark tech compensation, feed salary models, or research an offer with verified data from Levels.fyi — the reference for levels and pay in tech.
⚡ Scrape the full compensation ladder of any company by name or URL: one clean row per job level with median total compensation, base salary, stock grant and bonus, years-of-experience stats, submission counts, the level's meaning on the company ladder, and the whole job family's p10–p90 percentile distribution. Filter by job family and location. No login, no browser, pay per result.
What you get
One row per company × job family × level:
| Field | Example |
|---|---|
company, companySlug | Google, google |
jobFamily | Software Engineer |
level, levelAltName, levelTitles | L4, SWE III, ["L4", "SWE III"] |
totalCompensation | 308430 |
baseSalary / stockGrant / bonus / commission | 193095 / 92186 / 23149 / 0 |
salaryCount, salaryCountLast12Months | 58, 826 |
yearsOfExperienceAvg, yearsOfExperienceMedian | 5.52, 5 |
percentWorkforce, levelDescription | 20, "L3 is the new grad role at Google" |
familyPercentiles | p10–p90 for total comp, base, stock, bonus |
familyMedianTotalCompensation | 284000 |
location, currency | New York City, USD |
companyWebsite, companyHq, companyEmployees, companyTicker | company context on every row |
levelUrl, url, matchedInput | deep links + which input produced the row |
Turn on Flatten rows to get spreadsheet-ready columns (family_totalComp_p50, family_base_p90…) instead of nested objects.
Inputs
| Field | Type | Default | Meaning |
|---|---|---|---|
| Company names | companyNames | ["Google"] | Company names; resolved to the right Levels.fyi page automatically. |
| Company URLs | startUrls | — | Any Levels.fyi company page: /companies/google/salaries, a job family (.../salaries/software-engineer) or a family + location (.../salaries/software-engineer/locations/new-york-city-area). |
| Job families | jobFamilies | all | Only these families ("Software Engineer", "Product Manager", "Data Scientist"…). |
| Locations | locations | default scope | Scope the numbers to locations ("New York City Area", "Seattle Area", "India"…). |
| Maximum rows | maxItems | 500 | Total row cap — the number of results you pay for. 0 = no limit. |
| Flatten rows | flatten | off | Flat columns for CSV/Excel. |
| Input status report | emitInputStatus | on | OUTPUT lists what each input resolved to and why anything returned 0. |
Examples — all live-verified
1. A company's full compensation ladder
{ "companyNames": ["Google"] }
Every job family at Google, every level: engineering, product, data, design, sales… one row per level.
2. Compare one role across companies
{ "companyNames": ["Google", "Meta", "Stripe"], "jobFamilies": ["Software Engineer"] }
The SWE ladders of three companies, side by side: L3–L8 vs E3–E8, with percentiles per family.
3. A role in one metro area
{ "companyNames": ["Google"], "jobFamilies": ["Software Engineer"], "locations": ["New York City Area"] }
NYC-scoped numbers for Google SWE levels.
4. Straight from URLs
{ "startUrls": [{ "url": "https://www.levels.fyi/companies/jpmorgan-chase/salaries/software-engineer" }] }
5. Spreadsheet export for a comp review
{ "companyNames": ["Microsoft"], "jobFamilies": ["Product Manager"], "flatten": true, "maxItems": 50 }
Why this scraper
- Complete rows — not just the headline number: base/stock/bonus split, YoE, counts, ladder meaning and family percentiles on every row.
- Every input wired — names, URLs, families and locations all actually filter the scrape.
- Honest reporting — the
input_statusreport in OUTPUT tells you what each input returned and why anything came back empty. - Fast and cheap — no browser: structured data read directly, hundreds of rows a minute.
FAQ
Is this legal? The Actor reads only publicly displayed aggregate statistics, the same numbers any visitor sees. No accounts, no personal data, no individual submissions. You are responsible for using the output in compliance with applicable laws and Levels.fyi's terms.
A company returns 0 rows? Check input_status in the run's OUTPUT: small companies may have too few submissions for a given family, and location filters narrow the data further. Try without filters, or pass the exact company URL.
What currency are the numbers in? The currency field says — location-scoped pages are converted by Levels.fyi to the location's currency; default pages are USD.
Looking for more workforce data? See the rest of the family: Indeed Salaries, Glassdoor Salaries, Glassdoor Company Search, Indeed Jobs, Upwork Jobs.