Discover/Levels API
live

Levels APIlevels.fyi

Access Levels.fyi salary data via API. Get compensation by level, H-1B records, internship pay, benefits, and company profiles across tech roles.

Endpoint health
verified 7d ago
get_company_overview
get_salary_data
get_company_benefits
get_popular_companies
get_internship_salaries
8/8 passing latest checkself-healing
Endpoints
8
Updated
21d ago

What is the Levels API?

The Levels.fyi API exposes 8 endpoints covering tech compensation data including level-by-level salary breakdowns, internship pay, H-1B visa records, and company benefits. The get_salary_data endpoint returns percentile distributions across base salary, total compensation, bonus, and stock grant for a given company and job family. Developers can pair it with get_job_families and get_popular_companies to build fully parameterized compensation queries without hardcoding slugs.

Try it

No input parameters required.

api.parse.bot/scraper/3244ceba-7834-4c1c-a737-e75a4f234a74/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/3244ceba-7834-4c1c-a737-e75a4f234a74/get_job_families' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace levels-fyi-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Levels.fyi SDK — bounded, re-runnable; every call capped."""
from parse_apis.levels_fyi_salary_company_data_api import (
    LevelsFyi, JobFamilySlug, CompanyNotFound,
)

client = LevelsFyi()

# List popular companies — capped to 5 items
for company in client.popularcompanies.list(limit=5):
    print(company.value, company.slug)

# Browse job families
family = client.jobfamilies.list(limit=1).first()
if family:
    print(family.name, family.category, family.slug)

# Construct a company by slug and fetch its overview
google = client.company("google")
profile = google.overview()
print(profile.company.name, profile.company.industry)
for jf in profile.job_families[:3]:
    print(jf.name, jf.category)

# Fetch salary data with enum-typed job family
salary_data = google.salaries(job_family_slug=JobFamilySlug.SOFTWARE_ENGINEER)
print(salary_data.job_family, salary_data.location_currency)

# Iterate level averages from the salary data
for avg in salary_data.averages[:3]:
    print(avg.primary_level_name, avg.base, avg.total)

# Get benefits for a company — capped
for benefit in google.benefits(limit=3):
    print(benefit.id, benefit.perk_id)

# Paginated H-1B records — capped
for record in client.h1brecords.list(year=2025, limit=3):
    print(record.c, record.j, record.w)

# Typed error handling for unknown company
try:
    bad = client.company("nonexistent-company-xyz")
    bad.salaries()
except CompanyNotFound as exc:
    print(f"Company not found: {exc.company_slug}")

print("exercised: popularcompanies.list / jobfamilies.list / company.overview / company.salaries / company.benefits / h1brecords.list")
All endpoints · 8 totalmissing one? ·

Retrieve the full directory of job titles and families organized as a flat list. Each job family includes slug, name, category, focus tags, and job titles. Covers categories like Technology, Design, Business, Finance, Engineering, Human Resources, Healthcare, and more. Returns all families in one call — no pagination.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "job_families": "array of job family objects with slug, name, category, description, focusTags, and jobTitles"
  },
  "sample": {
    "data": {
      "job_families": [
        {
          "id": 1,
          "icon": "https://static.levels.fyi/custom/job_family_icons/software-engineer.png",
          "name": "Software Engineer",
          "slug": "software-engineer",
          "aliases": [],
          "category": "Technology",
          "focusTags": [],
          "jobTitles": [],
          "description": "Designing, building, and maintaining software applications..."
        }
      ]
    },
    "status": "success"
  }
}

About the Levels API

Salary and Compensation Data

The core endpoint, get_salary_data, accepts a company_slug and an optional job_family_slug and returns a structured response including levels, averages, percentiles, and median. The percentiles field breaks down distributions for base_salary, tc (total compensation), bonus, and stock_grant. The averages array groups salary samples by level, so you can see how compensation shifts from entry-level to senior individual contributor or management tracks at a given company.

Job Families and Company Directory

get_job_families returns the full taxonomy of roles organized by category (Technology, Design, Finance, and others), each with slugs suitable for passing directly into get_salary_data. get_popular_companies returns company slugs and display names from the Levels.fyi directory. For richer company context, get_company_overview returns fields like industry, ticker, year_founded, emp_count, and an array of related_companies, plus the job families that company has data for.

Internship and H-1B Records

get_internship_salaries returns a flat array of internship records with fields for monthlySalary, hourlySalary, location, season, year, and company — useful for building intern compensation trackers or comparing seasonal pay across firms. get_h1b_salaries accepts page and year parameters and returns paginated records with wage, job_title, location, and certificationStatus, sorted by date descending. The records response object includes totalPages and totalRecords for pagination handling.

Benefits and Markdown Summaries

get_company_benefits returns a structured benefits array with each perk's category, tag, fields, and monetary value. This is useful for comparing benefits packages between companies rather than just cash compensation. get_salary_summary_md returns a pre-formatted Markdown string with median compensation, level breakdowns, and attribution — designed for embedding in documentation, reports, or LLM contexts where structured prose is more useful than raw JSON.

Reliability & maintenanceVerified

The Levels API is a managed, monitored endpoint for levels.fyi — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when levels.fyi changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official levels.fyi API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
7d ago
Latest check
8/8 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a compensation benchmarking tool that compares total comp percentiles across companies for a given job family using get_salary_data
  • Track internship pay trends by season and location using monthlySalary and hourlySalary fields from get_internship_salaries
  • Generate company compensation summaries in Markdown for embedding in internal wikis or Notion pages via get_salary_summary_md
  • Analyze H-1B wage filings by year and employer using paginated records from get_h1b_salaries
  • Compare benefits packages across competing employers using category and monetary value fields from get_company_benefits
  • Populate a job role autocomplete or filter UI from the full taxonomy returned by get_job_families
  • Display related companies alongside a firm's compensation data using related_companies from get_company_overview
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Levels.fyi have an official developer API?+
Levels.fyi does not publish a public developer API or official data access program as of mid-2025. This Parse API provides structured access to the same compensation data available on their site.
What does `get_salary_data` return and how do I filter it by role?+
get_salary_data requires a company_slug and accepts an optional job_family_slug. When a job family slug is provided, the response scopes percentiles, averages, and median to that role at the given company. Omitting the slug returns an aggregate across all roles. Slugs for both inputs come from get_popular_companies and get_job_families respectively.
Does the H-1B endpoint cover all years of records?+
get_h1b_salaries accepts a year parameter and returns paginated results with totalPages and totalRecords. Coverage depends on what Levels.fyi has indexed; not all historical years may be available. The response reflects whatever year range the source publishes.
Can I filter salary data by geographic location or remote status?+
The get_salary_data response includes a location_meta field and location_currency, but the endpoint does not currently accept a location filter as an input parameter — it returns the data with location metadata attached. You can fork this API on Parse and revise it to add location-based filtering if your use case requires it.
Does the API expose individual salary submissions or survey-level data?+
The averages array within get_salary_data includes sample data points grouped by level, and the internships array from get_internship_salaries contains individual records. The API does not currently expose user profile data, submission timestamps, or verification status for individual entries. You can fork it on Parse and revise to surface additional fields if they become available.
Page content last updated . Spec covers 8 endpoints from levels.fyi.
Related APIs in JobsSee all →
indeed.com API
Search and discover job opportunities on Indeed while accessing detailed job descriptions, company profiles, and salary insights all in one place. Get comprehensive career information including specific compensation data to help you find and evaluate the right job opportunity for you.
resumes.fyi API
Browse and retrieve real resumes from top tech companies that successfully passed resume screens, filtering by role, level, company, school, and verification status. Access resume data and images from over 1,884+ verified resumes to study what works for landing jobs at elite tech firms.
topstartups.io API
Access startup profiles, funding data, job listings, and salary benchmarks from TopStartups.io. Filter by industry, location, funding stage, company size, and more to explore the startup landscape at scale.
jobs.lever.co API
Access job postings on any Lever-hosted company job board. List, filter, search, and group open roles, retrieve full posting details, and extract application form questions via Lever's public API.
nofluffjobs.com API
Search and filter job openings from No Fluff Jobs by category, seniority level, location, and keywords to find IT, marketing, sales, and HR positions tailored to your needs. Retrieve detailed information about specific job postings including requirements, company details, and employment terms to help you make informed application decisions.
wellfound.com API
Search and discover startup jobs, company profiles, and trending opportunities on Wellfound by role and location, with detailed job information and autocomplete suggestions to streamline your job search. Access comprehensive company data and stay updated on what's trending in the startup ecosystem.
glassdoor.co.in API
glassdoor.co.in API
web3.career API
Search and explore Web3 job listings with detailed information including salary data, remote opportunities, and company intelligence across the ecosystem. Filter positions by tags, view comprehensive job details, and access industry salary reports to make informed career decisions in the Web3 space.