Why Permits Are the Only Honest Record
Every other source of home repair pricing in the U.S. is downstream of someone with an interest in the number. Contractor estimates are pitched. Online cost guides are stitched together from surveys with response rates measured in single digits. Marketplace platforms publish averages weighted by who paid them for placement.
Building permits are different. A permit is a legally required filing made by a licensed contractor at the start of a residential project. The contractor declares what is being installed, who they are, and what the project is expected to cost. A municipal building department issues the permit, schedules inspections, and closes the file when the work passes. None of that is marketing. All of it is a public record.
This is the dataset HomeQuotr is built on. 5.7M+ permits across 100 U.S. metros, 6 trades, 853K+ licensed contractors, and the date range, jurisdiction, and inspection state behind every single one.
The Five Fields That Matter
A residential permit can carry dozens of fields, but five of them are load-bearing for any practical question a homeowner or buyer wants to answer.
- Trade code or work description. The first read on what kind of project this is. HVAC, roofing, electrical service, plumbing rough-in, foundation underpinning, solar PV install. Most cities use trade-specific codes (EP for electrical in Philadelphia, MP for HVAC, PP for plumbing). Some bury the trade inside a generic "alteration" or "repair" description and you have to read the narrative.
- Declared value. The dollar amount the contractor declared the project at when they filed for the permit. This is not the final invoice and it is not retail price, but it is the closest thing the dataset has to a market signal because it is filed under penalty of perjury and reused for inspection scheduling.
- Contractor license number and name. Tells you who pulled the permit and lets you cross-reference state licensing boards to confirm the license is active and unsuspended. Permits pulled by an unlicensed party (or the homeowner under a homeowner-pull rule) are a different category of record.
- Issuing jurisdiction. The municipal building department that handled the permit. Important because two adjacent towns can have very different permit fee structures, inspection cadences, and project value norms. Two HVAC jobs filed across a city line are not always the same kind of record.
- Status and inspection trail. Whether the permit is open, in inspection, finaled, expired, or revoked. A permit that never finaled is a permit on a project that did not close out cleanly. That is something you want to know if you are buying the house.
Reading Declared Value Without Being Fooled
Declared value is the field that does the most work in a pricing analysis and it is also the field that needs the most context.
First, declared value is the contractor's estimate at filing time, not the final invoice. Final invoices typically run 5 to 20 percent higher than declared value because of change orders and scope creep that happens after the permit is pulled. So the median declared value across a city is a conservative read on what people actually paid.
Second, declared value can be filed in three different ways depending on the city. Some jurisdictions require labor plus materials plus equipment. Some require materials only. Some let the contractor pick a number that satisfies the permit fee schedule and move on. HomeQuotr normalizes across these conventions per metro and flags any city where the convention is unusual.
Third, declared value has a long left tail of "$1" and "$500" filings that come from electrical-only sub-permits, sub-contractor permits filed under a parent permit, and clerical placeholder values. The HomeQuotr pipeline applies per-trade valuation caps (HVAC capped at $30K, electrical $25K, plumbing $20K, roofing $40K, foundation $50K, solar $80K) to keep statistical aggregates stable, and the methodology is published in full at the /about page.
What Trade Codes Actually Mean
Cities classify residential work in their own dialect. The good news is that the dialect is consistent within a city. The bad news is that every city has its own.
Philadelphia uses EP for electrical, MP for mechanical (HVAC), and PP for plumbing. Roofing, foundation, and solar in Philly fall under generic Residential Building (RP) permits with narrative descriptions like "Residential Alteration." Dallas separates HVAC, electrical, and plumbing each into their own permit type and has a dedicated solar PV category. New York City uses ALT-1, ALT-2, and NB classifications that group trades inside a building-wide work category.
When you pull a permit history for a property and see codes you do not recognize, the building department's public portal will translate. Most jurisdictions publish a code index. HomeQuotr also normalizes trade codes into the six-trade taxonomy (HVAC, roofing, electrical, plumbing, foundation, solar) so cross-city comparisons stay apples to apples.
What the Inspection Trail Tells You
Permits do not just authorize work. They schedule inspections that have to pass before the permit can close. The inspection trail is where you find out whether the work was actually done to code, whether it ran into trouble, and whether anyone ever signed off.
- Open or active. The work is in progress and the permit is still alive. Normal during a project.
- Inspection scheduled or in progress. An inspector is queued to come or has come. Multiple failed inspections on the trail is a flag worth a follow-up.
- Finaled or closed. The work passed all required inspections and the file is closed. This is the state you want to see on permits attached to a property you are buying.
- Expired without final. The permit timed out before the work passed inspection. Sometimes this is administrative (contractor moved on to the next job), sometimes it is the trail of a project that quietly went sideways.
- Revoked or stop-work. The city pulled the permit. This is rare and almost always means a code, safety, or licensing violation surfaced during the project.
If you are buying a house and the disclosure mentions a major recent renovation, the permit history is the source of truth. A permit that finaled cleanly is a documented, inspected job. A permit that expired without final is a question for the seller. A renovation with no permit at all is a question for your insurance company and any future buyer.
What Permits Cannot Tell You
Permits are not omniscient and it is fair to call out the limits.
They do not tell you final invoice price. They tell you declared value at filing time, which is reliably correlated with final invoice but not the same number.
They do not tell you the quality of materials installed. A roofing permit declares value, not whether the shingles are 20-year or 50-year.
They do not tell you everything that happens to a house. Cosmetic work (interior paint, fixture swaps, flooring) typically does not require a permit. Some structural work also slips through depending on the jurisdiction's threshold rules.
They do not always tell you the truth about who did the work. Permits are pulled by licensed contractors, but the actual work can be subbed out. The license on the permit is who is liable, not necessarily who held the wrench.
None of that disqualifies the dataset. It just means a permit answers some questions perfectly and other questions partially. The set of questions it answers perfectly happens to be the most expensive question a homeowner ever asks: what does this kind of work cost in my city.
How to Pull Your Own Permit History
Every U.S. municipality with online permitting (which is most of them now) publishes a public portal where you can search permits by address. The exact URL varies by city. Search for "[city name] building permit search" and the first result is almost always the official portal.
What you are looking for at minimum: every permit pulled on the address in the last 10 to 20 years, the contractor on each, the declared value, the issue date, and the final or expiration status. Print the list. Cross-reference any major work with the seller's disclosure if you are in a transaction. Cross-reference any contractor on the list with the state licensing board to confirm the license was active at the time of the pull.
For a citywide context layer (medians, percentile ranges, permit counts per trade), HomeQuotr is the fast read. For the property-specific record, the city portal is the source of truth. Use both.