Levels.fyi API
The Levels.fyi API returns tech salary and compensation data as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary company/salaries endpoint returns a company's pay by role and location with percentiles for total comp, base salary, bonus and stock, and you can pull a company's roles, search companies, list companies for a role and see submissions. It is built for compensation benchmarking, recruiting and career tools that need real tech-pay data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.
Real request and response JSON
Captured from the indexed primary action, company/salaries, on .
{
"method": "POST",
"url": "https://api.reefapi.com/levels-fyi/v1/company/salaries",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"company": "google",
"role": "software-engineer"
}
}{
"ok": true,
"meta": {
"api": "levels-fyi",
"endpoint": "company/salaries",
"mode": "live",
"latency_ms": 955.9,
"record_count": 7,
"bytes": 571708,
"cache_hit": false,
"method": "ssr_next_data",
"url": "/companies/google/salaries/software-engineer"
},
"data": {
"company": {
"id": 1,
"slug": "google",
"name": "Google",
"description": "Google LLC is an American multinational technology company that specializes in Internet-related services and products, which include online advertising technologies, a search engine, cloud computing, software, and hardware.",
"website": "https://www.google.com",
"linkedin": "company/google",
"year_founded": 1998,
"employee_count": 258750,
"ticker": "GOOG",
"company_type": "public",
"hq_city": "Mountain View",
"hq_state_code": "CA",
"icon": "https://static.levels.fyi/custom/google.webp",
"tags": [
"Internet",
"Web Services & Apps",
"Technology"
],
"vesting_schedule": "38/12,32/12,20/12,10/12|33/12,33/12,22/12,12/12|50/12,28/12,12/12,10/12|36/12,28/12,20/12,16/12|25/12,25/12,25/12,25/12|25/4,25/4,25/4,25/4|33/4,33/4,34/4",
"general_levels": "L3,L4,L5,L6,L7,L8,L9,L10"
},
"role": "Software Engineer",
"role_slug": "software-engineer",
"location": "United States",
"currency": "USD",
"percentiles": {
"total_comp": {
"p10": 176000,
"p25": 207500,
"p50": 294950,
"p75": 403000,
"p90": 484000
},
"base_salary": {
"p10": 151000,
"p25": 170000,
"p50": 200000,
"p75": 218000,
"p90": 242000
},
"bonus": {
"p10": 0,
"p25": 0,
"p50": 24950,
"p75": 35000,
"p90": 42000
},
"stock_grant": {
"p10": 25000,
"p25": 37500,
"p50": 70000,
"p75": 150000,
"p90": 200000
}
},
"median": {
"level": "L4",
"title": "Software Engineer",
"focus_tag": "Distributed Systems (Back-End)",
"years_of_experience": 4,
"years_at_company": 0,
"location": "Seattle, WA",
"base_salary": 188000,
"total_compensation": 293700,
"stock_grant_annual": 77500,
"bonus_annual": 28200,
"currency": "USD",
"sample_count": 22632
},
"levels": [
{
"titles": [
"L3",
"SWE II"
],
"title_slugs": [
"l3",
"swe-ii"
],
"order": 0,
"description": "L3 / T3 is the new grad software engineering role at Google",
"percent_workforce": 20,
"target_bonus_percentage": null
},
{
"titles": [
"L4",
"SWE III"
],
"title_slugs": [
"l4",
"swe-iii"
],
"order": 1,
"description": null,
"percent_workforce": 20,
"target_bonus_percentage": null
},
{
"titles": [
"L5",
"Senior SWE"
],
"title_slugs": [
"l5",
"senior-swe"
],
"order": 2,
"description": null,
"percent_workforce": 20,
"target_bonus_percentage": null
}
],
"averages": [
{
"level": "L3",
"secondary_level": "SWE II",
"level_index": 0,
"sample_count": 32,
"sample_count_last_12_months": 808,
"total_compensation": 205575,
"base_salary": 161312,
"stock_grant": 34789,
"bonus": 9473,
"commission": 0,
"level_page_url": "https://www.levels.fyi/companies/google/salaries/software-engineer/levels/l3"
},
{
"level": "L4",
"secondary_level": "SWE III",
"level_index": 1,
"sample_count": 33,
"sample_count_last_12_months": 766,
"total_compensation": 289557,
"base_salary": 193977,
"stock_grant": 75045,
"bonus": 20535,
"commission": 0,
"level_page_url": "https://www.levels.fyi/companies/google/salaries/software-engineer/levels/l4"
},
{
"level": "L5",
"secondary_level": "Senior SWE",
"level_index": 2,
"sample_count": 28,
"sample_count_last_12_months": 676,
"total_compensation": 422689,
"base_salary": 228520,
"stock_grant": 163258,
"bonus": 30911,
"commission": 0,
"level_page_url": "https://www.levels.fyi/companies/google/salaries/software-engineer/levels/l5"
}
],
"related_roles": [
{
"title": "Android Engineer",
"title_slug": "android-engineer",
"salary_count": 6,
"median_total": 240000
},
{
"title": "Mobile Software Engineer",
"title_slug": "mobile-software-engineer",
"salary_count": 9,
"median_total": 212000
},
{
"title": "Frontend Software Engineer",
"title_slug": "frontend-software-engineer",
"salary_count": 9,
"median_total": 365000
}
],
"sample_submissions": [
{
"uuid": "9f808ab[redacted-phone]e-84b3-ee13fba3ef39",
"company": "Google",
"title": "Software Engineer",
"job_family": "Software Engineer",
"level": "L3",
"focus_tag": "DevOps",
"years_of_experience": 1,
"years_at_company": 0,
"years_at_level": null,
"offer_date": "[redacted-phone]T16:12:08.865+00:00",
"location": "Los Angeles, CA",
"work_arrangement": null,
"base_salary": 140000,
"total_compensation": 160000,
"stock_grant_annual": 20000,
"bonus_annual": 0,
"currency": null
},
{
"uuid": "cfdc8d[redacted-phone]d1-b420-b8979ec2d3fc",
"company": "Google",
"title": "Software Engineer",
"job_family": "Software Engineer",
"level": "L3",
"focus_tag": "Full Stack",
"years_of_experience": 0,
"years_at_company": 0,
"years_at_level": null,
"offer_date": "[redacted-phone]T05:23:31.072+00:00",
"location": "Palo Alto, CA",
"work_arrangement": null,
"base_salary": 138000,
"total_compensation": 160500,
"stock_grant_annual": 22500,
"bonus_annual": 0,
"currency": null
},
{
"uuid": "c631c[redacted-phone]e1-af0c-a79e9529e230",
"company": "Google",
"title": "Software Engineer",
"job_family": "Software Engineer",
"level": "L3",
"focus_tag": "Data",
"years_of_experience": 1,
"years_at_company": 0,
"years_at_level": null,
"offer_date": "[redacted-phone]T06:49:59.261+00:00",
"location": "New York, NY",
"work_arrangement": null,
"base_salary": 140000,
"total_compensation": 165000,
"stock_grant_annual": 25000,
"bonus_annual": 0,
"currency": null
}
],
"sample_submission_count": 112
}
}What the Levels.fyi API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| company/salaries | The flagship action: full Levels.fyi compensation breakdown for one company + role. Returns the level ladder (L3/L4/…), per-level averages (base / stock / bonus / total), the percentile bands (P10/P25/P50/P75/P90 for total-comp, base, bonus and stock), the median offer (with years of experience), the role's sub-specializations and a sample of recent salary submissions. Pass an optional `location` to scope to a metro. | Recruiting teams call company/salaries to get the flagship action. | company, role, location |
| company/roles | Resolve a company to its Levels.fyi profile (id, slug, website, employee count, HQ, vesting schedule…) plus the catalog of job-family role slugs you can query for it. Use this to confirm a company's slug and pick a role slug to feed into company/salaries. NOTE: the role list is the full Levels.fyi job-family catalog (the roles available to query) — for the roles a company actually has reported data for, read `related_roles` from a company/salaries response. | Labor-market analysts call company/roles to resolve a company to its Levels.fyi profile (id, slug, website, employee count, HQ, vesting s…. | company |
| company/search | Find companies on Levels.fyi by name. Returns matching companies with the slug and a ready-to-use salaries URL — feed the slug into company/roles or company/salaries. | Job boards call company/search to find companies on Levels.fyi by name. | query, limit |
| role/companies | For a given role/title, list every company that reports compensation data for it on Levels.fyi (the role's coverage), plus the country-wide median total-comp and the full job-family catalog. Useful for 'which companies pay for <role>' and leaderboard-style discovery. | Sales intelligence teams call role/companies to get for a given role/title, list every company that reports compensation data for it on Levels.fy…. | role, limit |
| submissions | Paginated individual salary submissions for a company + role — the raw anonymized datapoints behind the averages: level, focus, years of experience, location, base / stock / bonus / total comp and offer date. 50 per page; page with `page`. | Recruiting teams call submissions to get paginated individual salary submissions for a company + role. | company, role, location, page |
Call company/salaries from your stack
curl -X POST https://api.reefapi.com/levels-fyi/v1/company/salaries \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"company":"google","role":"software-engineer"}'import requests
r = requests.post(
"https://api.reefapi.com/levels-fyi/v1/company/salaries",
headers={"x-api-key": REEF_KEY},
json={
"company": "google",
"role": "software-engineer"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/levels-fyi/v1/company/salaries", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"company": "google",
"role": "software-engineer"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.levels-fyi.company/salaries with {"company":"google","role":"software-engineer"}.Who uses this API and why
- Recruiting tools call company/salaries to benchmark an offer against a company's real pay bands.
- Career products use role/companies to show which companies pay most for a given role.
- Comp teams use the percentiles to calibrate salary ranges by level and location.
Questions developers ask before integrating
What is the Levels.fyi API?
Levels.fyi API is a ReefAPI endpoint group for levels.fyi It returns live JSON through POST requests under /levels-fyi/v1.
Is the Levels.fyi API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Levels.fyi calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Levels.fyi login or account?
No login to Levels.fyi is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Levels.fyi data?
The page example is captured from a live company/salaries call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Levels.fyi API use?
Levels.fyi actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Levels.fyi from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call levels-fyi actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Levels.fyi API a Levels.fyi scraper?
It is the managed alternative to a DIY Levels.fyi scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same levels.fyi back as clean JSON.
Why does my Levels.fyi scraper keep getting blocked?
Most Levels.fyi scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.