NewSearch millions of jobs from your AI agent with MCP
All posts
ReferenceDatabase
Reference·Aug 29, 2026·8 min read

H1B salary database: what it actually is, how to read it, and what it leaves out

Every H1B salary lookup site - h1bdata.info, h1bgrader and the rest - is a front-end over one public dataset: the Labor Condition Application disclosure files the Department of Labor publishes every quarter, free, as Excel workbooks. Each row names the employer, the job title, the SOC occupation code, the worksite and two wages - the one the employer promised to pay and the prevailing wage floor it had to clear. Here is where the files live, what each field means, the four wage levels behind them, and the five reasons a certified LCA is not the same thing as a salary.

Dvir Atias

Dvir Atias

Founder, JobsPipe

Search for an H1B salary database and you get a wall of lookup sites - h1bdata.info, h1bgrader, the levels.fyi H-1B page. They look like competing products. They are not. Every one of them is a front-end over the same public dataset: the Labor Condition Application disclosure files that the US Department of Labor publishes every quarter, free, as Excel workbooks. h1bdata.info says so plainly - it indexes the DOL’s LCA disclosure data, more than 4.8 million records from late 2013 through September 2025.

That has two consequences. First, you never need to trust a lookup site: the primary source is a download away. Second, everything the dataset cannot say - and there is a lot - is inherited by every site built on it. This post covers where the data comes from, what each field actually means, and the caveats that separate a certified LCA from a real salary.

Where the database actually comes from

Before an employer can file an H-1B petition, it must file a Labor Condition Application - Form ETA-9035 - with the Department of Labor’s Office of Foreign Labor Certification, attesting that it will pay at least the prevailing wage for the occupation at the worksite. The same form covers the smaller H-1B1 visas for Chile and Singapore and the E-3 visa for Australians, which is why those show up in the files under VISA_CLASS.

OFLC then discloses every final determination in a quarterly public file on the DOL performance-data page, cumulative within each federal fiscal year. The most recent release covers October 1, 2025 through June 30, 2026 - the first three quarters of FY2026. Each release ships with a record-layout PDF describing every column, and CASE_STATUS takes one of four values: Certified, Certified-Withdrawn, Denied, Withdrawn. Denial rates here are tiny - the LCA is an attestation check, not the visa lottery.

The fields that matter

A row in the FY2026 file has some ninety columns, most of them addresses and attorney contact details. The analytical core is about a dozen fields:

  • EMPLOYER_NAME and TRADE_NAME_DBA - the legal entity and its trade name.
  • JOB_TITLE, plus SOC_CODE and SOC_TITLE - the free-text title and its SOC occupation code, which is what makes cross-employer comparison possible at all.
  • NAICS_CODE - the employer’s industry classification.
  • WORKSITE_CITY, WORKSITE_STATE, WORKSITE_POSTAL_CODE - where the work happens, which is what the wage is anchored to.
  • WAGE_RATE_OF_PAY_FROM and _TO with WAGE_UNIT_OF_PAY - the wage the employer commits to pay, quoted per hour, week, bi-weekly period, month or year.
  • PREVAILING_WAGE with PW_WAGE_LEVEL - the legal wage floor for that occupation and county, and which of the four levels it was set at.
  • TOTAL_WORKER_POSITIONS - how many workers one application requests. A single row can stand for dozens of jobs.
  • H-1B_DEPENDENT and WILLFUL_VIOLATOR - compliance flags worth knowing about if you are profiling employers.

Two wages per row, four levels underneath

The subtlety most lookup sites flatten away is that every row carries two wages. The offered wage is what the employer says it will pay. The prevailing wage is the floor it had to clear, and that floor comes in four levels drawn from the BLS Occupational Employment and Wage Statistics survey - roughly the 17th percentile of the occupation’s local wage distribution for Level I, the 34th for Level II, the 50th for Level III and the 67th for Level IV. An employer classifying a role at Level I owes a wage that two thirds of local workers in that occupation out-earn. That mechanic is also a live policy fight: a Department of Labor rulemaking proposed in early 2026 would push the four levels up to roughly the 34th, 52nd, 70th and 88th percentiles. It is a proposal, not law - but if it lands, the wage floors in future files jump.

What the database cannot tell you

Used carefully, LCA data is the best free source of per-company, per-role, per-city US wage figures in existence. Used naively, it misleads in five specific ways:

  • A certified LCA is not a hire. Employers file more LCAs than they win visas - certification happens before the H-1B lottery, and only 85,000 new cap-subject visas exist per year. The DOL itself notes the disclosure data does not indicate what the employer ultimately used the application for.
  • One row can be many workers. TOTAL_WORKER_POSITIONS means row counts are not worker counts unless you sum that field.
  • It is base wage only. No bonus, no equity, no benefits. For senior tech roles that can be half of total compensation, which is why the levels.fyi numbers for the same employer read so much higher.
  • The population is skewed. Only visa-sponsoring employers and visa-eligible specialty occupations appear - heavy on software, consulting and finance, silent on everything else.
  • It is backward-looking. Quarterly releases, describing wages agreed months before the start date.

One neighboring dataset rounds out the picture: the USCIS H-1B Employer Data Hub. That is the petition side - approvals and denials by employer, drawn from Form I-129, with NAICS and geography. It contains no wage fields at all, and nothing links a petition to a specific LCA row. The “H1B salary database” everyone searches for is the DOL file, not the USCIS one.

Using the raw files instead of the lookup sites

If you are doing analysis rather than looking up one employer, skip the front-ends. Download the LCA disclosure file for the fiscal year from the DOL performance-data page, filter CASE_STATUS = Certified, decide whether your unit is applications or worker positions, and pick one wage column. Annualize WAGE_RATE_OF_PAY_FROM using WAGE_UNIT_OF_PAY before comparing anything. For prevailing wages without the download, the OFLC wage search on flag.dol.gov queries the current wage library directly. We walked through the neighboring public sources - BLS OEWS, state releases and the rest - in the salary datasets guide.

The other half of the picture: advertised pay

LCA data answers one question with unusual precision: what did a named employer commit to pay for a specific role, in writing, under penalty of law. What it cannot answer is what employers are offering openly, right now, across the whole market - including the vast majority of jobs that involve no visa at all.

That is what live job postings measure. Counting the active US postings in the JobsPipe index the morning this post published, 47.3 percent state pay - and 44 percent of those quote it hourly rather than annually, a slice of the labour market the visa data barely touches. For US software-developer roles (ISCO-08 unit group 2512), 46,555 active postings carry an annual salary band, and the median advertised band runs $130,000 to $187,800. One call reproduces that benchmark:

curl -X POST "https://api.jobspipe.dev/v1/insights/salary/benchmark" \
  -H "Authorization: Bearer jp_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "occupation_code": "2512", "country": "US" }'

The response is a percentile table - p10 through p90 - with the sample count and a confidence tier, computed from postings no older than 90 days. Or pull the underlying postings with /v1/jobs/search and filters like occupation_code_or and job_country_code_or, each record carrying parsed salary fields where the employer published them. The free tier returns 1,000 jobs a month; filed wages tell you what companies promised last quarter, advertised bands tell you what they are offering today.

Advertised-salary benchmarks from millions of live postings - free tier, API key in 30 seconds.

Get a free API key