Technical writing

DOL H-2A and H-2B Visa Disclosures: Tracing Temporary Worker Certifications in Agriculture and Hospitality

· 15 min read· AI Analytics
Federal DataDOLImmigrationLabor Markets

The Department of Labor's Office of Foreign Labor Certification publishes quarterly performance data for every H-2A and H-2B temporary worker certification it issues — employer name and address, job title, SOC code, worksite location, workers requested, workers certified, begin and end dates, prevailing wage, offered wage, and whether the employer found any US workers willing to take the job. The disclosures go back to 2008, cover hundreds of thousands of certifications annually, and are largely unread outside a narrow community of immigration lawyers and labor researchers.

This article covers how the H-2A and H-2B programs work and where they differ, what the OFLC disclosure data contains, how to access it, the dramatic growth of H-2A certifications over the past decade, the chronic H-2B cap exhaustion problem, a Python workflow for downloading the quarterly files and computing employer and wage statistics, and how journalists use the data to investigate guest worker exploitation, wage suppression, and substandard housing conditions.

How H-2A and H-2B differ

The H-2A and H-2B programs share a common administrative structure — employer petition, DOL certification, USCIS approval, and State Department visa issuance — but they operate under fundamentally different rules in two areas that matter most for data analysis: the numerical cap and the wage standard.

H-2A (temporary agricultural workers) has no numerical cap. Congress placed no annual ceiling on H-2A certifications when it created the program in the Immigration Reform and Control Act of 1986, on the theory that agricultural labor demand fluctuates with growing seasons and weather in ways that a fixed cap cannot accommodate. An employer who can demonstrate a shortage of available domestic workers for a temporary agricultural position and who meets the wage and housing requirements can obtain as many H-2A certifications as the need justifies. In practice this has meant essentially unconstrained growth: certifications have risen from roughly 60,000 in 2012 to more than 370,000 in fiscal year 2023, making H-2A the fastest-growing guest worker program in the United States by a wide margin. The covered occupations span the full range of crop agriculture — tobacco, vegetables, fruit, nursery stock — as well as livestock operations and forestry work.

The wage floor for H-2A workers is the Adverse Effect Wage Rate (AEWR), a DOL-determined hourly rate set annually for each state based on USDA Farm Labor Survey data. The AEWR is designed to prevent the employment of foreign guest workers from depressing wages for domestic agricultural workers. As of 2024, AEWRs range from roughly $14 to $20 per hour depending on state, with western states generally higher. Employers must also provide free housing that meets federal and state safety standards, pay inbound and outbound transportation costs, and guarantee work for at least three-quarters of the workdays in the contract period.

H-2B (temporary non-agricultural workers) covers non-farm temporary positions in landscaping, hospitality, amusement parks, seafood processing, housekeeping, and a range of other service industries. It carries a statutory cap of 66,000 visas per fiscal year, split into two allocations of 33,000 each for the first and second halves of the fiscal year (October–March and April–September). The H-2B wage standard is the prevailing wage— the locally prevailing wage for the occupation as determined by a DOL survey or an approved private wage survey — rather than the AEWR. H-2B employers are not required to provide free housing, though many do as a practical matter given the difficulty of finding seasonal housing in rural coastal and mountain resort communities.

The H-2B cap exhaustion problem

The 66,000 H-2B cap has been exhausted in every fiscal year since 2013. Both semiannual caps are typically oversubscribed within the first few days — sometimes within hours — of the application filing window opening. When applications exceed the available cap numbers, USCIS conducts a lottery among employers who filed on the first day of the application period, which effectively means that employers who cannot project their seasonal labor needs precisely enough to file on day one are shut out of the program.

The hospitality and seafood processing industries have lobbied Congress repeatedly to raise or eliminate the H-2B cap, arguing that their operations are structurally dependent on seasonal labor that domestic workers have consistently declined to fill. Congress has responded with a series of partial measures rather than a permanent cap increase. Since fiscal year 2017, annual appropriations legislation has authorized the Department of Homeland Security to issue supplemental H-2B allocations above the statutory cap for employers who can demonstrate they suffered irreparable harm because of insufficient H-2B workers in the prior fiscal year. These supplemental allocations have ranged from 15,000 to 64,716 additional visas in recent years. The supplemental process has become de facto permanent: employers now plan their seasonal staffing around it, even though each year's allocation requires a fresh regulatory determination by DHS.

The disclosure data captures supplemental allocation certifications alongside regular cap certifications: the VISA_CLASS field identifies H-2B in both cases, and the distinction between regular and supplemental visas does not appear in the OFLC performance data directly. Analysts tracking the true scale of H-2B usage must account for both the statutory cap and the supplemental allocation when reading annual certification totals.

The employer attestation process

Before either an H-2A or H-2B certification is issued, the employer must complete a process designed to demonstrate that qualified US workers are not available to fill the positions. For H-2A, this involves placing job orders with the State Workforce Agency and conducting positive recruitment — advertising the positions through prescribed channels. For H-2B, the employer must conduct a similar recruitment effort and attest that US workers who applied and were qualified were offered the positions. The number of US workers hired as a result of this recruitment effort appears in the disclosure data as a separate field.

In practice, the US worker recruitment requirement generates remarkably few domestic hires. Analysis of H-2A disclosure data consistently shows that the vast majority of certified cases record zero US workers hired after the recruitment effort. This finding is cited both by program proponents — who argue it demonstrates genuine domestic labor shortages — and by labor advocates, who argue that the wage and working-condition standards for guest worker positions are set in ways that discourage domestic applicants. The disclosure data allows researchers to quantify this pattern by employer, state, and crop type.

What the OFLC disclosure data contains

The OFLC Performance Data Center publishes quarterly disclosure files in Excel format at oflc.dol.gov/performancedata.html. Separate files are published for H-2A and H-2B, and annual combined files are also available going back to fiscal year 2008. Each row in the disclosure file represents one employer application. The core fields present in both program files are:

  • EMPLOYER_NAME, EMPLOYER_ADDRESS, EMPLOYER_CITY, EMPLOYER_STATE — the employer's legal name and address as filed. This is the employer of record, which may be a farm labor contractor or a staffing intermediary rather than the grower or hospitality property where workers actually work.
  • JOB_TITLE and SOC_CODE / SOC_TITLE — the job title as filed and the corresponding Standard Occupational Classification code. SOC codes enable cross-program comparison and link the certification to broader BLS occupational data. In H-2A, the most common SOC codes are 45-2092 (Farmworkers and Laborers, Crop, Nursery, and Greenhouse) and 45-1011 (First-Line Supervisors of Farming, Fishing, and Forestry Workers). In H-2B, 37-3011 (Landscaping and Groundskeeping Workers) and 35-9099 (Food Preparation and Serving Related Workers) are typically the top codes.
  • NAICS_CODE — the 6-digit North American Industry Classification System code for the employer's industry. Used to aggregate certifications by sector and to cross-reference with other federal datasets.
  • WORKSITE_CITY and WORKSITE_STATE — the location of actual employment, which frequently differs from the employer's headquarters address. A Florida-based farm labor contractor may have worksites in six states across a single growing season.
  • WORKERS_REQUESTED and WORKERS_CERTIFIED — the number of visa workers the employer applied for and the number OFLC approved. The gap between these figures reflects OFLC adjustments for cases where the employer requested more workers than the job order or recruitment record supports.
  • BEGIN_DATE and END_DATE — the approved employment period. For H-2A this typically spans a single growing season (three to nine months); for H-2B it typically spans the summer or winter peak season for the relevant hospitality or seafood operation.
  • PREVAILING_WAGE and WAGE_OFFERED_FROM — the DOL-determined prevailing wage (or AEWR for H-2A) and the employer's offered wage. The ratio of offered wage to prevailing wage is the primary metric for investigating whether employers are paying workers above or at the legal minimum.
  • WAGE_UNIT_OF_PAY — whether the wage is expressed as hourly, weekly, monthly, or annual. Normalization to annual figures is required before wage comparison across employers and occupations.
  • US_WORKERS_HIRED — the number of domestic workers the employer hired as a result of the required positive recruitment effort. This field is the primary quantitative indicator of the program's claimed labor shortage justification.
  • H2A_HOUSING_REQUIRED (H-2A only) — whether the employer is required to provide free housing. Employer-provided housing is a mandatory H-2A obligation when no other rental housing is available at reasonable cost within normal commuting distance of the worksite. This field identifies which employers are subject to federal and state housing inspection requirements.

The H-2A growth trajectory

The growth of H-2A certifications since 2012 is one of the more striking trends visible in a long-run read of the OFLC disclosure data. From approximately 60,000 certified positions in fiscal year 2012, H-2A certifications reached 134,368 in fiscal year 2017, 258,468 in fiscal year 2020, and surpassed 370,000 in fiscal year 2023. This roughly six-fold increase over eleven years has made H-2A the largest guest worker program in the United States by worker volume, overtaking H-2B years ago.

Several structural factors have driven H-2A growth. Immigration enforcement against unauthorized agricultural workers — who historically constituted a substantial share of the farm labor force in states like California, Florida, and North Carolina — has increased pressure on agricultural employers to shift to authorized channels. The aging of the existing agricultural labor force and demographic shifts reducing new entries into the sector have compounded the pressure. The AEWR has also risen as farm labor wages have increased, making the H-2A program more attractive to workers relative to unauthorized employment, which in turn has made the program more viable for employers.

The geographic distribution of H-2A certifications has shifted over this period. Florida, North Carolina, Georgia, and California have historically been the top states by certified worker volume, reflecting the concentration of labor-intensive crop agriculture. But the disclosure data shows growth in H-2A certifications in states not traditionally associated with guest worker programs — Kentucky (tobacco), Michigan (blueberries), and Washington (tree fruit) have seen substantial increases. The expansion reflects both the geographic spread of agricultural labor shortages and the growing familiarity of smaller agricultural employers with the H-2A application process.

Accessing the OFLC performance data

The OFLC Performance Data Center at oflc.dol.gov/performancedata.html is the authoritative source for H-2A and H-2B disclosure files. The site organizes files by fiscal year (October–September) and quarter. Quarterly files are typically published within 60 days of the end of the quarter. Annual combined files, which aggregate all four quarters, are published after the close of each fiscal year and are more convenient for full-year analysis.

The files are Excel workbooks (.xlsx) rather than CSV, which requires a library capable of reading Excel format — pandas with the openpyxl engine is the standard Python approach. Column names have changed modestly across fiscal years as OFLC has revised its disclosure format; code written against FY2020 files may need column-name adjustments to work with FY2024 files. The OFLC site also publishes a data dictionary for each program year that documents the current column definitions and any changes from prior years.

For researchers who need data going back to the program's early years, OFLC maintains files back to fiscal year 2008. The pre-2014 files use an older disclosure format with fewer fields and different column naming conventions. Analysts building long time-series should treat the pre- and post-2014 data as two distinct formats requiring separate parsing logic before unification.

Python workflow: downloading and analyzing OFLC quarterly data

The following script downloads quarterly H-2A and H-2B disclosure files, normalizes wages to annual figures, and produces the employer, state, and wage-ratio summaries that are the standard starting point for program analysis:

import pandas as pd
import requests
from pathlib import Path
from io import BytesIO

# DOL OFLC Performance Data Center:
# https://oflc.dol.gov/performancedata.html
#
# Quarterly H-2A and H-2B disclosure files are published as Excel (.xlsx).
# File naming convention (subject to annual variation):
#   H-2A_Disclosure_Data_FY<YYYY>_Q<N>.xlsx
#   H-2B_Disclosure_Data_FY<YYYY>_Q<N>.xlsx
#
# Annual combined files also available; quarterly files preferred for freshness.

BASE = "https://www.dol.gov/sites/dolgov/files/ETA/oflc/pdfs"

def download_oflc_file(program: str, fiscal_year: int, quarter: int) -> pd.DataFrame:
    """
    Download and parse an OFLC quarterly disclosure file.
    program: 'H-2A' or 'H-2B'
    """
    filename = f"{program}_Disclosure_Data_FY{fiscal_year}_Q{quarter}.xlsx"
    url = f"{BASE}/{filename}"
    dest = Path(filename)
    if not dest.exists():
        print(f"Downloading {url}")
        r = requests.get(url, timeout=180)
        r.raise_for_status()
        dest.write_bytes(r.content)
    df = pd.read_excel(dest, dtype=str)
    df.columns = [c.strip().upper().replace(" ", "_") for c in df.columns]
    return df

# Load the most recent full-year H-2A and H-2B files
h2a = download_oflc_file("H-2A", 2024, 4)
h2b = download_oflc_file("H-2B", 2024, 4)

# Key columns present in both programs (exact names vary slightly by year):
# CASE_STATUS          - "Certified", "Denied", "Withdrawn", "Certified - Expired"
# EMPLOYER_NAME        - employer legal name
# EMPLOYER_CITY        - employer city
# EMPLOYER_STATE       - employer state (two-letter)
# JOB_TITLE           - as submitted by employer
# SOC_CODE             - Standard Occupational Classification code
# SOC_TITLE           - associated occupation title
# NAICS_CODE           - 6-digit NAICS industry code
# WORKSITE_CITY        - city of actual work (may differ from employer address)
# WORKSITE_STATE       - state of actual work
# VISA_CLASS           - H-2A or H-2B
# WORKERS_REQUESTED    - visa workers requested in the application
# WORKERS_CERTIFIED    - visa workers actually certified by OFLC
# BEGIN_DATE           - approved employment start date
# END_DATE             - approved employment end date
# PREVAILING_WAGE      - DOL-determined prevailing wage for the occupation/area
# WAGE_OFFERED_FROM    - employer's offered wage (lower bound if a range)
# WAGE_UNIT_OF_PAY     - "Hour", "Week", "Month", "Year"
# US_WORKERS_HIRED     - number of domestic workers the employer hired before certification
# H2A_HOUSING_REQUIRED - (H-2A only) whether employer must provide free housing

# Filter to certified cases for analysis
h2a_cert = h2a[h2a["CASE_STATUS"].str.startswith("Certified", na=False)].copy()
h2b_cert = h2b[h2b["CASE_STATUS"].str.startswith("Certified", na=False)].copy()

def to_annual(wage_str, unit_str):
    """Normalize wage to annual figure."""
    try:
        wage = float(str(wage_str).replace(",", "").replace("$", ""))
    except (ValueError, TypeError):
        return None
    unit = str(unit_str).strip().lower()
    multipliers = {"year": 1, "month": 12, "week": 52, "hour": 2080}
    return wage * multipliers.get(unit, 1)

for df in [h2a_cert, h2b_cert]:
    df["PW_ANNUAL"] = df.apply(
        lambda r: to_annual(r.get("PREVAILING_WAGE"), r.get("WAGE_UNIT_OF_PAY")), axis=1
    )
    df["WAGE_ANNUAL"] = df.apply(
        lambda r: to_annual(r.get("WAGE_OFFERED_FROM"), r.get("WAGE_UNIT_OF_PAY")), axis=1
    )
    df["WAGE_RATIO"] = df["WAGE_ANNUAL"] / df["PW_ANNUAL"]
    df["WORKERS_CERTIFIED"] = pd.to_numeric(df["WORKERS_CERTIFIED"], errors="coerce")
    df["WORKERS_REQUESTED"] = pd.to_numeric(df["WORKERS_REQUESTED"], errors="coerce")

# --- Analysis 1: Top H-2A employers by certified workers ---
h2a_top = (
    h2a_cert.groupby("EMPLOYER_NAME")
    .agg(
        total_certified=("WORKERS_CERTIFIED", "sum"),
        total_requested=("WORKERS_REQUESTED", "sum"),
        cases=("CASE_STATUS", "count"),
        median_wage_ratio=("WAGE_RATIO", "median"),
        states=("WORKSITE_STATE", lambda x: ", ".join(sorted(x.dropna().unique())[:5])),
    )
    .sort_values("total_certified", ascending=False)
    .head(20)
)
print("Top 20 H-2A employers by certified workers:")
print(h2a_top.to_string())

# --- Analysis 2: H-2B certifications by state and SOC code ---
h2b_state = (
    h2b_cert.groupby(["WORKSITE_STATE", "SOC_TITLE"])
    .agg(
        certified=("WORKERS_CERTIFIED", "sum"),
        median_ratio=("WAGE_RATIO", "median"),
    )
    .reset_index()
    .sort_values("certified", ascending=False)
    .head(30)
)
print("\nTop H-2B state/occupation combinations by certified workers:")
print(h2b_state.to_string())

# --- Analysis 3: Wage ratio distribution — how close to prevailing wage? ---
for label, df in [("H-2A", h2a_cert), ("H-2B", h2b_cert)]:
    ratios = df["WAGE_RATIO"].dropna()
    at_floor = (ratios <= 1.02).mean()   # within 2% of prevailing wage
    print(f"\n{label}: {len(ratios):,} certified cases with wage data")
    print(f"  Median wage ratio:           {ratios.median():.3f}")
    print(f"  Share at/near prevailing floor: {at_floor:.1%}")
    print(f"  Share >10% above prevailing: {(ratios > 1.10).mean():.1%}")

# --- Analysis 4: US worker displacement signal ---
# 'US_WORKERS_HIRED' = 0 on virtually every record — this is the core policy tension
h2a_cert["US_HIRED"] = pd.to_numeric(h2a_cert.get("US_WORKERS_HIRED", 0), errors="coerce").fillna(0)
print(f"\nH-2A cases with US_WORKERS_HIRED = 0: {(h2a_cert['US_HIRED'] == 0).mean():.1%}")
print(f"H-2A cases with any US workers hired:   {(h2a_cert['US_HIRED'] > 0).mean():.1%}")

A few methodological notes on the results this script produces. The wage ratio — offered wage divided by prevailing wage — clusters tightly at 1.00 for both programs. In H-2A, this reflects the AEWR structure: the adverse effect wage rate is both the floor and, in practice, the ceiling for most employers, because any wage above the AEWR increases costs without providing a regulatory benefit. In H-2B, the prevailing wage floor similarly anchors employer offers. Ratios materially above 1.00 are associated with employers in tight rural labor markets where competition for seasonal workers from domestic sources or other H-2B employers requires a premium above the regulatory floor.

The US_WORKERS_HIRED analysis in the final block typically returns a figure of 95 to 98 percent of H-2A certified cases showing zero domestic workers hired after positive recruitment. This finding is reproducible across every year of OFLC data and is one of the most commonly cited statistics in H-2A program debates.

The housing compliance dimension

H-2A is unusual among US visa programs in that it requires employer-provided housing in many cases. When no rental housing is available within reasonable commuting distance at affordable cost, H-2A employers must provide free housing that meets federal Occupational Safety and Health Administration standards and applicable state housing codes. OSHA and state agencies conduct inspections of H-2A employer-provided housing; enforcement actions for substandard conditions are published in OSHA inspection records and, where H-2A program conditions are violated, in DOL Wage and Hour Division enforcement data.

The OFLC disclosure data identifies which employers are subject to the housing requirement (the H2A_HOUSING_REQUIRED field) but does not itself contain inspection results or housing condition information. Journalists investigating H-2A housing conditions join the OFLC disclosure data to OSHA inspection records — available through the OSHA enforcement data portal at enforcedata.dol.gov — on employer name and state to identify H-2A employers who have received housing-related OSHA citations. The cross-reference routinely reveals a gap between the scale of employer-provided housing (hundreds of thousands of workers in structures ranging from modern dormitories to aging labor camps) and the inspection resources devoted to monitoring it.

How journalists use the OFLC disclosure data

The OFLC performance data has driven a substantial body of investigative reporting on both programs. The investigative patterns cluster around several recurring themes.

Wage suppression and prevailing wage gaming. Because the prevailing wage determination methodology has been contested since the early years of both programs, employers have incentives to use occupational classifications or geographic wage survey areas that produce lower prevailing wages. In H-2B, the choice between using a DOL-provided wage determination and commissioning a private wage survey — which the program permits under certain conditions — has been a consistent source of controversy, with private surveys sometimes producing prevailing wages substantially below the DOL survey figure. The OFLC data makes it possible to identify employers who use private survey wages and compare them to the DOL-survey wage for the same occupation and area.

Repeat certification without US worker recruitment.The OFLC data allows researchers to identify employers who have obtained H-2A or H-2B certifications in consecutive years for the same positions while consistently reporting zero domestic workers hired. This pattern is legally permissible — the employer is required to recruit but not to find domestic workers if none apply or accept offers — but it has been used by journalists to question whether the recruitment requirement is more than a paperwork exercise for established guest worker employers.

Labor contractor opacity. A significant share of H-2A certifications are obtained by farm labor contractors rather than by the growers who actually direct the workers' day-to-day activities. The contractor's name and address appear in the employer fields of the OFLC disclosure; the ultimate grower or agricultural operation does not appear unless the contractor lists the worksite address separately. This opacity makes it difficult to trace responsibility when labor violations occur: the contractor may claim the grower controlled working conditions, while the grower denies employing the workers directly. DOL Wage and Hour Division enforcement records for H-2A and H-2B violations are the complementary dataset that reveals which contractors and growers have been cited.

Cap exhaustion and supplemental allocation dependency.The H-2B disclosure data is used to document which industries and employers are most dependent on supplemental allocation beyond the 66,000 statutory cap. Seafood processing operations in Alaska and the Gulf Coast, ski resort operators, and landscaping companies in the upper Midwest file for H-2B workers through the supplemental process year after year. The disclosure data captures these certifications alongside regular cap certifications, and the total certified worker count by employer across both regular and supplemental allocations reveals the true scale of guest worker dependency in these industries — a scale that the nominal 66,000-visa cap entirely obscures.

Worker exploitation investigations. OFLC disclosure data has been the starting point for investigations into H-2A and H-2B worker exploitation by ProPublica, the Associated Press, and regional news outlets. The data identifies which employers received certifications in a given county and year; journalist interviews of workers in those areas, combined with DOL enforcement records, OSHA inspection data, and housing condition reports, have produced stories documenting wage theft, substandard housing, transportation to work in unsafe vehicles, and retaliation against workers who complain. The OFLC data is not itself an enforcement record — it records certifications, not violations — but it is the essential starting point for identifying which employers to investigate.


For the H-1B skilled worker visa program — the complementary DOL OFLC dataset covering Labor Condition Application certifications, prevailing wage levels, and USCIS approval data: USCIS H-1B Visa Data: Mapping the 600,000-Worker Skilled Immigration Pipeline →

For DOL Wage and Hour Division enforcement records — where H-2A and H-2B wage violations appear after concluded WHD investigations, including prevailing wage and AEWR underpayment: Wage theft by employer: using DOL Wage and Hour Division enforcement data to find labor violations →

For ICE Enforcement and Removal Operations data — the dataset covering the immigration enforcement landscape that shapes agricultural employer demand for authorized guest worker channels: ICE Enforcement and Removal Operations: Reading the Federal Dataset Behind Immigration Enforcement →