Skip to main content
TradePay

Our Methodology

TradePay shows what skilled trades actually pay — not what recruiters claim or what forums guess. We use federal wage data collected directly from employer payroll records so tradespeople and career changers can make decisions based on real numbers.

Data Sources

Our primary data source is the Bureau of Labor Statistics Occupational Employment and Wage Statistics (OEWS) program. OEWS surveys approximately 1.1 million employer establishments, producing wage estimates by occupation and metro area. Unlike self-reported surveys, OEWS data comes from actual payroll records.

We cover 50 skilled trades across 30 major US metro areas, producing 1,500 trade-city wage profiles. Cost-of-living adjustments use BLS Regional Price Parities.

How We Calculate the Trade Pay Score

Every trade-city combination receives a Trade Pay Score on a 0-100 scale (A-F) that evaluates how well the trade pays in that specific market:

  • Median Wage vs. Metro Household Income — 30% weight. Can a tradesperson in this role support a household in this city? We compare the trade's median wage against the metro area's median household income. Trades that pay above the local household median score highest.
  • 5-Year Wage Growth — 25% weight. How fast wages are rising for this trade in this market. Strong wage growth signals increasing demand and bargaining power for workers.
  • Job Demand/Openings — 25% weight. The projected demand and current job openings for this trade in this metro area, signaling how easy it is to find work and how much leverage workers have.
  • COL-Adjusted Pay — 20% weight. The median wage adjusted for local cost of living. A $60,000 salary in Houston goes further than $80,000 in San Francisco. This factor rewards trades in markets where your paycheck buys more.

Letter grades: A (80-100) means this trade pays well and is growing in this market; F (0-34) means wages are below area standards with weak demand.

Percentile Breakdowns

For every trade-city combination, we show wages at the 10th, 25th, 50th, 75th, and 90th percentiles from OEWS data. This shows the full earning range — from apprentice/entry-level (10th percentile) to experienced journeyman/foreman level (90th percentile).

Data Collection Process

We download OEWS data from the BLS, filter to the 50 SOC codes corresponding to our covered trades, extract wage data for 30 major metro areas, and join with cost-of-living data. All salary figures are the BLS's own estimates — we do not modify or interpolate.

Update Frequency

BLS publishes OEWS data annually, typically in the spring. We refresh our dataset within two weeks of each release.

Known Limitations

  • OEWS measures base wages only. Overtime pay (very common in trades), union premiums, per diem for travel, and benefits are not included. Actual take-home for many tradespeople is significantly higher than the base wage.
  • Self-employed tradespeople and independent contractors are not included in OEWS data. A self-employed plumber may earn more (or less) than the employee figures shown.
  • We cover 30 major metro areas but not rural markets, where wages and cost of living are typically lower.
  • SOC occupation codes are broad — "Electrician" includes residential, commercial, and industrial electricians, whose pay can differ significantly.
  • The Trade Pay Score is our own composite metric, not a BLS or DOL designation.

How to Cite This Data

If you use data from TradePay, please cite:

TradePay. "[Trade] Salary in [City]." tradewages.org, 2026. Accessed [date].

Underlying data is sourced from the Bureau of Labor Statistics OEWS program and is in the public domain.