Technical writing

BLS Occupational Employment Data: Wages, Job Counts, and 10-Year Projections for Every US Occupation

· AI Analytics
BLSLaborWagesFederal Data

The Bureau of Labor Statistics maintains two programs that together answer the two most consequential questions in labor economics: what do workers earn right now, and where will jobs be in ten years? The Occupational Employment and Wage Statistics program surveys 1.1 million establishments each reference period to produce wage and employment estimates for 830 detailed occupations across every state and 590 + metropolitan areas. The Employment Projections program models occupational demand over a ten-year horizon, identifying which roles are growing fastest, which are disappearing, and what the net change in payrolls will be across every sector of the economy. Together they are the empirical backbone of workforce development policy, career counseling, immigration wage compliance, and skills-based hiring research.

Two Complementary Programs

OEWS and the Employment Projections program address different time horizons using different methods, but they share the Standard Occupational Classification system as a common spine, making their outputs directly combinable. OEWS tells you what a registered nurse earns today, in which metropolitan areas, and at which percentiles of the wage distribution. The EP program tells you how many additional registered nurses the economy will demand by 2032, which states will see the fastest growth, and what percentage gain in employment that represents relative to the current base. Neither program is complete without the other for any serious workforce analysis.

A third BLS resource, the Occupational Outlook Handbook, synthesizes both programs into an accessible career-exploration reference. The OOH does not produce original data; it summarizes OEWS wage figures and EP growth forecasts for roughly 900 occupational profiles, adding context on education requirements, typical duties, work environment, and job outlook narrative. The OOH is the public face of BLS occupational data and the primary source that high school guidance counselors and workforce development practitioners use in daily practice.

OEWS Survey Mechanics

The OEWS program is a semiannual mail survey of nonfarm business establishments, conducted in cooperation with State Workforce Agencies. Each reference period, BLS surveys approximately 1.1 million establishments. The program pools responses across three consecutive reference periods to accumulate roughly 3.3 million establishment observations before publishing a single annual release. This three-year pooling design is the methodological cornerstone of OEWS: no single semi-annual wave could sustain reliable estimates for hundreds of occupations within individual metropolitan areas, but three years of pooled data provides enough observations to publish estimates at the MSA level with acceptable standard errors for common occupations.

The sample is stratified by three dimensions simultaneously: industry (at roughly the 3-digit NAICS level), establishment employment size class, and ownership (private versus state and local government). Stratification ensures that large employers in rare industries — a major teaching hospital, a petrochemical refinery, a defense contractor — are sampled with high probability or included with certainty, because they employ disproportionate shares of specific occupations. Within each stratum, BLS uses probability-proportional-to-size sampling, meaning that larger establishments are sampled more intensively even within a size class.

OEWS publishes its national release in May each year, reporting data as of the most recent May reference month. The release covers nonfarm wage and salary workers only. Self-employed workers, unpaid family workers, and workers in private households are excluded by design, consistent with the scope of the Quarterly Census of Employment and Wages from which the sampling frame is drawn. The practical implication is that OEWS underrepresents occupations with high self-employment rates — physicians in independent practice, attorneys in small law offices, independent consultants — and should be supplemented with CPS microdata for those segments.

OEWS Data Structure

Each record in the OEWS data identifies an occupation within a geography and, for industry-specific files, an industry. The key fields published for every occupation–area cell are:

  • TOT_EMP — estimated total employment. For the national all- industries file this is the aggregate US count; for metropolitan-area files it is the area-specific count.
  • H_MEDIAN, H_MEAN, H_PCT10, H_PCT25, H_PCT75, H_PCT90 — hourly wage median, mean, and four percentile points. Suppressed for occupations on annual salary contracts (teachers, for instance) where hourly wages are not meaningfully defined.
  • A_MEDIAN, A_MEAN, A_PCT10, A_PCT25, A_PCT75, A_PCT90 — annual wage equivalents computed as hourly values × 2,080 (40 hours × 52 weeks). Annual figures are published for all occupations, including those without hourly estimates.
  • WAGE_ENT, WAGE_EXP — entry-level and experienced-level wage benchmarks, defined as approximately the 25th and 75th percentile respectively. These appear in summary products and the OOH but are computed from the full percentile distribution.
  • EMP_PRSE, MEAN_PRSE — percent relative standard errors for the employment and mean wage estimates. Cells with EMP_PRSE above 30% carry unreliable employment counts; cells above 50% are typically suppressed.
  • LOC_QUOTIENT — ratio of the occupation's local employment share to its national employment share. A location quotient above 1.0 signals geographic concentration; above 2.0 indicates strong specialization.

OEWS publishes estimates at four geographic levels: national, state (50 states plus DC), Metropolitan Statistical Areas and Metropolitan Divisions (590 + areas), and Balance of State (BOS) areas that aggregate the non-metropolitan portions of each state. The metropolitan area files are the most widely used for local workforce analysis. Common occupations — registered nurses, retail salespersons, truck drivers — have reliable metro-area estimates in virtually every market. Rare occupations — nuclear engineers, astronomers, oral and maxillofacial surgeons — may be suppressed in smaller metros.

The Standard Occupational Classification System

All OEWS, EP, and OOH data is organized around the Standard Occupational Classification system, a hierarchical taxonomy maintained by BLS and revised periodically. The SOC 2018 revision, which governs current releases, has four levels:

LevelCountExample
Major groups2329-0000 Healthcare Practitioners and Technical Occupations
Minor groups9829-1200 Dentists
Broad occupations45929-1290 Other Dentists
Detailed occupations86729-1241 Orthodontists

The six-digit detailed code is the standard unit of analysis in OEWS. Each code identifies a specific occupation with a defined scope of duties distinct from adjacent codes. OEWS publishes estimates at the detailed level for national data and for most geographies, and at the broad occupation level for aggregated analysis.

A critical complement to the SOC system is O*NET, the Occupational Information Network. O*NET is a companion database maintained under BLS sponsorship that augments each SOC code with detailed descriptors: tasks performed, skills required, knowledge domains, abilities, work activities, work context, and education and training requirements. Where OEWS tells you what the occupation earns and how many people hold it, O*NET tells you what those people actually do. The O*NET–SOC crosswalk is one-to-one for most occupations, making it straightforward to join OEWS wage data with O*NET skill requirements. This join is the foundation of skills-based hiring analysis, job-matching algorithms, and workforce development program design.

Key OEWS Findings Across the Wage Distribution

The OEWS data reveals a stark bifurcation in the US occupational wage structure. Medical specialties dominate the top of the wage distribution. Surgeons broadly defined report median annual wages exceeding $250,000, with Oral and Maxillofacial Surgeons near $234,000 and Orthodontists approaching $208,000. Anesthesiologists report a median near $239,000. Psychiatrists, a specialty facing chronic shortages, sit near $226,000 at the median nationally. Airline Pilots, Copilots, and Flight Engineers report a median around $211,000, reflecting both the training investment and the unionized nature of the occupation at major carriers. Chief Executives report the broadest percentile spread in the dataset — a median near $189,000 but with the 90th percentile above $239,000, the maximum publishable threshold BLS uses to avoid disclosing individual compensation data.

The largest occupations by employment count are not the highest-paying. Retail Salespersons number approximately 4.5 million at the national level, with a median annual wage near $32,000. Fast Food and Counter Workers total approximately 3.5 million and report a median near $30,000. Registered Nurses, the largest single healthcare occupation, number approximately 3.2 million with a national median near $81,000 — simultaneously one of the largest and among the better- compensated of the non-physician occupations. These three occupations alone account for over 11 million jobs and collectively span nearly the full wage distribution.

Geographic wage variation is substantial and systematically tied to regional cost structures and industry concentration. Software Developers report a median annual wage of approximately $160,000 in the San Jose–Sunnyvale–Santa Clara MSA versus approximately $105,000 in non-metropolitan areas of the Midwest, a gap of over $55,000 for the same detailed SOC code. Registered Nurses in California report a state-level median near $130,000, driven by mandatory nurse-to-patient ratios that constrain labor supply, compared with roughly $60,000 in South Dakota. Location quotients for petroleum engineers exceed 10.0 in the Midland, Texas MSA, reflecting an oil-and-gas labor market that is essentially the national hub for the occupation.

Employment Projections: The 10-Year Forecast

The BLS Employment Projections program publishes a comprehensive 10-year forecast for occupational employment every two years. The most recent complete cycle covers 2022–2032. The program does not produce point predictions; it models the occupational structure of employment consistent with a macro-economic scenario for GDP growth, industry output, and labor productivity, then converts industry output projections into occupational demand using occupational staffing patterns derived from OEWS data.

The fastest-growing occupations in the 2022–2032 projections are concentrated in healthcare and clean energy. Home Health and Personal Care Aides lead in absolute job additions, with approximately 924,000 projected net new jobs over the decade, driven by the aging baby boomer population and the secular shift toward home-based care over institutional care. Nurse Practitioners and Physician Assistants appear among the fastest-growing on a percentage basis, reflecting both expanding scope of practice under state legislation and the persistent shortage of primary care physicians in rural and underserved markets. Solar Photovoltaic Installers show the highest projected percentage growth of any occupation in the dataset — over 50% growth from a small base — driven by the Inflation Reduction Act's investment tax credits and the continued decline in panel costs. Data Scientists and related mathematical science occupations project strong percentage growth as organizations across industries build out analytical capabilities.

The fastest-declining occupations illustrate the impact of automation and digitization on routine cognitive and clerical work. Word Processors and Typists show the steepest percentage decline, a long-running trend as document software has eliminated the dedicated operator role entirely. Switchboard Operators project continued sharp decline as VoIP systems, automated attendants, and unified communications platforms displace the human switchboard function. Cashiers face significant projected employment loss as self-checkout, mobile ordering, and cashierless store technology reduces the labor content of retail transactions. Data Entry Keyers and Correspondence Clerks project declines attributable to workflow automation and document digitization. The common pattern across declining occupations is heavy routine cognitive task content combined with low variability demands — precisely the task profile most amenable to algorithmic replacement.

The EP program also publishes replacement needs alongside growth projections. Total job openings equal new jobs created plus openings arising from workers retiring, changing occupations, or leaving the labor force. For many occupations, replacement needs exceed new growth: even an occupation projected to decline in absolute employment may generate substantial annual openings as workers age out. Registered Nursing illustrates this: projected growth of roughly 6% over the decade, but annual job openings of approximately 193,000 driven by the large existing workforce and comparatively high turnover rates in the occupation.

Occupational Outlook Handbook: The Public Face of OEWS and EP

The Occupational Outlook Handbook, published online at bls.gov/ooh, translates OEWS and EP data into approximately 900 occupation-specific profiles designed for a general audience. Each profile follows a consistent structure:

  • What They Do — a plain-language summary of typical duties and responsibilities, drawn from O*NET task descriptors and BLS analyst review.
  • Work Environment — the industries that employ the occupation, typical physical conditions, and schedule characteristics (irregular hours, outdoor exposure, standing work).
  • How to Become One — education requirements, licensure and certification, and typical experience paths. For licensed occupations, this section references the specific credential required and the relevant examining board.
  • Pay — the OEWS national median annual wage, with a link to the full OEWS wage distribution and state-level data. The OOH does not publish percentile estimates; it presents the median only.
  • Job Outlook — the EP projected 10-year employment change as a percentage and in absolute terms, classified as “much faster than average,” “faster than average,” “as fast as average,” “slower than average,” or “little or no change.” The OOH's outlook language is deliberately accessible for use in high school and community college career guidance settings.
  • Similar Occupations — related SOC codes with links to their OOH profiles, enabling navigation across the occupational taxonomy.

The OOH is widely used in workforce development contexts. Career counselors reference it in initial intake sessions with displaced workers to identify viable retraining pathways. One-Stop Career Centers funded under the Workforce Innovation and Opportunity Act use OOH data to frame labor market information presentations. Community colleges use EP projections from the OOH to justify program expansion decisions: a projected 30% growth in Nurse Practitioners supports investment in an NP track; a projected 15% decline in Insurance Claims Clerks argues against expanding an insurance claims certificate. Federal job training grant applications routinely cite OOH outlook ratings as evidence of labor market alignment.

O*NET: The Skills and Tasks Database

O*NET (the Occupational Information Network) is a parallel federal database that complements OEWS wage data with detailed occupational descriptors. Maintained under a BLS contract by the National Center for O*NET Development, O*NET covers approximately 1,000 occupations at a level of detail not found in any other federal dataset. For each occupation, O*NET publishes:

  • Tasks — specific work activities performed, rated by importance and frequency. A registered nurse profile, for instance, lists “Monitor patients' conditions and assess their needs to provide the best possible care and advice” as a core task.
  • Skills — cross-functional competencies such as active listening, critical thinking, service orientation, and complex problem-solving, rated on importance and level scales.
  • Knowledge — subject-matter domains required for the occupation, including medicine, mathematics, computers and electronics, customer and personal service, and law and government.
  • Abilities — enduring cognitive and physical capacities including inductive reasoning, deductive reasoning, oral comprehension, and finger dexterity.
  • Work Context — physical and social conditions of the job: contact with others, exposure to hazardous conditions, degree of automation in the role.
  • Education and Training — typical required education level, on-the-job training, and work experience requirements.

The O*NET–SOC crosswalk enables a rich join with OEWS wage data. An analyst can combine O*NET's skill importance ratings with OEWS wage distributions to answer questions like: which skills command the largest wage premiums within a given occupation group? Which occupations share high task-overlap with occupations projected to decline, creating an at-risk workforce whose skills could transfer laterally? This type of analysis underlies skills-based hiring frameworks adopted by major employers and several state workforce systems.

OEWS as a Wage Inequality Instrument

The OEWS percentile data is the primary federal source for documenting occupational- level wage inequality. The 90th-to-10th percentile ratio — the ratio of the wage at the top decile of an occupation's distribution to the wage at the bottom decile — varies enormously across the SOC taxonomy. For Chief Executives, the 90th percentile exceeds the 10th by a factor of more than three. For Dental Hygienists, the ratio is closer to 1.8, reflecting the tighter licensing-constrained distribution characteristic of regulated healthcare occupations with standardized scope of practice. Tracking the 90/10 ratio across OEWS release cycles reveals whether the within- occupation wage distribution is widening or compressing over time.

Researchers combine OEWS data with Current Population Survey microdata to decompose occupation-level wages by demographic characteristics. OEWS itself does not publish wages by race or gender — it is an establishment survey that records wages without individual demographic attributes. But the CPS, which does collect both occupation and demographics at the individual level, can be used to estimate occupation-specific wage gaps. A common approach is to compute the median OEWS wage for an occupation, then use CPS microdata to estimate the racial or gender wage ratio within that occupation controlling for hours and education, producing a decomposed picture of the wage gap that separates occupational sorting effects from within-occupation discrimination or bargaining effects.

Minimum wage policy analysis uses OEWS to identify occupations with high concentrations of workers near the wage floor. Occupations with OEWS 10th-percentile wages below $15 per hour — the proposed federal minimum in recent legislative cycles — include Fast Food Workers, Dishwashers, Hosts and Hostesses, and Cashiers. The geographic distribution of these below-floor workers, visible in the MSA-level OEWS data, informs state-level minimum wage impact assessments and CBO employment effect models.

Data Access: Files, API, and Series IDs

BLS distributes OEWS data through bulk files and a programmatic API. The bulk files are the most practical access route for comprehensive analysis.

The national files are published as ZIP archives at bls.gov/oes/tables.htm. Each ZIP contains one or more Excel workbooks: the primary national all-industries file contains estimates for all 800 + detailed occupations at the national level; separate files cover each major NAICS sector, enabling cross-industry wage comparison for the same SOC code. Metropolitan-area and state files follow the same column schema, making concatenation straightforward. The flat-file bulk download names follow a predictable pattern:oe.data.0.CurrentRegionalMetroMSA contains all MSA-level estimates in a pipe-delimited flat file; oe.data.1.AllData contains the complete national dataset. These flat files are larger than the Excel workbooks but easier to load programmatically without dependencies on Excel parsing libraries.

The BLS public API at api.bls.gov/publicAPI/v2/timeseries/data/ supports OEWS series IDs using the OEUS prefix. An OEWS series ID encodes the area, SOC code, and data type in a fixed-format string. For example, OEUN000000000000015-1252003 identifies national (area code 0000000) wages for Software Developers (SOC 15-1252), data type 003 (annual median wage). The API is useful for pulling time-series data for a specific occupation–area pair to examine wage trends over multiple release years; for cross-sectional analysis of all occupations simultaneously, the bulk files are faster and more complete.

Employment Projections data is available at bls.gov/emp/tables.htm, published as Excel workbooks covering projected occupational employment, projected openings by occupation, and industry employment projections. The OOH itself links to both OEWS wage tables and EP projection files for each occupation profile, but the underlying EP data files are the appropriate source for bulk programmatic access.

Python: OEWS Healthcare Occupations — Median Wage vs. Employment

The following script downloads the national OEWS bulk ZIP, filters to the two healthcare SOC major groups (29-xxxx practitioners and 31-xxxx support occupations), and produces a scatter plot of median annual wage against total employment level. The ten highest-wage occupations and the five largest-employment occupations are annotated. Install dependencies with pip install requests pandas matplotlib openpyxl.

import requests
import pandas as pd
import matplotlib.pyplot as plt
import io
import zipfile

# Download the national OEWS all-industries file from BLS
# BLS publishes the national estimates ZIP at this URL each May
# The ZIP contains one XLSX per ownership type; the main file starts with "national_M"
url = "https://www.bls.gov/oes/special.requests/oesnat.zip"

resp = requests.get(url, timeout=180)
resp.raise_for_status()

with zipfile.ZipFile(io.BytesIO(resp.content)) as zf:
    names = zf.namelist()
    target = [n for n in names if n.lower().startswith("national_m") and n.endswith(".xlsx")]
    if not target:
        target = [n for n in names if n.endswith(".xlsx")]
    with zf.open(target[0]) as f:
        df = pd.read_excel(f, dtype=str)

# Normalise column names to lowercase
df.columns = [c.strip().lower() for c in df.columns]

# Healthcare Practitioners and Technical Occupations are SOC major group 29-xxxx
# Healthcare Support Occupations are SOC major group 31-xxxx
# We include both so that aides and assistants appear alongside clinicians
hc = df[
    df["occ_code"].str.startswith("29-", na=False) |
    df["occ_code"].str.startswith("31-", na=False)
].copy()

# Keep only detailed occupations (6-digit SOC pattern: NN-NNNN)
hc = hc[hc["occ_code"].str.match(r"^d{2}-d{4}$", na=False)].copy()

# Convert wage and employment columns to numeric
for col in ["a_median", "tot_emp"]:
    if col in hc.columns:
        hc[col] = pd.to_numeric(hc[col], errors="coerce")

# Drop rows missing median wage (suppressed cells appear as flag codes)
hc = hc.dropna(subset=["a_median"]).copy()

# Convert employment to thousands for readability on the scatter axis
hc["emp_k"] = hc["tot_emp"] / 1000

# Build a short label from the occupation title
# Trim trailing qualifiers for cleaner annotations
hc["label"] = (
    hc["occ_title"]
    .str.strip()
    .str.replace(r",? All Other$", "", regex=True)
    .str.slice(0, 40)
)

# ---- Scatter plot: median annual wage vs. employment level ----
fig, ax = plt.subplots(figsize=(13, 9))

scatter = ax.scatter(
    hc["emp_k"],
    hc["a_median"] / 1000,
    s=60,
    color="#0b4a8f",
    alpha=0.65,
    edgecolors="white",
    linewidths=0.5,
)

ax.set_xlabel("Total employment (thousands)", fontsize=11)
ax.set_ylabel("Annual median wage ($000s)", fontsize=11)
ax.set_title(
    "BLS OEWS: Healthcare Occupations by Median Annual Wage vs. Employment Level",
    fontsize=12,
    pad=14,
)
ax.grid(True, linestyle="--", alpha=0.4)
ax.set_axisbelow(True)

# Annotate the 10 highest-wage occupations
top_wage = hc.nlargest(10, "a_median")
for _, row in top_wage.iterrows():
    ax.annotate(
        row["label"],
        xy=(row["emp_k"], row["a_median"] / 1000),
        xytext=(8, 0),
        textcoords="offset points",
        fontsize=7,
        color="#222",
    )

# Annotate the 5 largest-employment occupations
top_emp = hc.nlargest(5, "emp_k")
for _, row in top_emp.iterrows():
    ax.annotate(
        row["label"],
        xy=(row["emp_k"], row["a_median"] / 1000),
        xytext=(4, 6),
        textcoords="offset points",
        fontsize=7,
        color="#555",
    )

plt.tight_layout()
plt.savefig("oews_healthcare_scatter.png", dpi=150)
plt.show()

print("Healthcare occupations by median annual wage (top 15):")
cols_out = ["occ_code", "occ_title", "tot_emp", "a_median"]
print(
    hc.nlargest(15, "a_median")[cols_out]
    .rename(columns={
        "occ_code": "SOC",
        "occ_title": "Occupation",
        "tot_emp": "Employment",
        "a_median": "Median ($)",
    })
    .to_string(index=False)
)

The resulting chart exposes the structural shape of the healthcare labor market: a small cluster of high-wage, low-employment surgical and specialist occupations in the upper-left quadrant; a large cluster of moderate-wage, moderate-employment nursing and therapy occupations in the middle; and a broad mass of low-to-moderate- wage, high-employment support and aide occupations in the lower-right. The annotation layer makes the named occupations immediately identifiable without requiring a separate legend. The errors='coerce' parameter in pd.to_numeric silently converts BLS suppression flags (“#”, “*”) to NaN, which the dropna call then removes before plotting.

To extend this analysis to geographic comparison, download individual metropolitan- area flat files from bls.gov/oes/tables.htm, filter each by SOC major group, add an area identifier column, concatenate across files, and group by area to compare median wages for a specific occupation code across markets. The column schema is identical across national and metro files.

Limitations and Methodological Cautions

The three-year rolling panel design imposes a temporal lag that matters during periods of rapid wage change. The published OEWS median for a given occupation reflects survey responses pooled across three consecutive May reference periods, meaning the effective midpoint of the data is approximately 18 months before the publication date. During the 2020–2023 technology wage surge, published OEWS medians for software occupations consistently lagged private-sector compensation surveys by a wide margin. Analysts using OEWS for real-time benchmarking should supplement with survey sources that have shorter reference periods.

SOC revision cycles create discontinuities in long time-series. The transition from SOC 2010 to SOC 2018 reclassified numerous occupations — splitting broad codes into more specific detailed codes and aggregating others. BLS publishes concordance tables between SOC versions, but applying crosswalks to wage series introduces methodological choices about how to aggregate or disaggregate split or merged codes. Any wage trend analysis spanning the 2018 revision year requires explicit crosswalk treatment.

Employment Projections are model-dependent and have historically shown substantial forecast error over the full ten-year horizon. The 2012–2022 projections did not anticipate the scale of technology-driven employment restructuring in retail and administrative occupations, nor the magnitude of the healthcare employment surge driven by the Affordable Care Act. EP projections are best understood as conditional scenarios consistent with a specific macro-economic trajectory, not as predictions of the actual future occupational employment level. They are appropriate for identifying directional trends and relative growth rankings across occupations, but not for precise counts.


For the payroll employment counts by industry that form the current-period foundation for Employment Projections modeling, see BLS Current Employment Statistics: The Monthly Jobs Report Behind Every Payroll Number.

For the time-use complement to OEWS wage data — documenting how many hours workers actually spend at paid work versus unpaid labor and leisure, disaggregated by sex, education, and employment status — see BLS American Time Use Survey: The Federal Dataset Behind How Americans Actually Spend Their Time.

For the enforcement side of occupational wage standards — FLSA minimum wage and overtime violations documented by the DOL Wage and Hour Division's WHISARD database, with back-wage recovery data by industry and occupation — see DOL Wage and Hour Division: The Federal Enforcement Database Behind $300 Million in Annual Back-Wage Recoveries.