levels.fyi 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.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/3244ceba-7834-4c1c-a737-e75a4f234a74/get_job_families' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve the full directory of job titles and families organized by category. Each job family includes slug, name, category, focus tags, and job titles.
No input parameters required.
{
"type": "object",
"fields": {
"job_families": "object with category names as keys (e.g. 'Technology', 'Design', 'Finance') and arrays of job family objects as values"
},
"sample": {
"data": {
"job_families": {
"Technology": [
{
"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": null
}
]
}
},
"status": "success"
}
}About the levels.fyi 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.
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.
- 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
monthlySalaryandhourlySalaryfields fromget_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_companiesfromget_company_overview
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 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.
Does Levels.fyi have an official developer API?+
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?+
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?+
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.