Technical writing

DOL OFLC Disclosures: The Federal Record of Employer Visa-Labor Applications

· 12 min read· AI Analytics
DOLOFLCVisa LaborImmigrationFederal Data

Before a software engineer in Bengaluru, a farmhand in Sonora, or a research scientist in Munich can be hired by a US employer, that employer almost always has to file a form with the Department of Labor first—an attestation that it will pay at least the prevailing wage and will not undercut American workers. The Office of Foreign Labor Certification publishes those filings as quarterly disclosure data: roughly 298,000 case records, one row per application, each naming the employer, the job, the worksite, the offered and prevailing wage, and the verdict—the wage-and-employer half of the immigration system that the USCIS petition data only sees the other side of.

This article covers what the OFLC disclosure data is and how the immigration statutes frame it; the division of labor between the Department of Labor, which certifies the wage and labor-market conditions, and USCIS, which adjudicates the petition; the major programs the data spans—the H-1B Labor Condition Application, the PERM permanent-labor-certification step, and the temporary H-2A and H-2B programs—and the form behind each; the prevailing-wage attestation, which is the program's core worker-protection mechanism and its most-studied field; the Standard Occupational Classification code and how it carries the data into the wider federal statistical system; how the disclosure record joins to the USCIS H-1B petition data and to BLS occupation and wage data; the analytical uses, from employer rankings to PERM denial patterns to seasonal H-2A and H-2B demand; a Python workflow that pulls the disclosure files, tallies certified cases by employer, and computes prevailing-wage distributions by SOC occupation; and the caveats—attestation is not employment, certification is not approval—that every analyst must internalize.

What the dataset is

The Office of Foreign Labor Certification (OFLC) sits inside the Department of Labor's Employment and Training Administration, and it administers the labor side of employment-based immigration. The rule is simple in concept: for many categories of foreign worker, an employer cannot hire from abroad until it has satisfied the Department of Labor that doing so will not harm the wages and working conditions of comparable US workers. Depending on the program, that takes the form of a labor condition application (an attestation the employer files and certifies to), a full labor certification (which requires actually testing the US labor market), or a temporary-labor certification. OFLC processes these cases and, on a quarterly cadence, publishes the records as disclosure data—the public, case-level account of which employers applied to use which visa programs, for which jobs, at what wages, and with what result.

In our database this record is stored as the table dol_oflc_disclosures, with the grain of one row per case: a single employer that filed two hundred H-1B labor condition applications and a dozen PERM cases in a year contributes that many rows. The columns capture who applied, for what role, where, at what wage, and how the case was decided:

case_number          -- OFLC case identifier (program-specific prefix)
program              -- LCA (H-1B), PERM, H-2A, or H-2B
employer_name        -- the petitioning / attesting employer
job_title            -- the offered position as stated by the employer
soc_code             -- Standard Occupational Classification of the job
soc_title            -- the SOC occupation name
worksite_city        -- primary place of employment
worksite_state       -- state of the worksite
wage_offer           -- the wage the employer offers to pay
prevailing_wage      -- the DOL-determined prevailing wage for the job + area
wage_unit            -- hour / week / month / year
case_status          -- certified, denied, withdrawn, certified-withdrawn
decision_date        -- date OFLC issued the determination

Two columns are load-bearing. The case_status records the verdict— certified (the application met the requirements), denied, withdrawn, or the hybrid certified-withdrawn (certified, then withdrawn by the employer, often because the underlying hire fell through). The soc_code is the Standard Occupational Classification of the job, the six-digit federal taxonomy that lets a single application be compared to the Bureau of Labor Statistics' wage and employment data for the same occupation. The prevailing_wage is the determination at the center of the program's worker-protection design—the wage floor the Department of Labor judges the job should command in its area—and the wage_offer is what the employer commits to pay against it. Together with the worksite and the decision date, these turn each row from a bare filing into a structured statement: this employer, for this occupation, in this place, offered this wage against this floor, and the government said yes or no on this date.

The statutory frame and the DOL–USCIS division of labor

Employment-based immigration in the United States runs on a deliberate division of authority between two agencies, and understanding it is the key to reading the disclosure data correctly. The Immigration and Nationality Act establishes the visa categories—the H-1B for specialty-occupation workers, the employment-based green-card preferences, the H-2A and H-2B temporary categories—but it splits the work of granting them. The Department of Labor, through OFLC, owns the labor-market question: will admitting this worker depress the wages or worsen the conditions of US workers similarly employed? The Department of Homeland Security, through U.S. Citizenship and Immigration Services (USCIS), owns the immigration question: is this a real employer, a real job, and a qualified worker, and is the petition approvable?

The sequence matters. For most employment-based categories the employer must clear the Department of Labor first and then take that certification to USCIS as a prerequisite for the petition. An H-1B employer files a labor condition application with OFLC, receives certification, and only then files the I-129 petition with USCIS. A permanent, green-card-track employer goes through the full PERM labor certification at DOL before USCIS will adjudicate the I-140 immigrant petition. The disclosure data is the record of that first stage. This is why a certified OFLC case is not the same as an admitted worker: it is a cleared labor-market step, after which a separate USCIS adjudication—and, for capped programs, a lottery—still stands between the employer and an actual hire. The disclosure record is the wage-and-employer half of the system; the USCIS petition data is the who-got-admitted half, and the two are designed to be read together.

The H-1B Labor Condition Application

The largest single component of the disclosure data is the Labor Condition Application (LCA), filed on Form ETA-9035, which governs the H-1B program and its smaller cousins, the H-1B1 (for Chile and Singapore) and the E-3 (for Australia). The H-1B is the visa for specialty occupations—jobs that require the theoretical and practical application of a body of specialized knowledge and at least a bachelor's degree in the specific specialty. It is the workhorse visa for technology, engineering, finance, healthcare, and academic roles, and it is the program most associated, in the public mind, with the foreign-skilled-worker debate.

The LCA is an attestation, not an investigation, and that distinction defines what the data can and cannot tell you. By filing it, the employer attests under penalty of perjury to four things: that it will pay the H-1B worker at least the higher of the prevailing wage or the actual wage it pays its own similarly employed workers; that employing the H-1B worker will not adversely affect the working conditions of workers similarly employed; that there is no strike or lockout in the occupation at the worksite; and that it has given notice of the filing to its existing workforce. The Department of Labor reviews the LCA for completeness and obvious errors and certifies it, usually within days—it does not, at this stage, audit whether the attestations are true. The H-1B program is numerically capped (with exemptions for universities, nonprofit research institutions, and government research organizations), so a certified LCA is a necessary but far-from-sufficient condition for an actual H-1B hire; many certified LCAs never become workers because the petition is not selected in the lottery or is never filed.

The PERM permanent labor certification

Where the LCA is a fast attestation, the PERM program—Program Electronic Review Management, filed on Form ETA-9089—is the opposite: the demanding, evidence-heavy first step toward an employment-based green card. Most foreign workers seeking permanent residence through their employer in the second and third preference categories must have an approved PERM labor certification before USCIS will consider the immigrant petition. Unlike the LCA, PERM requires the employer to actually test the US labor market: to obtain a prevailing-wage determination from OFLC's National Prevailing Wage Center, to conduct a prescribed set of recruitment steps (a job order with the state workforce agency, newspaper advertisements, and additional recruitment for professional roles), and to attest that it could not find a qualified, willing, able, and available US worker for the position at the prevailing wage.

Because PERM tests the market rather than merely attesting, it is far more likely to be denied, and the PERM denial pattern is one of the most analytically interesting features of the disclosure data. Denials cluster around recognizable failure modes: defects in the recruitment process (advertisements that ran for too short a window or omitted required content), job requirements that the Department of Labor judges unduly restrictive or tailored to the foreign worker rather than to business necessity, and prevailing-wage or audit problems. OFLC also conducts audits on a portion of PERM filings, and audited cases take dramatically longer and fail at higher rates. Because each PERM row carries the employer, the SOC occupation, the worksite, the wage, and the certified-or-denied outcome, the data supports a granular study of which employers, occupations, and recruitment practices draw scrutiny—and of the long, often multi-year, queue between a certified PERM and an available green-card number for workers from the most-backlogged countries.

The temporary programs: H-2A and H-2B

The disclosure data also spans the two temporary, seasonal labor programs, which operate on a different logic from the skilled, year-round H-1B and the permanent PERM track. The H-2A program covers temporary agricultural labor—the crews who plant, tend, and harvest crops—and the H-2B program covers temporary nonagricultural labor in fields such as landscaping, hospitality, seafood processing, and construction. Both run on the Form ETA-9142 family (ETA-9142A for H-2A, ETA-9142B for H-2B, preceded by a prevailing-wage request on the ETA-9141), and both require a genuine temporary-labor certification: the employer must show that the need is temporary or seasonal, that there are not enough US workers available, and that hiring foreign workers will not adversely affect US workers' wages and conditions.

The temporary programs carry their own worker-protections that show up in the data. H-2A has no numerical cap and is built around the Adverse Effect Wage Rate (AEWR), a regionally set agricultural wage floor designed to prevent the importation of farm labor from depressing local farmworker wages, alongside mandatory housing, transportation, and a guarantee of work for at least three-quarters of the contract period. H-2B is capped and is among the most over-subscribed programs, with demand routinely exceeding the statutory ceiling. Because each H-2A and H-2B case carries the worksite, the occupation, the wage, the number of workers requested, and the period of need, the data is the principal public window into seasonal labor demand: where and when the country reaches for foreign agricultural and service labor, which crops and industries depend on it, and how the seasonal pulse of certified cases tracks the agricultural and tourism calendars.

The prevailing-wage attestation

The single most important—and most-studied—field in the entire disclosure record is the prevailing wage. It is the mechanism through which the whole apparatus is supposed to protect US workers: by requiring that the foreign worker be paid at least what the job pays in its labor market, the program is meant to remove the wage incentive to substitute foreign labor for domestic labor. If the prevailing wage works, an employer cannot hire from abroad simply because it is cheaper.

The prevailing wage is determined for a specific occupation in a specific geographic area, and most determinations draw on the Department of Labor's Occupational Employment and Wage Statistics (OEWS)survey, accessed through OFLC's Foreign Labor Certification Data Center wage library. Crucially, the system defines four wage levels for each occupation and area—Level I (entry), Level II (qualified), Level III (experienced), and Level IV (fully competent)—corresponding roughly to the lower and upper percentiles of the local wage distribution for the occupation. The employer (or its attorney) selects a wage level based on the job's experience, education, and supervisory requirements, and that choice sets the floor. Because the level is partly a matter of how the employer characterizes the job, the distribution of wage levels is itself a heavily scrutinized signal: a program in which a large share of specialty-occupation cases are filed at Level I—the entry-level floor—invites the criticism that the prevailing-wage mechanism is being used to certify below-market pay for experienced roles. The disclosure data, by exposing the prevailing wage, the offered wage, the level, and the SOC occupation for every case, is precisely the raw material for testing that criticism empirically rather than rhetorically.

The SOC code and joining to USCIS and BLS

The disclosure data is most valuable not in isolation but as a hub in the federal labor- and immigration-data system, and the join keys that make that possible are the SOC code, the employer name, and the worksite geography. Two joins matter most.

The first is to the USCIS H-1B petition data. OFLC certifies the labor condition application; USCIS adjudicates the petition that follows. By relating the two—through the employer and the period—an analyst can move from “how many LCAs did this employer file and at what wages” to “how many of those translated into approved petitions and actual workers,” closing the gap between attestation and admission that no single dataset spans. The disclosure data supplies the wage, occupation, and worksite detail that the petition data is thinner on; the petition data supplies the approvals, denials, and beneficiary counts that the disclosure data does not have. Read together they describe the full pipeline from labor-market clearance to admitted worker.

The second join is to BLS occupation and wage datathrough the SOC code. Because every disclosure row carries the Standard Occupational Classification of the job, it can be set side by side with the Bureau of Labor Statistics' OEWS estimates for the same occupation and area—the same survey, in fact, that underlies most prevailing-wage determinations. This is what lets an analyst ask whether offered wages in a given occupation sit at the bottom or the middle of the local wage distribution, how prevailing-wage levels by occupation compare to the broader labor market, and which occupations and metropolitan areas absorb the most visa-sponsored labor relative to their total employment. The SOC code is the thread that ties the immigration record into the national wage statistics, turning the disclosure data from an administrative log into a labor-economics dataset.

Analytical uses

A national, case-level, wage-and-employer-resolved record of visa-labor applications supports a distinctive set of analyses, and it is the data behind much of the empirical literature and journalism on employment-based immigration.

Which employers use which programs is the most direct use. Tallying certified cases by employer reveals the concentration of the H-1B program among a relatively small number of large technology firms and IT-services and staffing companies, the very different employer profile of PERM, and the agricultural-grower and seasonal-service employers that dominate H-2A and H-2B. Because the data carries the SOC occupation and the wage, the employer ranking can be sliced by what kind of work, at what pay, each employer sponsors.

Prevailing-wage levels by occupation and locationexploit the wage and SOC fields together. Aggregating the prevailing and offered wages by occupation and area—and comparing the distribution of wage levels—is the core of the long-running debate over whether the program pays market rates, and it is far more informative than anecdote because the disclosure data covers the whole population of cases, not a sample. PERM denial patterns use the certified-versus-denied outcome to study which occupations, employers, and recruitment practices fail the labor-market test and why. And seasonal H-2A and H-2B demand uses the worksite, the period of need, and the worker counts to map the geography and calendar of temporary foreign labor—the harvest-by-harvest, season-by-season pulse of an economy that quietly depends on it.

Python workflow: certified cases and prevailing wages from the OFLC files

The script below pulls an OFLC disclosure file from the public Performance Data page, tallies certified cases by employer, and computes the median prevailing wage by SOC occupation. No API key is required—OFLC publishes the case records as downloadable spreadsheets, one file per program per fiscal year and quarter. Because OFLC renames columns between releases (the H-1B file alone has used several different employer-name and wage-field headers over the years), the script discovers the working column names at runtime rather than hard-coding them; any production use should be validated against the current release's record layout and should load each program file separately, since the LCA, PERM, H-2A, and H-2B files have different schemas.

import requests, io, zipfile
import pandas as pd

# DOL OFLC Performance Data -- quarterly disclosure files.
#
# The Office of Foreign Labor Certification publishes its case records as
# downloadable spreadsheets on the OFLC Performance Data page (flag.dol.gov
# and dol.gov). No API key is required. Each program has its own file:
#   - LCA_Disclosure_Data    -- H-1B / H-1B1 / E-3 Labor Condition Applications
#   - PERM_Disclosure_Data   -- permanent labor certifications (ETA-9089)
#   - H-2A_Disclosure_Data   -- temporary agricultural (ETA-9142A)
#   - H-2B_Disclosure_Data   -- temporary nonagricultural (ETA-9142B)
# The exact filenames and the fiscal-year/quarter path change each release,
# so isolate the URL here and confirm it against the current OFLC page.
LCA_URL = "https://www.dol.gov/sites/dolgov/files/ETA/oflc/pdfs/LCA_Disclosure_Data_FY.xlsx"


def load_disclosures(url=LCA_URL):
    r = requests.get(url, timeout=600)
    r.raise_for_status()
    # OFLC ships .xlsx most quarters; some historical files are zipped.
    if url.lower().endswith(".zip"):
        zf = zipfile.ZipFile(io.BytesIO(r.content))
        name = zf.namelist()[0]
        return pd.read_excel(io.BytesIO(zf.read(name)))
    return pd.read_excel(io.BytesIO(r.content))


def _col(df, *needles):
    # OFLC renames columns between releases (EMPLOYER_NAME vs LCA_CASE_EMPLOYER_NAME);
    # match the first column whose name contains all of the needles.
    for c in df.columns:
        u = str(c).upper()
        if all(n.upper() in u for n in needles):
            return c
    return None


def analyze(df):
    status = _col(df, "STATUS")
    employer = _col(df, "EMPLOYER", "NAME")
    soc = _col(df, "SOC", "CODE") or _col(df, "SOC")
    wage = _col(df, "PREVAILING", "WAGE") or _col(df, "WAGE", "RATE")

    certified = df[df[status].astype(str).str.upper().str.startswith("CERT")]
    print(f"{len(df):,} cases; {len(certified):,} certified "
          f"({len(certified) / max(len(df), 1):.1%})")

    # --- Certified cases by employer ------------------------------------
    top = certified[employer].str.upper().value_counts().head(15)
    print("\nTop sponsoring employers (certified cases):")
    for name, n in top.items():
        print(f"  {n:>6,}  {name}")

    # --- Prevailing-wage distribution by SOC occupation -----------------
    w = pd.to_numeric(certified[wage], errors="coerce")
    by_soc = certified.assign(_w=w).groupby(soc)["_w"].median().dropna()
    by_soc = by_soc.sort_values(ascending=False).head(15)
    print("\nMedian prevailing wage by SOC occupation:")
    for code, val in by_soc.items():
        print(f"  {code}  ${val:,.0f}")
    return certified


analyze(load_disclosures())

Two practical notes apply. First, the employer tally treats each row as one case, which is the right unit for the LCA file but slightly overstates headcount: a single H-1B labor condition application can cover multiple positions, and the file carries a worker-count field that a rigorous analysis should sum rather than counting rows. The same caution applies in reverse to the temporary programs, where one case can request dozens of H-2A or H-2B workers. Second, the median-prevailing-wage-by-SOC computation is a coarse first pass: a careful wage study must normalize the wage to a common unit (the wage_unit column mixes hourly and annual figures), restrict to certified cases, and ideally weight by the worker count and compare against the matching BLS OEWS percentile for the occupation and area rather than reporting a bare median. For national-scale work spanning all four programs and many years, downloading the full quarterly files is far more efficient than scraping, and OFLC ships a record-layout document with each release that supplies the authoritative, version-stamped column definitions.

Limitations and analytical caveats

The OFLC disclosure data is the most comprehensive public record of employer visa-labor applications in the United States, but it carries structural limitations that an analyst must internalize before drawing conclusions from it.

A certified case is not an employed worker. This is the single most consequential caveat. A certified labor condition application means only that the Department of Labor cleared the labor-market step; for the H-1B that is followed by a separate USCIS petition and, for the capped program, a lottery that most certified LCAs never survive into actual employment. Counting certified LCAs as “H-1B workers” can overstate the workforce by a wide margin. PERM and the temporary programs sit at different points in the funnel, but in every case the disclosure record is an application record, not an admission record. The join to USCIS data exists precisely to bridge that gap, and any headcount claim that relies on disclosure data alone should be read as a ceiling, not a count.

The LCA is an attestation, not an audit. Because the Department of Labor certifies labor condition applications for completeness rather than investigating whether the attestations are true at the time of filing, the wage on a certified LCA is what the employer committed to pay, not necessarily what it ultimately paid. Enforcement of the wage obligation is a separate, complaint- and audit-driven process. The data is an excellent record of what employers attested to; it is not a record of compliance, and treating the offered wage as realized compensation over-reads it.

Employer names are messy, and there is no clean entity key. The disclosure files identify employers by self-reported name, which varies in spelling, punctuation, abbreviation, and corporate form across filings and across programs, and a single corporate parent often files under many distinct subsidiary and DBA names. Any employer-level analysis—ranking sponsors, tracking a firm across programs— requires name normalization and entity resolution, and naive value-counts on the raw name field will fragment a large sponsor into several smaller ones. Linking employers to a stable identifier (an EIN where available, or a resolved entity from another dataset) is the necessary, and non-trivial, prerequisite for serious employer-level work.

Schemas and program rules change over time. The forms, the column layouts, the wage-determination methodology, and the program rules themselves have all changed repeatedly—PERM replaced an earlier labor-certification process, the H-2A wage methodology and the H-2B rules have been revised, and the disclosure-file columns are renamed between releases. A multi-year time series therefore requires careful harmonization, and apparent trends can reflect rule or coding changes rather than real shifts in employer behavior. Held with these caveats in mind, the dol_oflc_disclosures table is a uniquely valuable resource: a case-level, wage-resolved, occupation-coded record of the labor-market gate that stands in front of much of US employment-based immigration—the employer-and-wage half of a system whose other half, who actually got admitted, lives next door in the USCIS petition record.

Related writing

USCIS H-1B Data: The Federal Record of Who Sponsors Skilled Foreign Workers — The OFLC disclosure data is the labor-market half of the H-1B pipeline; the USCIS petition record is the admission half, and joining the two by employer is what closes the gap between a certified labor condition application and an actual approved, working H-1B beneficiary.

BLS Occupational Employment and Wage Statistics: The Federal Database Behind Median Salary Data for Every US Occupation — The OEWS survey is the source most prevailing-wage determinations draw on, so joining the disclosure data to OEWS by SOC code is what lets an analyst test whether offered and prevailing wages sit at the bottom or the middle of the local labor market.

DOL Form 5500: The Federal Window Into Every US Pension and 401(k) Plan — Another Department of Labor disclosure regime keyed to the employer, the Form 5500 filings round out the picture of what a sponsoring firm offers its workforce, from prevailing-wage commitments on the immigration side to retirement and benefit plans on the labor-standards side.