Jobs & Hiring

Levels.fyi API

The Levels.fyi API returns tech salary and compensation data as clean JSON.

5 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 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.

Live example

Real request and response JSON

Captured from the indexed primary action, company/salaries, on .

Captured request
{
  "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"
  }
}
Captured response
{
  "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
  }
}
Actions

What the Levels.fyi API does

ActionDescriptionConcrete use caseKey params
company/salariesThe 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/rolesResolve 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/searchFind 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/companiesFor 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
submissionsPaginated 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
Code samples

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"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.levels-fyi.company/salaries with {"company":"google","role":"software-engineer"}.
Use cases

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.
FAQ

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.

docs / levels-fyi

Levels.fyi

Levels.fyi

base /levels-fyi/v15 endpoints
post/levels-fyi/v1/company/salaries1 credit

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.

ParameterAllowed / rangeDescription
companyrequiredCompany name or Levels.fyi slug ('google', 'Goldman Sachs', 'stripe', 'nvidia'). A name is auto-slugified; if you already have the slug from company/search, pass it directly.
rolerequiredJob family / role ('software-engineer', 'product-manager', 'data-scientist', 'hardware-engineer'). Use company/roles to list the exact roles a company reports.
locationoptionalOptional metro/location slug to scope comp to one area ('new-york-city-area', 'seattle-area', 'bay-area'). Omit for the company-wide (United States) figures.
Try in playground →
post/levels-fyi/v1/company/roles1 credit

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.

ParameterAllowed / rangeDescription
companyrequiredCompany name or Levels.fyi slug ('google', 'Goldman Sachs', 'stripe', 'nvidia'). A name is auto-slugified; if you already have the slug from company/search, pass it directly.
Try in playground →
post/levels-fyi/v1/company/search1 credit

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.

ParameterAllowed / rangeDescription
queryrequiredCompany name (or part of it) to search for.
limit = 20optional1–100Max companies to return (1–100).
Try in playground →
post/levels-fyi/v1/role/companies1 credit

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.

ParameterAllowed / rangeDescription
rolerequiredRole / job-family slug ('software-engineer', 'product-manager', 'data-scientist').
limit = 200optional1–2000Max companies to return (1–2000).
Try in playground →
post/levels-fyi/v1/submissions1 credit

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`.

ParameterAllowed / rangeDescription
companyrequiredCompany name or Levels.fyi slug ('google', 'Goldman Sachs', 'stripe', 'nvidia'). A name is auto-slugified; if you already have the slug from company/search, pass it directly.
rolerequiredJob family / role ('software-engineer', 'product-manager', 'data-scientist', 'hardware-engineer'). Use company/roles to list the exact roles a company reports.
locationoptionalOptional metro/location slug to scope comp to one area ('new-york-city-area', 'seattle-area', 'bay-area'). Omit for the company-wide (United States) figures.
page = 1optional1–200Submission page (50 per page). Page until meta.total_pages.
Try in playground →