A founder pulls 900 roofers out of Google Maps on a Sunday night, loads them into a sender, and by Wednesday the domain is on a warmup timeout and the reply folder is empty. The list was not the problem. Google Maps returned exactly what it was asked for. What the founder built was a phonebook, and phonebooks do not book meetings. This piece is about what has to happen between the export and the send to turn one into the other.
Why is Google Maps underrated for B2B?
For any business that serves a physical geography, Google Maps is the closest thing to a live directory of the real economy. Every listing has a name, category, address, phone, website, hours, review count, and often a photo of the storefront. That is more first party context than most paid databases will give you for a local operator.
The problem is that a raw export from Maps is a phonebook, not a prospect list. If you email 500 roofers with the same pitch you are doing telemarketing with extra steps. What turns a phonebook into a list is signal work.
The signal-first list build
A five step framework: (1) pick a tight market, (2) pull public data from Google Maps and the target websites, (3) apply buying signals so only businesses with a reason to buy stay in, (4) qualify by fit against your actual delivery capacity, (5) shape outreach around the specific signal you found. Skipping step 3 is why most Maps lists never convert.
Workflow
The five-step list build
Step 01
1. Pick market
Vertical + geography
Step 02
2. Pull public data
Maps + website crawl
Step 03
3. Apply signals
Filter to reason-to-buy
Step 04
4. Qualify by fit
Match your capacity
Step 05
5. Shape outreach
One signal per email
Step 01
1. Pick market
Vertical + geography
Step 02
2. Pull public data
Maps + website crawl
Step 03
3. Apply signals
Filter to reason-to-buy
Step 04
4. Qualify by fit
Match your capacity
Step 05
5. Shape outreach
One signal per email
Step 1: pick a tight market
A tight market is one vertical, one geography, one size band. Not "contractors in the Midwest". Something like "residential roofing companies in Peoria, Illinois with 5 to 40 employees". Tight enough that your email can reference something specific, wide enough that there are 60 to 200 companies to work.
For this article we will use residential roofing in Peoria as the running example.
Step 2: how do you pull the public data?
Search Maps for the vertical and city. Capture: business name, category, website, phone, address, review count, average rating, hours, and the Place ID. The Place ID is the stable key you want to dedupe on later.
Enrich each site with a quick crawl
Then crawl each website for a few extra fields: services offered, service area pages, staff or team page, careers page, any mention of financing partners, and the CMS or website builder in use. Every one of those becomes a possible signal.
| Field | Source | Why it matters |
|---|---|---|
| Business name, address, phone | Public map data | Basic identity, dedupe key |
| Category and services | Public map data + site review | Fit filter |
| Review count and rating | Public map data | Proxy for company maturity |
| Careers or hiring page | Website review | Growth signal |
| Financing partners | Website footer | Ticket size signal |
| Website CMS or age | Public site review | Buying window signal |
- Field
- Business name, address, phone
- Source
- Public map data
- Why it matters
- Basic identity, dedupe key
- Field
- Category and services
- Source
- Public map data + site review
- Why it matters
- Fit filter
- Field
- Review count and rating
- Source
- Public map data
- Why it matters
- Proxy for company maturity
- Field
- Careers or hiring page
- Source
- Website review
- Why it matters
- Growth signal
- Field
- Financing partners
- Source
- Website footer
- Why it matters
- Ticket size signal
- Field
- Website CMS or age
- Source
- Public site review
- Why it matters
- Buying window signal
Step 3: how do you apply buying signals?
Signals are the reason a specific business would buy from you this quarter. For roofing in Peoria, three that work: (a) hiring for a project manager (growth stress on scheduling), (b) financing partner listed (they sell bigger tickets), (c) website last redesigned before 2020 (they are already in a refresh mindset).
Cut ruthlessly by signal
Drop everything that does not carry at least one signal. It feels wasteful and it is not. A 40 company signal list will beat a 400 company blast every time.
Step 4: do they actually fit your delivery?
Fit is about you, not them. Do you actually want to serve a five person roofer? Can your onboarding handle a shop that answers the phone by first name? If you sell software with a $12k floor, cut anything under about 15 crews. Better to have 30 qualified than 300 blurred.
Step 5: how do you shape outreach around the signal?
One email, one signal, one ask. If the signal was the hiring page, the first line names it. If it was the financing partner, the first line names that. The pitch is the same but the entry point is not. This is where the work of curating a signal list finally pays off.
Milo runs this exact loop end to end: discover the businesses that match your signal, personalize the outreach, and send it from your own inbox. How Milo works.
Ethics note
Stay on the right side of the line
Public data is fair to collect. Personal emails scraped through workarounds are not. Respect robots directives, respect the Google Maps terms of service, and never buy consumer data. If your outreach would embarrass you if the recipient forwarded it to a competitor, rewrite it.
Can I just export from public map data directly?
There is no first party export. Use the public map API within its terms, or a purpose-built tool. Manual copy-paste is legal and painful.
How large should a local list be?
For a single seller working one vertical in one metro, 60 to 200 signal-qualified accounts is the sweet spot per quarter.
Do I need emails for every contact?
No. Owner-operator businesses often respond to the general inbox. Send to info@ with the owner named in the greeting.