H1B Report

Open Data

The cleaned H-1B / LCA dataset,
free to download.

Aggregate tables derived from every US Department of Labor Labor Condition Application disclosure — the wage-and-worksite filing behind every H-1B, H-1B1, and E-3 hire — with employer name variants resolved to canonical organizations, job titles mapped to BLS SOC codes, and wages normalized to annual USD. The same cleaned corpus that powers h1b.report, as plain CSV files under a CC BY 4.0 license. This page is the canonical home of the dataset.

9,331,644
LCA filings
FY2010–2026
fiscal years
126,465
canonical employers
782
SOC occupations
Download all (783 KB ZIP)All tables + data dictionary + license · updated 2026-08-26

You may not need the CSVs at all

Everything in this dataset is already served on h1b.report as interactive charts and analytics — wage trends, certification rates, and per-entity deep dives on the newest release, no processing required: rankings, sponsor profiles, occupation salary guides, state breakdowns, industry sectors, and the Sponsor Finder. The CSVs below are for when you want to run your own analysis.

The tables

Eight aggregate tables, one grain each. UTF-8, comma-separated, one header row; empty cell means not available. Ordering is deterministic and stable across releases.

TableOne row perRowsSize
national_by_year.csvfiscal year17466 B
occupation_by_year.csvSOC × fiscal year4,477297 KB
occupation_by_state.csvSOC × worksite state6,578328 KB
occupation_wage_by_level.csvSOC × prevailing-wage level1,13274 KB
state_by_year.csvstate × fiscal year93117 KB
sector_by_year.csvNAICS-2 sector × fiscal year42519 KB
employers_summary.csvcanonical employer18,9272.2 MB
soc_coverage_by_year.csvfiscal year (diagnostic)17488 B

The release also ships a 100-row preview sample, a machine-readable manifest.json, the full data dictionary and license as plain files.

Data dictionary

Wages are the offered WAGE_RATE_OF_PAY_FROM, annualized (hourly × 2080, weekly × 52, bi-weekly × 26, monthly × 12), kept only inside a $20,000–$1,000,000 plausibility band, and rounded to the nearest $100. Percentiles are PostgreSQL percentile_cont (linear interpolation). Certification percentages are shares of all filings for that row's entity, so the four outcome columns need not sum to 100. Full conventions are documented on the methodology page.

national_by_year.csv

One row per fiscal year.

ColumnTypeUnitDefinition
fiscal_yearintegerFYDOL fiscal year
total_filingsintegerfilingscount(*) of LCA filings that year
certified_pctdecimal(2dp)%Certified ÷ total_filings × 100
median_wageintegerUSD/yrpercentile_cont(0.5), rounded to $100
occupation_by_year.csv

One row per (SOC code × fiscal year). Ordered by soc_code, fiscal_year.

ColumnTypeUnitDefinition
soc_codestringSOC occupation code, e.g. 15-1252
soc_titlestringSOC occupation title
fiscal_yearintegerFYDOL fiscal year
filingsintegerfilingsFilings for that SOC that year
wage_p25integerUSD/yr25th percentile annualised wage
wage_medianintegerUSD/yr50th percentile annualised wage
wage_p75integerUSD/yr75th percentile annualised wage
occupation_by_state.csv

One row per (SOC code × worksite state). Ordered by soc_code, state.

ColumnTypeUnitDefinition
soc_codestringSOC occupation code, e.g. 15-1252
soc_titlestringSOC occupation title
statestring2-letter worksite state code (not employer HQ)
filingsintegerfilingsFilings for that SOC in that state
wage_medianintegerUSD/yr50th percentile annualised wage
occupation_wage_by_level.csv

One row per (SOC code × prevailing-wage level). Ordered by soc_code, pw_level.

ColumnTypeUnitDefinition
soc_codestringSOC occupation code, e.g. 15-1252
soc_titlestringSOC occupation title
pw_levelstringIIV: DOL prevailing-wage skill level. I ≈ entry, IV ≈ fully competent/senior. Filings without a level are excluded from this file.
nintegerfilingsFilings at that SOC and level
wage_p25integerUSD/yr25th percentile annualised wage
wage_medianintegerUSD/yr50th percentile annualised wage
wage_p75integerUSD/yr75th percentile annualised wage
state_by_year.csv

One row per (worksite state × fiscal year). Ordered by state, fiscal_year.

ColumnTypeUnitDefinition
statestring2-letter worksite state code
fiscal_yearintegerFYDOL fiscal year
filingsintegerfilingsFilings with a worksite in that state
wage_medianintegerUSD/yr50th percentile annualised wage
sector_by_year.csv

One row per (NAICS-2 sector × fiscal year). Ordered by naics2, fiscal_year.

ColumnTypeUnitDefinition
naics2stringFirst 2 digits of the employer's NAICS code
sector_namestringNAICS sector label, e.g. Professional, Scientific & Technical Services
fiscal_yearintegerFYDOL fiscal year
filingsintegerfilingsFilings in that sector that year
wage_medianintegerUSD/yr50th percentile annualised wage
employers_summary.csv

One row per canonical employer with ≥ 25 lifetime filings. Ordered by total_filings descending, then employer_name.

ColumnTypeUnitDefinition
employer_slugstringURL slug; https://h1b.report/employer/<slug>
employer_namestringCanonical employer name
employer_statestring2-letter state on the employer record (HQ, not worksite)
total_filingsintegerfilingsLifetime filings across all years
first_fyintegerFYEarliest fiscal year with a filing
last_fyintegerFYLatest fiscal year with a filing
certified_pctdecimal(2dp)%Share of all filings Certified
cert_withdrawn_pctdecimal(2dp)%Certified then withdrawn
withdrawn_pctdecimal(2dp)%Withdrawn before decision
denied_pctdecimal(2dp)%Denied
median_wageintegerUSD/yr50th percentile annualised wage, all years
top_soc_codestringMost-filed SOC for that employer (ties broken by lowest soc_code)
top_soc_titlestringTitle of top_soc_code
soc_coverage_by_year.csv

Diagnostic table: how much of each fiscal year carries a SOC occupation code. Read this before comparing occupation counts across years — a year with low coverage will under-report every SOC.

ColumnTypeUnitDefinition
fiscal_yearintegerFYDOL fiscal year
total_filingsintegerfilingsAll filings that year
filings_with_soc_codeintegerfilingsFilings carrying a SOC code — the population behind the occupation_* files
soc_coverage_pctdecimal(2dp)%filings_with_soc_code ÷ total_filings × 100

Not subject to MIN_N suppression: it is a per-year completeness diagnostic, and every row aggregates an entire fiscal year.

What's deliberately not included

License & citation

The dataset is licensed under Creative Commons Attribution 4.0 (CC BY 4.0): free to share and adapt, including commercially, with attribution — a link to h1b.report suffices. The underlying DOL disclosure records are US-government public records; the license applies to the derived, cleaned tables.

The license covers the data, not the site. h1b.report's chart designs, page layouts, branding, and written analysis are not part of this release and may not be reproduced — see the terms. Reuse the tables freely with attribution; build your own presentation on top of them.

h1b.report (2026). H-1B / LCA Open Data: aggregate tables, FY2010–FY2026. Derived from US DOL OFLC LCA disclosure data. https://h1b.report/open-data

Mirrors

The same release is published on Kaggle, GitHub, and Hugging Face. Those are copies for convenience, refreshed on a lag of at least one quarterly release: new DOL data lands on this page first — within ~24 hours of each release, where the dataset is produced — and reaches the mirrors a quarter later. If freshness matters, download from this page.