Home services SEO

Number of roofing companies in the US: how to count them locally

Written by the Top SEO Experts TeamSiddharth Gangal, Founder & CEO at Top SEO ExpertsReviewed by Siddharth GangalLast updated 19 min read

Quick answer

No single source gives a reliable count of roofing companies in the US, because each counts something different. Census County Business Patterns counts establishments with paid employees, so roofers with no payroll are missing and multi-location firms appear more than once. We quote no figure; this post shows how to pull one for your metro.

We set out to build a dataset by metro. The Census tables wouldn’t load for us on the day we wrote this, and we don’t publish numbers we haven’t seen. That makes this a method post, and every worked number in it is hypothetical.

What did we check before writing this?

On 22 October 2026 we verified some Census pages and not others. We opened the CBP program page and the 2022 CBP dataset record.

We could not open the NAICS lookup, the Census page defining an establishment, the page for businesses with no payroll or the API variable list. Wherever one of those matters below, the text says “confirm” and stops there.

Why is there no single count of roofing companies?

Because “company” can mean a legal entity, a physical location, a licensed contractor or any business that has ever taken a roofing job. Each definition gives a different total, and public data sets pick different ones.

Four definitions turn up in practice, and each gives a different total for the same town. The table lays them out.

Definition Who counts it What to watch
Establishments with paid employees Census County Business Patterns Crews with no payroll are missing
Businesses with no paid employees, such as a one-person crew Census, in a separate series Check that series’ scope before you rely on it
Licensed contractors A state board Rules and counts differ state by state
Business listings on maps and directories Maps and directory sites Duplicates, closed firms and lead-gen brands

A commercial site that publishes a national roofing number should say which of these it used. If it doesn’t, don’t quote it.

Watch out A count with no definition attached is not a fact you can use. Ask who counted, and what they counted, before you quote any number.

How large can the gap between definitions be?

The gap between definitions can be large. Here is a hypothetical county.

Example Take a hypothetical county where CBP shows 40 roofing establishments. If 6 of the firms run two yards each, those 6 firms account for 12 of the 40 rows. So there are 34 firms (40 - 12 + 6), not 40.

Now add 15 one-person crews with no payroll, which CBP leaves out. The same county then has 49 operators. One market, two honest answers, which is why the definition has to travel with the number.

Hypothetical county: three honest countsMade-up numbers from the example above. The count changes with the definition.

Source: Hypothetical example

View the data as a table
ItemValue
CBP establishments40
Firms after merging yards34
Operators including no-payroll crews49

Where should you start?

Our view The best starting point is the Census Bureau. The method is public, the definitions are documented and the data is free to reuse.

The Census API record we opened lists CC0 1.0, the public domain dedication, as its license (accessed 22 October 2026).

What does the Census Bureau actually count?

County Business Patterns (CBP) counts establishments with paid employees, by industry and by place. The Census Bureau’s program page describes it as an annual series.

It reports establishment counts, employment, first-quarter payroll and annual payroll. Employment is measured for the week that includes March 12.

What should you know about any CBP count?

That description tells you three things about any count you pull from it, and each one changes how you should read the number.

Three things every CBP count tells youEach one changes how you should read the number.
  • It is a snapshotA roofer that opened after the March reference week may not appear in that year's count.
  • It skips no-payroll operatorsA solo roofer working with subcontractors on a per-job basis may never appear.
  • It counts locationsA firm with three yards is three rows.

Put plainly, a CBP count answers one narrow question. It tells you how many locations with paid employees were reported for one industry, one place and one year. It does not tell you how many roofers work in a town.

Definition Under Census definitions, an establishment is a single physical location. Confirm the definition in the Census documentation before you cite it.

Which year does the data cover?

On the date we checked, the program page said the most recent data was for 2023. The API record we opened, 2022 County Business Patterns, was the 2022 vintage, last modified 28 February 2024. Always state the vintage you used.

Can you split plumbing and HVAC companies?

Usually not cleanly. As we understand the NAICS industry system, roofing contractors have their own six-digit code (238160), while plumbing, heating and air-conditioning contractors share one (238220). That means a “plumbing companies by state” figure from official data is really a plumbing plus HVAC figure.

Verify both codes on the Census NAICS lookup before you query anything. Confirm them for your trade and year, because NAICS revisions can change categories.

What follows from the shared code?

Three consequences follow from the shared code, and they are our view and not Census guidance:

  • “How many plumbing companies are there” and “how many HVAC companies by state” will often return the same official number. If a site gives you two different totals, find out how it split them.
  • For a plumber or HVAC contractor deciding where to compete, the shared code is still useful as an upper bound for the combined local market.
  • For a roofer the code is a better fit, though it may include some roofing-adjacent work. Read the code’s description.

Our industry pages for roofing, plumbing and HVAC cover each trade’s SEO. This post only covers the counting.

How do you pull the count for your own metro?

Pull establishment counts for your trade’s NAICS code at the geography you serve. Record the vintage, and then adjust for how Google actually shows local results. The output is one row per place.

This is the method we’d follow, in this order, to get from a trade to a number you can defend.

From a trade to a number you can defendSix steps, in order.
  1. Fix the trade and codeRoofing is 238160, and plumbing and HVAC are 238220. Confirm both on the Census NAICS lookup.
  2. Choose the geographyMatch how people search. Counties are safer than metros for a suburb ring, because you can add them up yourself.
  3. Query CBPUse the Census API pattern below. Confirm the variable names on the dataset's variables page before you rely on them.
  4. Record the vintageNote the vintage and the date you pulled it.
  5. Compute densityPull residents from Census population estimates and compute establishments per 100,000 residents.
  6. Save it in a sheetUse the columns shown below.

Each step answers one small question, such as which trade, which places and which year. Together, the answers give you a row you can defend.

What does the Census API line look like?

The Census API’s pattern looks like the line below.

https://api.census.gov/data/2022/cbp?get=NAICS2017_LABEL,ESTAB,EMP&for=county:*&in=state:04&NAICS2017=238160&key=YOUR_CENSUS_API_KEY

The line is a pattern, not a verified result. Read it in five parts.

The path picks the 2022 dataset, and the get list names the fields. The for and in parts pick the places, the NAICS2017 part picks the trade code, and the key part holds your Census API key.

What about the API key and the fields?

The Census API needs a free key. You request one on the Census developers site. Without a key, the call returns a Missing Key error.

ESTAB and EMP are the establishment and employment fields we expect. Check the geography list for metro-area support, and if your metro isn’t offered, sum its counties.

How should you set up the sheet?

Set the sheet up with these columns, one row per place and trade, so every number carries its own context:

place, state, trade, naics_code, vintage, pulled_on, establishments, employment, residents, per_100k_residents, notes

Keep “notes” for anything odd: a county where a few large firms report from one headquarters, or a cell the Census suppressed or flagged.

What does one finished row look like?

Here is a hypothetical example. A roofer serves two counties.

The roofer pulls CBP for both, adds them up, notes the 2022 vintage, and saves the row with the date. That one row is the whole output.

What should you check before quoting any count?

Five things, in this order: who counted, what they counted, which year, which place and which industry code. If a source can’t answer all five, treat its number as a rough guide at best and say so when you use it.

Quick check Can the source tell you who counted, what, which year, which place and which industry code? If not, do not quote the number.

Five checks before you quote a countAsk every source these five questions.
  • Who countedA government program, a licensing board, a market-research firm or a directory.
  • What they countedEstablishments, firms, licenses or listings, with or without payroll.
  • Which yearFor CBP, the vintage and the March reference week.
  • Which placeNation, state, county or metro, and how the metro was drawn.
  • Which industry codeRoofing alone, or a shared plumbing and HVAC code.

Write the answers in the sheet’s notes column. Six months from now, the notes are what let you trust or discard the row.

Turn local search into local demand.

Not sure where to start? Get a plan for your own business.

Get Your Organic Growth Plan

How do you turn a count into SEO difficulty?

A count alone does not measure difficulty. It tells you how crowded the market is, not how many businesses compete for the search you want. Use density to compare markets, then check the real results page for the few firms that matter.

Why does location change who competes?

Google’s documentation on how search works says relevance can be influenced by the user’s location, language and device. Its example is that “bicycle repair shops” returns different results in Paris than in Hong Kong.

Apply that to roofing: a homeowner in one suburb may see a different set of roofers from a homeowner across the metro. Our post on proximity and the map pack goes further.

How do you work out density?

So the metro total overstates your competition and the nearby count understates it. We use density as a first filter.

To find density, divide establishments by residents, then multiply by 100,000. That puts big and small metros on one scale.

  • Hypothetical Metro A: 600 roofing establishments and 1,200,000 residents. 600 / 1,200,000 x 100,000 = 50 per 100,000 residents.
  • Hypothetical Metro B: 150 establishments and 500,000 residents. 150 / 500,000 x 100,000 = 30 per 100,000 residents.
Hypothetical metro Establishments Residents Per 100,000 residents
Metro A 600 1,200,000 50
Metro B 150 500,000 30
Hypothetical roofing establishments per 100,000 residentsInvented numbers for two made-up metros. They show the math, not real markets.

Source: Hypothetical example

View the data as a table
ItemValue
Hypothetical Metro A50
Hypothetical Metro B30

On those invented numbers, Metro A is about 1.7 times as crowded per resident (50 / 30 = 1.67). That is a prompt to look closer, not a verdict.

Key takeaway In plain words, 50 per 100,000 is more crowded than 30 per 100,000. But crowded does not mean harder for you, because only the firms that show up in your searches decide that.

A metro with few firms can still be hard if three of them have strong profiles and thousands of reviews.

Next, look at the real results. Search the way a customer does, from the places you serve, and record who appears. Our competitor analysis guide shows how, and the keyword difficulty checker gives a quick read on the web results side.

What does a manual competitor census add?

It replaces a count of everyone with a list of the firms that show up for your searches. Ten to twenty names, checked properly, tell you more about difficulty than a county total of several hundred.

The process below is ours and not a standard, and it takes an afternoon for one metro.

Step What to do
Pick terms Pick five to ten search terms, including the head term and two or three problem-led queries
Pick locations Pick three to five search locations across your service area
Record results For each, record the businesses in the map results and the top organic results
Note signals Note review count, whether the site has a dedicated page for the service, and whether the page names the city
Count firms Count how many distinct firms appear across all searches

To start, write down the five to ten search terms first. Then run them from each of the three to five locations. Record every firm you see, and count the distinct names at the end.

What does the sheet look like?

A hypothetical set of rows from that sheet looks like this, with invented firms and numbers:

term, location, firm, in_map_results, organic_rank, review_count, has_service_page, names_city
roof repair, north suburb, Firm A, yes, 2, 410, yes, yes
roof repair, north suburb, Firm B, yes, none, 95, no, no
roof replacement, downtown, Firm A, yes, 1, 410, yes, yes

Firm names and numbers are invented. In these hypothetical rows, the first firm shows up in the map results for both searches and has 410 reviews. The second firm has 95 reviews and no service page.

Who is your real competitor set?

A real sheet will show that the same few firms recur across searches. That recurring group is your actual competitor set, and it is usually far smaller than any establishment count.

Our local SEO checker will check your own listing and site against that set. For the broader plan, see our local SEO guide.

What decisions can the numbers support?

They can support market selection and sequencing, not forecasts. Use them to choose where to start, which service to lead with and how much patience to budget.

These rules are our view, and the thresholds are invented placeholders you should replace with your own.

If this is true Then do this
Density is high and your site is new Start with the services and suburbs where you are closest, not the whole metro
Density is low and a few strong firms hold the map results The market may be less crowded but still hard; judge by the real competitor set
Your recurring competitor list is under about ten firms Name them and compare pages one by one; over about thirty, group them by strength
Two markets look similar Choose the one where a job is worth more; our lead value math post shows how to compute that
The budget is fixed Compare the cost of a market against the lead value before you commit; see our home-services marketing budget post

None of these rules is a forecast of leads. They only help you decide where to start and what to compare next.

For the overall plan, our SEO strategy for home services post ties it together. For trade-specific comparisons with paid ads, see roofing leads versus SEO, plumbing leads versus SEO and HVAC leads versus SEO.

Watch out Google is also clear that nothing guarantees a result. Its SEO starter guide says there are “no secrets here that’ll automatically rank your site first in Google” and that some changes take hours while others take several months. A low competitor count does not change that.

How should you define your service area first?

Write it down before you count anything, because the answer to “how many competitors” is only meaningful for a defined set of places. A roofer who serves forty ZIP codes has a different market from one who serves eight.

Use a list of cities or counties, not a radius in your head. Then check your own data.

What can Search Console tell you?

Google’s Search Console performance report shows clicks and impressions for your site by query and page. It will show which places and services you already attract.

How should the site state its areas?

On your own site, state the places you serve in plain text on the service pages. Schema.org’s Service type offers an areaServed property for regions where a service is available, which you can add alongside the visible text. It supplements the page and does not replace it.

If results are weak where you think you serve, competitors may not be the cause at all. Our case studies page lists what we can publish about results, and none is a home-services case yet. Weigh anyone’s local claims, ours included, with how to evaluate SEO case studies.

What does this data not show?

The counts do not show how hard it is to rank, how many calls a market produces, or how many roofers are real operators. They show how many establishments report payroll in a year, and nothing more.

These are the limits, stated plainly, on what any count on this page can tell you:

  • We have no pulled dataset. The Census tables weren’t retrievable for us on 22 October 2026, so this page has no downloadable file and no national or per-metro figure. The method above is how to produce one.
  • CBP excludes establishments with no paid employees, so very small operators are undercounted.
  • Establishments are not companies. A franchise or multi-yard firm appears more than once.
  • A single NAICS code for plumbing and HVAC cannot answer a plumbing-only question.
  • The data is a March snapshot for one year and lags current conditions.
  • We have not tested whether establishment density predicts ranking difficulty. That link is our hypothesis, not a finding.
  • Commercial counts such as those from market-research sites use their own definitions, and we have not verified them.

Key takeaway Keep these limits next to any number you publish.

If you build the sheet above, publish its method, vintage and caveats with the numbers. That is the standard we hold any competitor study to, including ours.

Frequently asked questions

How many roofing companies are there in the US?

It depends on the definition, and the Census Bureau’s County Business Patterns counts establishments with paid employees. Roofers with no payroll are outside it, and multi-location firms count more than once. We do not quote a single figure here, so pull the current NAICS roofing contractor count from Census and say which definition you used.

How many plumbing companies are there?

There is no clean plumbing-only count in most official industry data, because plumbing, heating and air-conditioning contractors share one NAICS industry as we understand it. Treat any plumbing-only total as an estimate, check how its publisher split the category, and look at your own metro instead of the national number.

Where can I find the number of HVAC companies by state?

Start with the Census Bureau’s County Business Patterns, which publishes establishment counts by industry and by geography. Remember it covers establishments with paid employees, not every business. State licensing boards sometimes publish contractor license counts, which measure something different, so label which one you use.

Does a higher number of competitors mean harder local SEO?

Not by itself, since few of the businesses in a metro will compete for the same search, and Google says location influences results. A high count can signal crowded demand. But the difficulty you face depends on the handful of nearby firms that already show up, their reviews and their pages.

How often does the Census update business counts?

County Business Patterns is an annual series. On 22 October 2026 the program page listed 2023 as its most recent data, and the API record we opened was the 2022 vintage. Employment is measured for the week that includes March 12, so counts describe a snapshot, not today.

Can I use these counts to forecast leads?

No. A count of businesses says how crowded a market is, not how many calls it generates or what a job is worth. Use it to compare markets, then use your own close rate and job value to model leads. Treat any result as an estimate you will check against real calls.

Next step

Before you decide how hard a market is, see where your own site stands. Run your listing and pages through our local SEO checker, then Get Your Organic Growth Plan.

Sources

Turn local search into local demand.

Not sure where to start? Get a plan for your own business.

Get Your Organic Growth Plan

SEO · Content · Local · Web Design

Turn local search into local demand.

We'll look at your business and search landscape and show you where to start.