Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Levels.fyi API page →
Jobs & Hiring

Levels.fyi API & Scraper

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

5 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 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.

Reference

Levels.fyi level ladders: what L4, SDE II, IC3 and ICT3 mean per company

Every company names its levels differently, and the level strings you get back are that company's own ladder rather than a normalized scale. The table below was measured on 2026-08-27 by calling company/salaries for the software-engineer role at each company with no location filter, which returns the United States figures. P50 is the median total compensation across all levels.

Company slugLevel ladder returnedMedian levelTotal-comp P50 (USD)
googleL3, L4, L5, L6, L7, also named SWE II, SWE III, Senior SWE, Staff SWEL4302,700
amazonSDE I, SDE II, SDE III, Principal SDE, Senior Principal SDE, Distinguished EngineerSDE II262,500
microsoftnumeric bands 59 to 80, some named: SDE 59-60, SDE II 61-62, Senior SDE 63-64, Principal SDE 65-66, Partner 68, Distinguished Engineer 70, Technical Fellow 80Senior SDE236,900
appleICT2, ICT3, ICT4, ICT5, ICT6, Distinguished Engineer, Senior Distinguished Engineer, Engineering FellowICT3271,500
nvidiaIC1 through IC8IC3268,000
stripeL1 through L7L2290,540
goldman-sachsAnalyst, Associate, Vice President, Managing Director, PartnerAssociate160,000

A company name is auto-slugified, so company 'Goldman Sachs' resolves to goldman-sachs. Each levels[] entry carries a titles array because a level usually has more than one name, for example ['L3','SWE II'] at Google and ['SDE','59'] at Microsoft, so match on any element rather than assuming titles[0].

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": 1057.4,
    "record_count": 7,
    "bytes": 602629,
    "cache_hit": false,
    "url": "/companies/google/salaries/software-engineer",
    "charged_credits": 1,
    "version": "1.0.0"
  },
  "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": 188000,
      "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": 177777,
        "p25": 215000,
        "p50": 294650,
        "p75": 382000,
        "p90": 481000
      },
      "base_salary": {
        "p10": 150000,
        "p25": 164000,
        "p50": 199353,
        "p75": 225000,
        "p90": 250000
      },
      "bonus": {
        "p10": 0,
        "p25": 0,
        "p50": 28000,
        "p75": 37800,
        "p90": 50000
      },
      "stock_grant": {
        "p10": 25000,
        "p25": 37951,
        "p50": 75000,
        "p75": 130000,
        "p90": 200000
      }
    },
    "median": {
      "level": "L4",
      "title": "Software Engineer",
      "focus_tag": "ML / AI",
      "years_of_experience": 2,
      "years_at_company": 0,
      "location": "Mountain View, CA",
      "base_salary": 201000,
      "total_compensation": 294650,
      "stock_grant_annual": 63500,
      "bonus_annual": 30150,
      "currency": "USD",
      "sample_count": 24207
    },
    "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": 54,
        "sample_count_last_12_months": 1099,
        "total_compensation": 196094,
        "base_salary": 156185,
        "stock_grant": 31458,
        "bonus": 8451,
        "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": 58,
        "sample_count_last_12_months": 841,
        "total_compensation": 295637,
        "base_salary": 191045,
        "stock_grant": 80267,
        "bonus": 24325,
        "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": 46,
        "sample_count_last_12_months": 714,
        "total_compensation": 434214,
        "base_salary": 234400,
        "stock_grant": 167606,
        "bonus": 32207,
        "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": "Frontend Software Engineer",
        "title_slug": "frontend-software-engineer",
        "salary_count": 5,
        "median_total": 269000
      },
      {
        "title": "Machine Learning Engineer",
        "title_slug": "machine-learning-engineer",
        "salary_count": 22,
        "median_total": 287500
      }
    ],
    "sample_submissions": [
      {
        "uuid": "45f84415-7f2c-45e1-bb2f-cb7371cf8731",
        "company": "Google",
        "title": "Software Engineer",
        "job_family": null,
        "level": "L3",
        "focus_tag": "Full Stack",
        "years_of_experience": 2,
        "years_at_company": 2,
        "years_at_level": null,
        "offer_date": "2026-08-23T16:45:49.058+00:00",
        "location": "Raleigh, NC",
        "work_arrangement": null,
        "base_salary": 120000,
        "total_compensation": 140000,
        "stock_grant_annual": 20000,
        "bonus_annual": 0,
        "currency": null
      },
      {
        "uuid": "a71b3479-b41a-4f28-84ea-cfb756c72999",
        "company": "Google",
        "title": "Software Engineer",
        "job_family": null,
        "level": "L3",
        "focus_tag": "ML / AI",
        "years_of_experience": 3,
        "years_at_company": 0,
        "years_at_level": null,
        "offer_date": "2026-08-29T13:43:41.055+00:00",
        "location": "New York, NY",
        "work_arrangement": null,
        "base_salary": 125000,
        "total_compensation": 150000,
        "stock_grant_annual": 25000,
        "bonus_annual": 0,
        "currency": null
      },
      {
        "uuid": "9a7df4d6-4f0f-41c4-adaf-77d6ca6f235e",
        "company": "Google",
        "title": "Software Engineer",
        "job_family": null,
        "level": "L3",
        "focus_tag": "ML / AI",
        "years_of_experience": 2,
        "years_at_company": 2,
        "years_at_level": null,
        "offer_date": "2026-09-16T01:59:40.009+00:00",
        "location": "New York, NY",
        "work_arrangement": null,
        "base_salary": 130000,
        "total_compensation": 160000,
        "stock_grant_annual": 30000,
        "bonus_annual": 0,
        "currency": null
      }
    ],
    "sample_submission_count": 94
  }
}
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

Which fields add up to total compensation?

base_salary plus stock_grant_annual plus bonus_annual, and it reconciles exactly. Google's median offer measured on 2026-08-27 returned base_salary 200000, stock_grant_annual 80000, bonus_annual 18000 and total_compensation 298000. An individual submission in the same response returned 122222 base, 22222 stock, 0 bonus and total_compensation 144444. Stock is the annualized grant value, not the four-year total, and commission appears as its own field in the per-level averages.

Are these numbers medians or individual salary submissions?

Both, in the same response. percentiles gives p10, p25, p50, p75 and p90 for total_comp, base_salary, bonus and stock_grant separately. median is one representative offer with its level, focus tag, location and years of experience. averages is one row per level with mean total_compensation, base_salary, stock_grant and bonus. sample_submissions carries individual anonymized datapoints, and the submissions action pages through more of them.

Why does sample_count say 39 for a level when the company has thousands of submissions?

Because two different counts sit side by side. In Google's software-engineer averages, level L3 returned sample_count 39 alongside sample_count_last_12_months 1106, while the median block returned sample_count 23928 for the role as a whole. Read sample_count_last_12_months for the recent volume behind a level's averages, and the median's sample_count for the size of the whole dataset.

How many individual submissions can I actually page through?

Fewer than the sample counts suggest. The submissions action returns 50 per page and reports its own totals: for google plus software-engineer on 2026-08-27 it returned total 104 across total_pages 3, while the same company and role reported 23,928 submissions behind the aggregates. The paginated feed is the recent public sample Levels.fyi publishes, not the full dataset, so use percentiles and averages for population figures and submissions for texture.

Which location slugs actually work?

Only the ones matching a real Levels.fyi page, and the naming is not guessable. Measured on 2026-08-27 for google plus software-engineer: new-york-city-area answered with location 'New York City' and a total-comp P50 of 298000, san-francisco-bay-area answered with P50 320000, and greater-seattle-area answered with P50 273000. bay-area, seattle-area, austin-area and london-area all returned error code NOT_FOUND. Omitting location gives the company-wide United States figures, which for Google was P50 302700.

What currency are the compensation numbers in?

US dollars on the US-scoped pages, reported as currency 'USD' at the top level and inside the median block. Individual rows are the exception: all 50 submissions in a measured page came back with currency null, so fall back to the response-level currency rather than reading it per row. No conversion is applied anywhere, so a non-US page reports whatever the source reports.

What does an individual salary submission contain?

uuid, level, title, focus_tag, years_of_experience, years_at_company, location, base_salary, stock_grant_annual, bonus_annual, total_compensation and offer_date. focus_tag is the specialization, with measured values including 'Full Stack', 'Testing (SDET)', 'Web Development (Front-End)' and 'Distributed Systems (Back-End)'. offer_date is a full ISO 8601 timestamp with milliseconds and offset, for example 2026-08-21T03:28:18.149+00:00, and it is the only ISO date in the response.

How do I find the right company and role slug?

company/search takes a partial name and returns matches with their slug and salaries URL. company/roles resolves a company to its profile, measured for Stripe as id 36, employee_count 8000, hq_city 'San Francisco' and company_type 'private', and returns the 105-entry job-family catalog you can query, starting software-engineer, product-designer, product-manager, data-scientist. Going the other way, role/companies lists every company reporting data for a role plus the country-wide median, which for software-engineer was 195,000.

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

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
companyrequired—Company 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.
rolerequired—Job family / role ('software-engineer', 'product-manager', 'data-scientist', 'hardware-engineer'). Use company/roles to list the exact roles a company reports.
locationoptional—Optional 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
companyrequired—Company 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
queryrequired—Company 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
rolerequired—Role / 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
companyrequired—Company 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.
rolerequired—Job family / role ('software-engineer', 'product-manager', 'data-scientist', 'hardware-engineer'). Use company/roles to list the exact roles a company reports.
locationoptional—Optional 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 →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.