Tony Wang8 min readPrivate Equity Bought 800 HVAC Companies. We Couldn't Find Almost Any of Them.
Private equity bought ~800 HVAC and plumbing firms since 2022. We mapped 30,336 listings and found almost no trace of it. Here is why.
Every consolidation post in this series has followed the same arc: pick a category, classify the domains, find the owner hiding behind multiple brand names. HVAC and plumbing break that pattern completely — not because the consolidation isn't happening, but because it's happening in a form this method was never able to see.
The most fragmented category we've measured
| Category | Sample size | Unique domains | Largest single domain |
|---|---|---|---|
| HVAC contractors | 200 | 194 | onehourheatandair.com — 3 records (1.5%) |
| Plumbers | 100 | 99 | rotorooter.com — 2 records (2.0%) |
| Pawn shops (for contrast) | 500 | 294 | firstcash.com — 97 records (19.4%) |
| Dollar stores (for contrast) | 500 | 7 | dollargeneral.com — 253 records (50.6%) |
For comparison: dollar stores resolved to 7 domains across 500 records, with three companies covering 99.6% of the sample. Pawn shops — which this series called a fragmented industry — still had FirstCash at nearly a fifth of its sample. HVAC's largest single domain appears three times out of two hundred.
Why the roll-up is invisible: two separate mechanisms
There is a hidden conglomerate here — just not the one you'd expect
The roll-up platforms making headlines (Wrench Group, Apex Service Partners, Sila Services, Champions Group, Redwood Services) are undetectable for the reasons above. But a different kind of consolidation in this same industry is real, documented, and much easier to name:
| Brand | Owner | Note |
|---|---|---|
| Mr. Rooter | Neighborly (KKR) | One of 28 Neighborly brands |
| Aire Serv | Neighborly (KKR) | 342 listings, clean query |
| One Hour Heating & Air | Neighborly (KKR) | Query contaminated by common words |
| Benjamin Franklin Plumbing | Authority Brands (Apax Partners) | Different owner; query contaminated |
| Roto-Rooter | Chemed Corporation (public, NYSE: CHE) | 120 company branches + 345 franchisees |
KKR's Neighborly holds 28 separate home-services brands. That's more banners under one owner than Learning Care Group's 11 (childcare), Inspire Brands' 6 (fast food), or Driven Brands' 4 (auto repair) — the three largest multi-banner cases this series had found before today. It just doesn't show up in a domain sample, for mechanism 2 above.
A methodological fix worth keeping: state-scoping rescues a contaminated query
| Query | Result | Verdict |
|---|---|---|
| q="Rooter", category=plumber | 2,993 | The bare generic word — the source of the contamination |
| q="Mr Rooter", category=plumber (national) | 3,200 | Barely above the bare word — untrustworthy |
| q="Roto-Rooter", category=plumber (national) | 3,005 | Also barely above the bare word — untrustworthy |
| q="Mr Rooter", category=plumber, state=Texas | 136 | Clean — 30 of 30 sampled records were genuine Mr. Rooter locations |
This is a genuinely useful addition to this series' contamination toolkit. Previously the only fixes were dropping the generic word (which worked for q="Goddard" in childcare) or falling back to domain classification (pawn shops, dollar stores). Neither works for "Mr. Rooter" — you can't drop "Rooter" without losing the brand, and domain classification fails here for mechanism 2. Narrowing the geographic scope is a third fix, and it produced a verifiable, sample-checked result where the other two couldn't.
How we did this, and the caveats
| What | Detail |
|---|---|
| Category totals | datasets_google_map_facets on category=hvac_contractor (30,336 US) and category=plumber (33,213 US) |
| Fragmentation measure | Domain classification of a 200-record HVAC sample and a 100-record plumber sample, has_website=true, sort=updated_at_desc |
| Franchise-domain fragmentation | 30-record Texas-scoped Mr. Rooter sample, websites read individually |
| Contamination checks | Bare-word queries (q="Rooter", q="Heating", q="Plumbing") within each category before trusting any brand total |
| PE roll-up figures | Industry M&A trackers and trade reporting on 2022-2026 HVAC/plumbing acquisitions |
| Ownership structures | Public reporting on KKR/Neighborly (Q1 2025), Apax/Authority Brands, and Chemed's Roto-Rooter disclosures |
Caveats worth stating plainly: the ~800-acquisition figure and the 27-platform count are externally sourced, from industry M&A trackers and trade press — not derived from this dataset, and not independently audited here. The fragmentation finding is a negative result about detectability, not a claim that HVAC and plumbing are unconsolidated — the external reporting says the opposite, and the point of this post is that our method can't see it. The 30-record Mr. Rooter Texas sample is small, chosen to demonstrate the franchisee-domain mechanism qualitatively rather than to measure it precisely. q="One Hour Heating" (18,267) and q="Benjamin Franklin Plumbing" (48,175) are both badly contaminated by common words and are not reported as brand counts anywhere in this post. And as with every study on this dataset: it's live-growing, so a re-pull months from now may show different totals.
If you want to run your own consolidation or ownership checks on this data, that's exactly what Crawlora's Google Maps business API is for — the same structured-data approach behind our childcare private-equity ownership, auto repair chain ownership, and pawn shop consolidation studies.
Query 132M+ Google Maps business listings directly
Crawlora's Google Maps dataset turns business listings into structured, queryable JSON — filter and facet by category, country, state, county, city, rating, and website status. 2,000 free credits a month, no card.
Frequently asked questions
How consolidated is the US HVAC and plumbing industry?
Externally reported figures say heavily: roughly 800 HVAC, plumbing, and electrical companies acquired by private equity since 2022 across 27 active roll-up platforms, with PE now accounting for about half of all HVAC-services deals. But none of that is detectable in Google Maps listing data — a 200-record HVAC sample turned up 194 unique website domains, and a 100-record plumber sample turned up 99.
Why can't Google Maps data detect the HVAC private-equity roll-up?
Two separate reasons. First, non-franchise PE acquirers keep the acquired company's original name AND its original website, so there's no shared domain to classify on — one step further than the funeral-home roll-ups this series detected at 15.8% via a shared corporate domain. Second, even visibly branded franchises fragment: a 30-record Texas sample of Mr. Rooter locations used roughly 7 different franchisee-owned domains alongside the corporate site.
Who owns Mr. Rooter, Aire Serv, and One Hour Heating?
All three are Neighborly brands, and KKR acquired Neighborly — the largest home-services franchisor, with 28 brands — from Harvest Partners in Q1 2025. Benjamin Franklin Plumbing has a different owner, Authority Brands, which is backed by Apax Partners. Roto-Rooter is separate again, owned by public company Chemed Corporation (NYSE: CHE).
Why do Mr. Rooter and Roto-Rooter show inflated national listing counts?
Because the bare word "Rooter" alone matches 2,993 listings within category=plumber. q="Mr Rooter" returns 3,200 nationally and q="Roto-Rooter" returns 3,005 — both barely above the generic word, meaning neither national total is trustworthy. Scoping to a single state fixes it: q="Mr Rooter" in Texas returns 136, and 30 of 30 sampled records were genuine Mr. Rooter locations.
Does state-scoping work as a general fix for contaminated brand queries?
It worked here where the two standard fixes couldn't. You can't drop "Rooter" from "Mr. Rooter" without losing the brand, and domain classification fails in this category because franchisees run their own websites. Narrowing the geographic scope shrinks the candidate pool enough that the two-word brand match dominates the single generic word — a third contamination fix worth keeping alongside dropping the generic word and domain classification.