A data product, not a tool you have to run
HOME-SERVICES BUSINESS LISTS
If what you need is a spreadsheet of HVAC contractors in Phoenix, a list of roofing companies in Dallas, or a plumbing company list for a territory you are about to work, this page tells you exactly what arrives — column by column, including the columns that come through empty.
Most contractor databases sell you a record count and an accuracy percentage. We would rather show you the file.
by Usama Zafar, who builds and maintains PlotLeads · column contract verified 13 August 2026
The file
TWELVE COLUMNS, AND HOW FULL EACH ONE IS
Every list ships as one CSV with the same twelve columns in the same order, whichever trade or metro you asked for. The header names below are the literal strings in the file, so you can map them into a CRM once and reuse the mapping forever. The third column is the part vendors normally leave out.
| Column | What it holds | How often it is filled |
|---|---|---|
| business_name | The company name as it is published on the listing. | Every row. A listing with no name is discarded before delivery. |
| phone | The public number on the listing — usually the number that actually gets answered. | Most rows. A business with neither a phone nor a website never reaches the file. |
| A public address, where one can be found. | Nearly always empty. Read the section below before you plan around this column. | |
| website | The URL the business links from its listing. | Most rows, not all. An empty website column is itself a signal if you sell web work. |
| address | The street address as listed. | Every row. Mobile trades with no storefront read "Service-area business (no storefront listed)" rather than sitting blank. |
| city | The city the listing itself carries — not the city you typed. | Usually. On a service-area row we fall back to the metro the search was scoped to, which is the only city that row honestly belongs to. |
| state | The state on the listing, same rule as city. | Usually. |
| zip | The postal code on the listing. | Usually. Blank on service-area rows — a business covering a whole metro does not sit in one ZIP, so we never stamp one on. |
| google_maps_url | A direct link back to the listing the row came from. | Almost always. This is your audit trail: open it and check the row yourself. |
| rating | The star rating on the listing. | Wherever the business has been rated. Blank means nobody has rated it yet, not that we failed to collect it. |
| review_count | How many reviews that rating is built on. | Every row, 0 where there are none. Sorting on this is the fastest way to separate real operators from dormant listings. |
| category | The category the listing is filed under. | Almost always. Useful when a search for one trade surfaces an adjacent one. |
The file itself is plain RFC 4180 CSV: every field quoted, CRLF line endings, and a UTF-8 byte-order mark so Excel opens it correctly instead of mangling accented business names. It lands in Google Sheets, Excel, and most CRM importers without reformatting.
Worked example
THREE ROWS, INCLUDING THE AWKWARD ONES
Sample data on a vendor site is always the one perfect record. Here are three rows in the exact shape you receive: a clean storefront listing, a mobile trade with no storefront, and a young business that nobody has reviewed yet.
"business_name","phone","email","website","address","city","state","zip","google_maps_url","rating","review_count","category"
"Ridgeline Roofing & Sheet Metal","(713) 555-0142","","https://ridgelineroof.example","4410 Kirby Dr, Houston, TX 77098","Houston","TX","77098","https://maps.google.com/?cid=0000000000000000000","4.7","213","Roofing contractor"
"Bayou Comfort Air Conditioning","(281) 555-0198","","","Service-area business (no storefront listed)","Houston","TX","","https://maps.google.com/?cid=0000000000000000000","4.9","61","HVAC contractor"
"Alta Vista Plumbing Co.","","","https://altavistaplumbing.example","2201 W Holcombe Blvd, Houston, TX 77030","Houston","TX","77030","https://maps.google.com/?cid=0000000000000000000","","0","Plumber"Illustrative rows, not real companies — the numbers sit in the 555-01xx block reserved for fictional use and the domains use the reserved .example TLD. For fifty genuine rows in this format, take the free sample — no card, and it arrives as a CSV you can open before you decide anything.
The service-area row — the plumber with no storefront — is the one worth studying. Plumbers, HVAC techs and handymen frequently register with no storefront, and most exports leave the address, city and ZIP blank for them — which reads as broken data and gets the whole file distrusted. We label the row instead, carry the city and state of the metro the search was scoped to, and leave the ZIP empty rather than inventing one. The unrated row qualifies on its website alone: no phone yet, no rating, zero reviews. It is a real business and it stays, but you can see at a glance that it is not the row to dial first.
Filtered out
ROWS YOU NEVER SEE
A raw export of a category is padded with entries nobody can contact. Two filters run before delivery, and they are enforced in code rather than promised in marketing copy:
- A row must be reachable to qualify. Every delivered row carries a company name plus at least one of a phone number or a website. A listing with neither is dropped, not shipped as filler.
- Permanently closed businesses are removed. Temporarily closed ones are kept on purpose — that company still exists and may well reopen.
This is also why a list is not a fixed count. You are buying rows that survived the filters, not a number we promised in advance.
Not included
WHAT THE FILE DOES NOT CONTAIN
- No owner name, job title, or direct dial. You get the business, not a named decision-maker.
- No usable email coverage. The underlying listings do not carry an email at all. A live probe that additionally crawled each business’s own website for a published address found one for 3 of 49 businesses. Treat this as a phone-and-website list; if your play is a cold email sequence, this is the wrong product.
- No revenue, headcount, fleet size, or licence status. There are no firmographic filters to slice on, because we hold no firmographic data.
- No verification pass. Numbers are not re-dialled and websites are not tested. What a business publishes is what you get — current, but self-reported. The full set of limits is on our methodology page.
- No API, no CRM sync, no cross-search de-duplication. Two overlapping searches can return the same company twice; de-duplicating is a sort in your spreadsheet, not a feature here.
Category
BUILT ON REQUEST, NOT MAINTAINED
The established contractor-database vendors run a warehouse: many millions of business records, hundreds of firmographic attributes, a stated accuracy rate, and a rep who quotes you a count before you buy. That model is genuinely good at slicing — revenue bands, employee counts, SIC codes — and genuinely bad at small local trades, which change numbers and rebrand faster than any warehouse refreshes.
PlotLeads keeps no warehouse. There is no stored contractor database here to filter, quote a count from, or re-query later; the file is assembled from live listings at the moment you ask for it, which is why this page can be precise about columns and cannot be precise about totals. The trade is deliberate: you lose firmographic filtering and a guaranteed record count, and you gain data that has had no shelf life to go stale on. The mechanism behind that is a Google Maps pull, described on the methodology page and, if you would rather drive it yourself, on the scraper page.
Two honest caveats. If you are technical and want raw volume at the lowest possible unit cost, a general-purpose scraping API will beat us on price and you should use one. And if your buyer is a mid-market company with a LinkedIn-shaped org chart, a contact database is the better fit — we compare that case here. What is left, and what this is built for, is the person who wants a finished list of local home-services companies without becoming a data engineer to get it.
Scope
TEN TRADES, ANY US METRO
Lists are built for ten home-services trades, and the location is whatever “City, ST” you enter — you are not confined to a published set of cities. Each trade below has its own page with the market context that matters when you sell into it, and sample lists for the metros we have written up so far. The full index lives on the lead-list hub.
JUDGE THE FILE, NOT THE PITCH
You have now read the column contract, the filters, and the gaps. The only thing left is whether the rows are any good for the trade and metro you care about, and that is a question a page cannot answer. Fifty real rows will.
The sample arrives as a CSV with the company name, phone, website, address, rating, review count, and category columns filled — no card, no call.