How Estimates Are Calculated
Where every price on this site comes from — the public datasets behind it, the math applied, and what the numbers can and cannot tell you.
Every price on this site is an estimate built from public data, not a quote and not a number we invented. This page explains exactly where each figure comes from, the math applied to it, and the limits of what it can tell you.
The short version
- We research a national base price for the job — a low, average and high.
- We work out where you are, from your ZIP code down to the metro area.
- We adjust the national price using regional price data and local income data for that area.
The result is a range for your area rather than one national number that is wrong almost everywhere.
Step 1 — The national base price
Each service we cover starts with a researched national range: a low, an average and a high, plus the unit the trade actually prices in (per project, per square foot, per hour). This base reflects a typical job in typical conditions, before any local adjustment.
The base covers the main work in an average job. Extras that are commonly billed separately — permits, disposal, emergency call-outs — are called out on each service page rather than hidden inside the average.
Step 2 — Locating you (HUD)
Prices track metro areas far better than they track states. To get from a ZIP code to a metro area we use the HUD USPS ZIP Code Crosswalk, the standard mapping between USPS ZIP codes and Census geographies (here, the CBSA / metro area).
When a ZIP maps to more than one metro, we take the one holding the largest share of that ZIP’s residential addresses. Rural ZIPs that sit outside any metro fall back to state-level data.
Step 3 — Regional Price Parity (BEA)
The core adjustment comes from Regional Price Parities published by the U.S. Bureau of Economic Analysis. An RPP is an index where 100 = the national average: an area at 112 is 12% more expensive than the US as a whole, an area at 91 is 9% cheaper.
We use the “all items” line from two BEA tables:
- MARPP — metro-area parities, used whenever we can resolve your ZIP to a metro.
- SARPP — state parities, used for rural ZIPs and state-level pages.
That index becomes a straight multiplier: RPP ÷ 100. If neither is available, the multiplier is 1 and you are seeing the national figure.
Step 4 — Local income and housing (Census)
Price parity captures the general cost of an area, but what local households earn also shapes what trades can charge. We pull three figures from the U.S. Census American Community Survey (5-year estimates):
- Population (table B01003)
- Median household income (table B19013)
- Median home value (table B25077)
Median household income drives a second, deliberately gentle multiplier — the square root of the local median divided by the national median (about $75,149). The square root damps the effect so income nudges the estimate rather than dominating it, and the result is clamped to a 0.85–1.20 range so no single area swings wildly.
Putting it together
The two multipliers combine, and the national low, average and high are each multiplied by the result:
Local price = National price × (RPP ÷ 100) × income factor
A worked example — a job with a $1,200 national average, in a metro with an RPP of 112 and a median household income of $95,000:
- Price parity:
112 ÷ 100 = 1.12 - Income factor:
√(95,000 ÷ 75,149) ≈ 1.12 - Estimate:
$1,200 × 1.12 × 1.12 ≈ $1,510
The same math is applied to the low and the high, so the whole range shifts with the area instead of only the midpoint.
What Low, Average and High mean
- Low — a small, simple, easy-access job in good conditions.
- Average — what a typical homeowner with a typical job actually pays. This is the number to plan around.
- High — a large or complicated job: difficult access, premium materials, or work that needs extra equipment or permits.
Real quotes outside this range are not necessarily wrong. They usually mean the job has a condition the estimate cannot see.
How often the data updates
BEA publishes Regional Price Parities annually and we track the latest release, with the option to pin a specific year. Census ACS 5-year estimates also update annually. City and state estimates are generated and stored ahead of time, so loading a page never triggers a live API call — pages stay fast, and the figures you see are stable rather than shifting between refreshes.
What these numbers are not
- Not a quote. Only a contractor who has seen the job can give you a price they will stand behind.
- Not a live feed. Estimates reflect the most recent published datasets, which lag the market.
- Not a substitute for multiple bids. Use these ranges to sanity-check the bids you receive and to spot an outlier.
- Not sensitive to your specific property. Access, condition, age and local ordinances can all move a real price outside the range.
Data sources
| Source | What we use it for |
|---|---|
| BEA Regional Price Parities | Metro (MARPP) and state (SARPP) price indices — the main local adjustment |
| HUD USPS ZIP Code Crosswalk | Mapping a ZIP code to its metro area (CBSA) |
| U.S. Census — American Community Survey | Population, median household income and median home value |
| Census ACS 5-Year API | The specific 5-year estimate tables listed above |
See the method in action
The quickest way to understand any of this is to use it: open a guide, enter a ZIP, and watch the range move for that area.
- Browse every cost guide — each one applies the steps above to a specific trade.
- Meet the specialists who set and review the guidance for each trade.
- About Local Estimator — who we are, what we cover, and how the site makes money.
- Report a figure that looks wrong — tell us the service and ZIP code and we will re-check the underlying data.