Back to Blog

How to Scrape Local Businesses for Leads (3 Methods)

Three practical ways to scrape local businesses for leads: a free Chrome extension you can run in two minutes, LocalProspects, and Apify or an open source scraper, with what each one really returns.

Bennett Black
Bennett Black
|10 min read
How to Scrape Local Businesses for Leads (3 Methods)

If you are trying to scrape local businesses for leads, the first thing to understand is this:

The listing is the easy part.

Getting a business name, phone, address and website from Google Maps is easy. A free Chrome extension does it in two minutes, and I'll show you how below.

The leads are on the website. That's where the emails are, where the owner's name usually is, and where you find out if the business is even worth contacting.

So the real workflow is:

  1. Search a niche and city.
  2. Export every business listing.
  3. Visit every website.
  4. Pull every email and the owner's name.
  5. Label each phone mobile or landline.
  6. Clean it and export.

This article covers three ways to do that: a free Chrome extension, LocalProspects (the one I use, because it does the listing scrape and the website crawl in one search), and Apify or an open source scraper. For each one I'll show what you really get back.

Quick comparison

MethodCostBest forWhat you getMain downside
Instant Data Scraper (Chrome extension)Free20 to 120 businessesName, rating, category, address, phone, websiteNo emails, owner names or review counts, about 120 per search
LocalProspects300 free leads, then $39/mo for 10,000Outreach-ready local lead listsListings, every email, owner names, phone type, website data, BBBNot free if you need volume
Apify or an open source scraperUsage-based or your timeDevelopers building a pipelineListings, emails depending on setupSetup, blocking, cleanup and enrichment are on you

If you only need a few leads, use the free extension.

If you want a list you can actually send to, use LocalProspects.

If you're a developer and want to own the pipeline, use Apify or the open source route.

Method 1: Free scrape with Instant Data Scraper

This is the way you can do it right now, for free.

Instant Data Scraper is a free Chrome extension with about a million users. It isn't made for Google Maps. It finds any repeating list on a page and turns it into a table, and the Maps results list is exactly that.

I ran it on "roofers in Tampa, FL" on November 13, 2026 (version 1.10.1) to write these steps.

  1. Install it from the Chrome Web Store and pin it to your toolbar.
  2. It opens a welcome tab asking you to agree to extra features. Close it. (More on that below.)
  3. Go to Google Maps and search a niche and city.
  4. Scroll the results list on the left all the way down until you see "You've reached the end of the list." If you skip this you only get the first 20 or so.
  5. Click the extension icon. A window opens with a table of the businesses. If it shows something else, click Try another table.
  6. Click CSV or XLSX.

What I got back

Result
Businesses exported122 (every result Maps showed)
TimeAbout 2 minutes, mostly scrolling
Name, rating, category122 of 122
Phone122 of 122
Website120 of 122
Review countNot included
EmailsNot included
Owner namesNot included
Mobile or landlineNot included

For a free tool, that's a good listing export.

The file needs cleanup first. It has 17 columns, and they're named after Google's code, not what's in them:

Column in the exportWhat it is
xxVWCeBusiness name
MW4etdRating
W4EfsdCategory
UsdlKPhone
lcr4fd hrefWebsite
hfpxzc hrefLink to the Google Maps listing

Rename those and delete the rest, which are icons, dots and button labels. The street address lands in one of two columns depending on the row, so merge those two. (Google changes these names now and then, so match them by what's in the column.)

About that welcome tab

The current version of the extension asks you to turn on "presets," "search badges" and an "AI Work Profile." Its own consent text says those features collect the sites you visit, your searches, the ads you click and the prompts you type into AI tools, and that the data can be shared with third parties.

You don't need any of it to scrape. In my test the export worked without agreeing to anything. If you already agreed, there's an "Opt out of data collection" switch in the extension's settings, and the extension says CSV and XLSX export keep working after you opt out.

Getting more than 120 and adding emails

Google Maps stops at about 120 results per search. To cover a metro area, search the suburbs or zip codes one at a time ("roofers in Brandon," "roofers in Riverview," "roofers 33511"), export each, stack the files and remove duplicates by phone number.

Emails are the manual part:

  1. Open each website.
  2. Check the footer, Contact and About pages for an email.
  3. Look for the owner's name on the About page.
  4. Paste both into your sheet.

That's one to two minutes per business.

When the free method makes sense

Use it to test a niche or build a calling list of 20 to 120. If you're only going to phone people, the free export may be all you need.

Where it breaks:

  • about 120 results per search
  • no emails or owner names, so you visit every website by hand
  • no review counts, so you can't sort by how established a business is
  • you don't know which phones are mobile
  • the column names can change when Google updates its page

Good for a test. Not for a weekly pipeline.

Method 2: Use LocalProspects

This is the method I use when I want leads I can actually contact.

LocalProspects starts the same way: search a niche and city from Google Maps. Searches go up to 700 businesses deep, well past the 120 you can scroll in Maps.

Then it does the part that takes all day. It visits every website and returns, for each business:

  • business name, category, address and Google Maps data
  • rating, review count, Maps rank and claimed status
  • every email found on the homepage and up to 4 more pages, not just the first one
  • owner name when found, from the website, BBB and other public pages
  • every phone labeled mobile or landline
  • website status: live, no website, down, parked, SSL error
  • website builder and tech: WordPress, Wix, Squarespace, blog, chat widget, ad pixel
  • social profiles and BBB rating
  • services and website text for personalizing

Junk emails (template placeholders, image filenames, developer addresses) are filtered out before you see them.

What you get back

We checked 200,000 businesses scraped through LocalProspects in the 30 days before November 13, 2026, and 9,800 US businesses for website details:

FieldHow often it's available
Website on the Google listing74% (US)
Listed website actually loads89% of listed sites (US)
At least one email53% of all listings
At least one email, when the website loaded75%

So no method finds an email for every business. About half don't have one you can reach, mostly because they have no website or a dead one.

That's normal. Use phone for the rest. And if you sell web design, the businesses with no website are your leads. (See how to find web design leads.)

Then you filter. "Has email," "Has mobile," "Has owner name," "No or broken website," "Under 10 reviews." Export to CSV, or pull it through the API into your own tool or an AI agent like Claude Code.

Why this is better than a raw scrape

The free export gives you a row like this (made-up example):

namephonewebsite
Example Plumbing Co.(619) 555-0142exampleplumbing.com

LocalProspects gives you this for the same business:

nameowneremailphonephone typereviewswebsite
Example Plumbing Co.Jane Doejane@exampleplumbing.com(619) 555-0142mobile86live, WordPress, no blog

The first one is a starting point. The second one is a lead.

It costs $39 a month for 10,000 leads with emails, owner names and phone types included. No add-ons. New accounts get 300 free leads, no card needed.

Method 3: Use Apify or an open source scraper

This is the technical option.

You have three ways to get listings:

  • Apify. Google Maps scraper actors you run in the cloud and pay for by usage.
  • gosom/google-maps-scraper. A free, open source scraper you run yourself with Docker. It has a web interface, and an -email flag that visits each business website to look for addresses (slower, since it has to load every site).
  • The Google Places API plus your own code. Each text search returns at most 60 results.

Then the rest of the pipeline is yours:

  1. Split big cities by zip code and dedupe by place ID or phone.
  2. Crawl each website for emails.
  3. Filter out junk emails.
  4. Add owner names with another tool.
  5. Add phone type with another tool.
  6. Clean and export.

If you write the email crawl yourself in Python, it looks something like this:

import re, requests
from bs4 import BeautifulSoup

EMAIL = re.compile(r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}")

def find_emails(site):
    emails = set()
    for path in ["", "/contact", "/contact-us", "/about"]:
        try:
            html = requests.get(site.rstrip("/") + path, timeout=10).text
        except requests.RequestException:
            continue
        soup = BeautifulSoup(html, "html.parser")
        for a in soup.select('a[href^="mailto:"]'):
            emails.add(a["href"][7:].split("?")[0].lower())
        emails.update(e.lower() for e in EMAIL.findall(soup.get_text(" ")))
    return [e for e in emails if not e.endswith((".png", ".jpg", ".webp"))]

That's the easy 80%.

The other 20% is where the time goes: sites that need JavaScript, Cloudflare blocks, user@domain.com placeholders from templates, owner names that only appear in a paragraph on the About page, and keeping it all running when sites change.

If you want to build a custom system, this is the right call. If your goal is "I need a lead list today," it's a lot of extra work. We compared the total cost in Google Maps scraper cost per 1,000 leads.

How to choose the right method

Use the free extension when:

  • you're testing a niche
  • you need 120 leads or fewer
  • you're calling, not emailing

Use LocalProspects when:

  • you need hundreds or thousands of local leads
  • you want every email, not just the first one
  • you want owner names
  • you want mobile vs landline for calling
  • you want review counts and website data to filter and personalize
  • you want a CSV you can send to the same day

Use Apify or open source when:

  • you're a developer
  • you want full control of the pipeline
  • you're fine adding enrichment and cleanup yourself

A simple workflow that works

  1. Pick one niche and one city you'd actually sell to.
  2. Pull 100 businesses in LocalProspects.
  3. Check the email, owner name and mobile rates.
  4. Spot check 20 rows by hand.
  5. Filter to the leads that fit your offer.
  6. Export to your email tool or CRM.
  7. Run the next city.

Before you send, verify emails and dedupe by phone and domain. Our guide on cleaning a Google Maps lead list before cold outreach goes step by step.

One note on outreach: cold email is covered by CAN-SPAM in the US (FTC) and stricter laws in Canada, the EU and UK. Use business contact details, be honest about who you are and honor opt-outs.

Final recommendation

If you need a small list, export it free with Instant Data Scraper.

If you want local business leads with every email, owner names, phone types and website data in one list, use LocalProspects.

If you want to engineer your own system, use Apify or the open source scraper and be ready to handle the missing pieces.

Scraping the listing isn't the hard part anymore.

The hard part is turning it into someone you can actually reach, and something worth saying.

Run your first search free. Comparing tools? See the best Google Maps scrapers with emails.

Your first search is free

Search any niche across one city or many. No credit card required.

Plumber