There are four ways to scrape Google Maps for local businesses: the official Places API, a no-code scraper, your own script, or skipping the scrape and buying enriched data. That’s the whole menu. Everything else you’ll read is a variation on one of those four.
I’ve run all four, for real clients, since 2020. So this tutorial gives you the steps AND the parts other guides skip: what each method costs in actual dollars, where each one breaks, and what your exported spreadsheet will really contain. Full disclosure up front: I work at CUFinder, which sells a local business database, the main alternative to scraping. Read my take with that in mind.
And if you got here by typing “how to scrap Google Maps” or “scrap data from Google Maps”, you’re in the right place. Half the internet spells it that way. Same question, same tutorial.
The gist
- Fastest no-code start: a cloud tool like Outscraper or Apify. Pay per record, results in minutes.
- Official and compliant: the Google Places API. Cheap searches, expensive details, and a hard 60-result cap per query.
- Zero budget, real skills: a GitHub project like gosom’s scraper, or Python with a headless browser.
- Need emails and industry codes at scale: skip scraping. Use an enriched local business database instead.
- The one fact that reframes everything: no Google Maps listing contains an email address. Ever.
What You Can Extract From Google Maps (and What You Can’t)
Google Maps gives you a business’s name, address, phone, website, category, rating, reviews, hours, and coordinates. It does not give you emails, owner names, or industry codes. That gap decides which method you should even consider.
Here’s why this matters so much. Every listing you see is a Google Business Profile, and profiles were built for customers finding a shop, not for sales teams building lists. So when you scrape Google Maps business listings, you’re extracting a customer-facing card. Nothing more.
In 2022, a Hamburg agency client asked me to “pull the emails from Google Maps” for 40,000 businesses. I had to break the news: there are none. Every “Google Maps email scraper” you’ve seen is really a website crawler bolted onto a Maps scrape. It visits each listing’s site and hunts for an address there, which only works when a site exists.
| Field | On a Maps listing? | What it means for your lead list |
|---|---|---|
| Business name | Yes | Reliable, but chains repeat across locations |
| Address | Yes | Scraping address data from Google Maps is the easy, reliable part |
| Phone number | Usually | About 84% of US local businesses list one; the string won’t tell you mobile vs landline |
| Website | Often | Only 57% of US local businesses have one on file |
| Category | Yes | Google’s own labels, not SIC or NAICS codes |
| Rating and review count | Yes | 45% of US businesses show zero reviews, so ranked results skew established |
| Opening hours | Usually | Useful for call timing |
| Coordinates and place ID | Yes | The place ID is your free dedupe key |
| Email address | No | Must be crawled from the website or bought enriched |
| Owner name | No | Not on any listing; needs registries or enrichment |
| Social profiles | Rarely | Occasional links, never structured |
| SIC / NAICS code | No | Classification always needs enrichment |
Coverage rates: CUFinder local business database, 18.4 million US records, September 2026. For scale context, the Census counted 8,361,342 US establishments with employees in its 2023 County Business Patterns. Maps lists far more because it includes solo operators.
The Ground Rules: ToS, Law, and Rate Limits in 60 Seconds
Can you scrape Google Maps data? Technically yes, but Google’s Terms of Service forbid it, and US law treats it as a contract issue, not a crime. Here’s the exact language, from Google’s own terms:
“No Scraping. Customer will not export, extract, or otherwise scrape Google Maps Content for use outside the Services. For example, Customer will not: (i) pre-fetch, index, store, reshare, or rehost Google Maps Content outside the services … (iii) copy and save business names, addresses, or user reviews…”
Google Maps Platform Terms of Service, Section 3.2.3(a)
In practice, enforcement looks like CAPTCHAs, IP blocks, and broken scripts, not lawsuits against small teams. Still, “against the terms” and “criminal” are different things, and the difference has real consequences for your business. I wrote a separate deep look at whether scraping Google Maps is legal, covering the case law, GDPR, and what you actually risk.
This page stays the how-to. That page owns the law. And no, none of this is legal advice; for a real decision, ask a real lawyer.
Which Method Fits You? A 60-Second Decision
Pick your method by answering five questions, because how to scrape Google Maps depends entirely on your job. I ask every client these before we touch a single tool. Two minutes here saves two weeks later.
One-off pull or recurring feed? A one-off favors a no-code run or manual work. But a monthly feed means maintenance, so budget for the API or a database subscription instead.
Do you need emails, or just pins? If the goal is to generate leads from Google Maps with real inboxes, every scraping route hits the same wall: emails must be crawled from websites. Pins, phones, and addresses? Any method works.
What volume? Under 100 rows: manual. Under 10,000: a no-code Google Maps scraper tool or the API. Beyond that, the grind of grids, dedupes, and re-runs starts to dominate your calendar.
Can you maintain code? A free Google Maps scraper from GitHub costs nothing today and an afternoon every month it lives. No developer on the team? Then that “free” is fiction.
Does compliance matter to your brand? Regulated industries and enterprise clients ask where data came from. If that question makes you sweat, use the official API or licensed data, full stop.
Answered all five? Then you already know which of the four walkthroughs below to read first. Here they are in order.
Method 1: The Official Places API (Step by Step)
The Places API is Google’s sanctioned way to query Maps data with code. It’s the only method Google approves of, so let’s start there. It’s also the method where the pricing fine print bites hardest.
Setting Up Your First Search
- Create a Google Cloud project and enable billing (a card is required even for free usage).
- Enable the Places API (New). The legacy Places API closed to new customers in March 2025, so build on New only.
- Create an API key and restrict it to the Places API.
- Send a Text Search request, such as “dentists in Austin TX”, with a field mask. A field mask is the list of fields you want back, and it decides what Google charges you.
- Page through the results: up to 20 places per page, three pages max.
That last line deserves a second read. Because it’s the wall every beginner hits.
The Two Limits That Shape Everything
First, the 60-result cap. One text query returns at most 60 places, no matter how many exist. “Dentists in Chicago” has thousands of matches, but the API hands you 60 and stops. So to scrape Google Maps local results at any scale, you split your territory into a grid of small cells and query each cell separately.
I ran that exact play for a Berlin pilot in 2024. Covering the city properly took a grid of about 400 cells, and neighboring cells returned the same businesses again and again. Dedupe on place ID or your list will lie to you.
The cleanest grid I know is the ZIP code strategy: use postal codes as your cells. They already match business density (dense downtown, sparse suburbs), so you scrape Google Maps search results ZIP by ZIP instead of guessing at rectangles. In the US, a metro’s ZIP list is public and finite, which makes progress measurable.
A note on speed: default per-minute quotas are generous for small jobs and adjustable in the Cloud console. So for most teams, the practical ceiling is cost and coverage, not the rate limit.
Second, the caching rule. Google lets you cache most place data for 30 days at most (place IDs longer). In other words, you can rent Maps data for your app, but you can’t legally warehouse it into a permanent lead database. That single clause is why “just use the API” isn’t the end of this article.
What It Really Costs: The SKU Math Nobody Shows
Google bills the API per request, through SKUs (billing categories triggered by the fields you ask for). Since March 1, 2025 there’s no more shared $200 monthly credit. Instead, each SKU tier includes free monthly calls: 10,000 for Essentials, 5,000 for Pro, and 1,000 for Enterprise tiers. Current list prices from Google’s pricing page, checked September 2026:
| SKU | Price per 1,000 requests | Free calls per month | What triggers it |
|---|---|---|---|
| Text Search Essentials (IDs only) | $1.70 | 10,000 | Place IDs only |
| Text Search Pro | $32 | 5,000 | Name, address, location, types |
| Text Search Enterprise | $35 | 1,000 | Adds phone, website, rating fields |
| Text Search Enterprise + Atmosphere | $40 | 1,000 | Adds reviews and atmosphere fields |
| Place Details Pro | $17 | 5,000 | Address-tier fields for one place |
| Place Details Enterprise | $20 | 1,000 | Phone and website for one place |
| Place Details Enterprise + Atmosphere | $25 | 1,000 | Reviews for one place |
The same 10,000 records: $17.50 one way, $180 the other
Source: CUFinder Local Business Database, 210M+ records, September 2026.
Now the worked example. Say you want 10,000 dentists with phone and website. There are two routes, and they differ by 10x:
Route A, search-side fields: request phone and website inside Text Search Enterprise. Each request returns up to 20 places → 10,000 places needs 500 pages minimum → with grid overlap and part-empty cells, call it 1,500 requests → $52.50 at list price → about $17.50 after your 1,000 free Enterprise calls.
Route B, the naive tutorial pattern: run IDs-only searches, then call Place Details Enterprise for each of the 10,000 IDs → $200 at list price → about $180 after free calls. Same data. Ten times the bill, because the field mask moved the cost from per-page to per-place.
Scale it up and the gap widens: at 100,000 businesses a month, route A runs roughly $500 while route B runs roughly $2,000. The API is genuinely cheap for small pulls. Its real constraints are the 60-cap grind and the 30-day caching rule, not the invoice.
💡 Pro Tip: Put phone and website in your Text Search field mask instead of calling Place Details per place. The whole page of 20 results bills as ONE Enterprise request, which is the cheapest legal way to bulk-pull contact fields.
Where the API Route Breaks
No emails, at any price, on any SKU. No owner names either. Add the caching cap, and the official Google Maps scraper API path works best for apps and one-off research, not for building an outreach list you keep. If you’re weighing API options beyond Google’s own, I keep a separate rundown of the best Google Maps APIs for business data, including third-party ones with different rules.
Method 2: No-Code Scrapers (Outscraper, Apify, and Friends)
That’s the official route. Now the tools that do the grid work for you. A no-code Google Maps data scraper is a cloud service: you type a category and an area, it runs the queries, and a CSV appears. Outscraper, Apify, PhantomBuster, Scrap.io, and HasData all follow the same pattern.
The Walkthrough (It’s the Same Everywhere)
- Pick your category, as specific as the tool allows (“cosmetic dentist”, not “dentist”).
- Set the area: city, ZIP list, or a drawn polygon. Smaller areas beat the 60-per-view limits underneath.
- Choose your fields: name, address, phone, website, rating, reviews.
- Toggle email enrichment if offered, knowing it crawls each listing’s website behind the scenes.
- Run the job, then dedupe the export on place ID or name plus address.
- Export to CSV or Google Sheets and spot-check 20 rows by hand before trusting any of it.
Pricing follows a per-record credit model almost everywhere: a small free tier, then payment per 1,000 places, with emails and reviews as paid add-ons. I won’t quote exact rates because they change quarterly. But budget a few dollars per thousand rows, more with add-ons stacked.
My testing routine for any new Google Maps lead scraper: run the free tier on ONE ZIP code you know personally. Then check three things: did it find the small businesses you know are there, how many duplicates slipped through, and how many of the promised emails actually verify. Ten minutes of checking tells you more than any review page.
Also, match the tool to the vertical. Restaurants and salons live almost entirely on Maps, so coverage is great. But B2B services, trades, and home-office businesses list inconsistently, and no scraper can extract what was never listed.
The Fine Print on “Email Enrichment”
Remember: emails aren’t on Maps. So when a tool to collect business leads from Google Maps promises emails, it’s crawling websites. And 43% of US local businesses have no website to crawl. That cap is structural, and no vendor can engineer around it.
One more scar from my files: in 2021 I ran a no-code job with overlapping map cells and mailed the same Hamburg dentist twice in one week. He replied. He was not thrilled. Dedupe first, always.
Which tool should you pick? That’s a different question than how to run one, so I compared the Google Maps scrapers and their alternatives honestly in a separate piece, including where each one genuinely wins.
Method 3: DIY Scripts (Python, GitHub, Headless Browsers)
Free in dollars, expensive in hours. That’s the honest summary of the do-it-yourself route to scrape data from Google Maps. But if you can code, it’s the most flexible Google Maps web scraper you’ll ever have.
The Free Stack That Actually Works
The most popular option is gosom’s google-maps-scraper on GitHub: a Go program that reads a file of queries (“plumbers in Tampa”, one per line) and writes a CSV. No Google Maps scraper Python skills needed to run it, just a terminal.
Prefer to build your own? The standard pattern is Python plus Playwright or Selenium, driving a headless browser (a real Chrome your code controls invisibly). The workflow looks like this:
- Load a Maps search URL for one query and cell.
- Scroll the results panel until no new cards load.
- Parse each card’s selectors (the page hooks your script grabs) for name, rating, category, address.
- Open each listing for phone and website.
- Visit each website and crawl for an email, if you need to scrape emails from Google Maps leads.
- Dedupe on place ID, then export to CSV or Excel.
The Honest Failure Modes
Selectors rot quietly. Google rotates its markup constantly, so the script that worked in March returns empty columns in May, usually mid-campaign. Then come CAPTCHAs and IP blocks, which push you into paid proxies. And the silent killer is duplicates across overlapping scroll sessions.
My rule of thumb after five years: budget maintenance hours, not just build hours. A DIY scraper is a pet, not furniture. It needs feeding every month you keep it alive.
🔍 Did You Know? One Google Maps text query, whether typed by a human or sent by code, surfaces only a slice of matching businesses. That's why every serious scraping setup, paid or DIY, runs a grid of small area queries instead of one big city search.
Method 4: The Manual Route (Free, Slow, Sometimes Right)
For under 100 targets, honestly, just copy and paste. Search your category, open each listing, and log name, phone, and website into a sheet. Two focused hours gets you 60 to 80 rows, and you’ll notice quality signals no scraper flags, such as a dead website or a “permanently closed” label.
My first agency job in Hamburg started exactly this way in 2019: an afternoon spent hand-logging 70 physiotherapy practices, and that tiny list closed our first two clients. Scraping locations from Google Maps by hand also teaches you the data’s quirks (duplicate listings, stale hours, closed shops) before you automate anything. Consider it training, not just collection.
It doesn’t scale, and it shouldn’t. But for a niche campaign in one town, manual beats setting up any tool. Also, Maps isn’t the only free well: I collected the best free local business data sources, from registries to Census files, in a separate guide.
What Your Scrape Will Actually Contain (Queried Data)
When you scrape Google Maps for local businesses in the US, a typical 10,000-row export yields phones for most rows, websites for about half, and findable emails for fewer than a third. Those aren’t guesses. They come from querying CUFinder’s database of 18.4 million US local business records, September 2026.
Why do database-side numbers predict scrape output? Because both draw from the same real-world businesses. If a dentist has no website, no method on this page will produce her email. Here’s the funnel:
| Stage | Rows remaining | Rate |
|---|---|---|
| Scraped US business rows | 10,000 | 100% |
| With a listed phone | ~8,350 | 83.5% of US records have one |
| With a website to crawl | ~5,710 | 57.1% have one on file |
| With a findable email | ~3,100 | 54.2% of sites yield an address; 31% overall |
| Sendable after verification | ~2,800 | Assuming a conservative 10% bounce trim |
From 10,000 scraped rows to 2,800 sendable emails
Source: CUFinder Local Business Database, 210M+ records, September 2026.
Derived from CUFinder US coverage rates, as of September 2026. My 2022 Hamburg project matched this curve almost exactly: 40,000 scraped rows, emails for barely a fifth after verification. The client had budgeted outreach for 40,000. That meeting was not fun.
Three more texture points from the same dataset, because they change how you plan:
- 45% of US listings show zero reviews. Maps ranks by prominence, so a scrape of top results skews toward established businesses and quietly misses the long tail.
- About 4% of listed US numbers are toll-free lines. That’s roughly 599,000 front desks, not decision-makers, sitting in your call list.
- A scraped phone is just a string. You can’t tell mobile from landline, which wrecks SMS campaign planning before it starts.
Scraping outside the US? The funnel gets steeper. Across our full dataset of 210 million records in 245 countries and territories, roughly 59% of local businesses list a phone, 28% have a website, and about 12% have a findable email. So a plan to extract leads from Google Maps in, say, Southeast Asia needs triple the raw rows per reachable inbox, and WhatsApp often matters more than email there anyway.
That’s also why “how do I get leads from Google Maps” is really two questions. Getting rows is a tooling problem, solved in an afternoon. Getting REACHABLE leads is a coverage problem, and coverage is set by the businesses themselves, not by your scraper.
📌 Example: Plan backwards from the funnel. If your cold email campaign needs 3,000 inboxes, don't scrape 3,000 businesses. Scrape roughly 10,000, or filter a database for email-verified records and skip the shrinkage entirely.
Cleaning, Enriching, and Staying Compliant
Raw scrape to usable list takes four passes. First, dedupe on place ID, then on name plus street as a fallback. Second, normalize phone formats so your dialer and CRM agree. Third, verify every crawled email before sending anything, because unverified scraped emails bounce hard enough to burn a domain.
Fourth, classify. Google’s categories won’t match your CRM segments, so map rows to SIC or NAICS codes if you filter by industry. This whole cleanup stage is what separates a CSV from a finished local business database, and it routinely takes longer than the scrape itself.
Compliance sits on top. For US cold email, follow the FTC’s CAN-SPAM requirements: honest subject lines, a working unsubscribe, a physical address. For EU listings, remember that a sole trader’s business data can count as personal data under GDPR, so document a lawful basis before you mail Europe.
🧠 Fun Fact: The place ID, Google's unique code for each location, is the one scraped field with no ambiguity. Two rows with one place ID are always the same business, which makes it the cheapest dedupe key you'll ever get.
When Buying the Data Beats Scraping It
Broken selectors don’t announce themselves, and neither does the true cost of a scrape. So run this math before you commit: tool or API fees, plus email crawling, plus verification, plus your hours building, deduping, and repairing. Divide by the businesses you can actually REACH, not the rows in the file. That number is your real cost per lead, and it’s usually several times the sticker price.
Scraping still wins some jobs, and I’ll defend it. In 2023 I scraped competitor review counts monthly for a client to track review velocity, and no database could have done it, because databases snapshot while scrapes track change. Custom fields, academic research, one-off market scans, zero-budget projects with coding skill: scrape away.
The courts see value in open data too, for what it’s worth:
“We agree with the district court that giving companies like LinkedIn free rein to decide, on any basis, who can collect and use data … risks the possible creation of information monopolies that would disserve the public interest.”
hiQ Labs, Inc. v. LinkedIn Corp., 31 F.4th 1180 (9th Cir. 2022)
But if your goal is recurring outreach with emails, phones you can trust, and industry filters, buying enriched data is simply cheaper per reachable business. With CUFinder’s local business database, the flow is: filter 200M+ businesses by country, state, city or postal code plus industry, SIC or NAICS code, pick the ones that fit, and export enriched records with verified emails, phones, and socials to Excel or your CRM. The free plan includes 50 credits a month, so you can test it against your own scrape. And the honest limitation: even we have verified emails for only about a third of US local businesses, because many businesses simply don’t use one. Anyone promising 100% email coverage is lying to you.
Not ready for any tool? You can also build a list of businesses in your area without scraping, using directories and public records.
FAQ: Scraping Google Maps for Local Businesses
How do I scrape Google Maps for local businesses for free?
Use a free scraper tier, a GitHub project like gosom’s, or manual copy-paste for small lists. Free routes trade money for time and maintenance. For one-off pulls under a few hundred rows, a no-code tool’s free tier is the fastest start.
Can I scrape emails from Google Maps?
No. Google Maps listings never display email addresses, so no scraper can extract them from Maps itself. Tools that deliver emails crawl each listing’s website instead, which works for roughly a third of US local businesses.
Can you scrape Google Maps without coding?
Yes. No-code cloud scrapers like Outscraper and Apify run category-plus-area jobs and export CSVs with zero code. You pay per record after a free tier, and you should still dedupe the output yourself.
How do I extract data from Google Maps to Excel?
Every method here ends in a CSV you can open in Excel or Google Sheets. No-code scrapers export directly; API and script routes write CSVs; manual collection goes straight into a sheet. Clean and dedupe before you use it.
Can I use the Google Maps API to get a list of businesses?
Yes, within limits: 60 results per text query and a 30-day cap on caching most data. So the Places API suits apps and small research pulls, not permanent lead databases. Grid queries get around the cap; the caching rule remains.
Is scraping Google Maps allowed?
Google’s Terms of Service prohibit it, but US courts treat public-data scraping as a civil matter, not a crime. The practical risks are blocks, account bans, and contract claims. The legality article linked above covers the full picture.
How many results can you scrape from Google Maps?
One query surfaces about 60 businesses; a full grid over a city can surface tens of thousands. Coverage depends on cell size and dedupe quality, not on any single search. Expect heavy overlap between neighboring cells.
Does Google Maps show business owner names?
No. Listings show the business, never the owner. Owner names come from state registries, LinkedIn, or enriched databases, so plan an enrichment step if your outreach needs a person, not a front desk.
Can ChatGPT scrape Google Maps?
Not directly. ChatGPT can’t browse and click through Maps at scale, but it can write scraper code for you. You still run that code yourself, and it inherits every limit and failure mode in this tutorial.
What is the best Google Maps scraper?
It depends on the job: Outscraper or Apify for no-code speed, GitHub scripts for zero budget, the API for compliance. Redditors in r/CRM argue this weekly, which tells you there’s no single winner. My comparison article linked above scores them honestly.
How do I scrape Google Maps reviews?
Through the API’s Enterprise + Atmosphere SKUs, or a scraper’s reviews add-on. Review scraping is one of the few jobs where scraping clearly beats a database, because you’re tracking change over time, not building a contact list.
Is there a Google Maps scraper on GitHub?
Yes, several; gosom’s google-maps-scraper is the most maintained. It gets you names, addresses, phones, and websites for free. It won’t get you emails or industry codes, because those were never on Maps.
It’s Time to Pick Your Lane
Here’s the whole tutorial in one line: one-off pins and reviews → scrape them (API, tool, or script); recurring outreach that needs emails → buy enriched data and spend your hours selling instead. Both lanes are legitimate. The mistake is drifting between them without doing the math.
You now know more about scraping Google Maps for local businesses than most people selling you tools for it. Seriously. So pick your lane this week, run a 500-row test, and check it against the funnel table above.
One last honesty check before you go. Scraping Google Maps for local businesses is a skill worth having, and now you have it. Just never confuse a full spreadsheet with a full pipeline, because only one of them pays rent.
Which method are you trying first, and what’s your vertical? Tell me in the comments. I read every one, and I’ll flag the potholes before you hit them.
References
- Google Maps Platform Terms of Service, Section 3.2.3(a). cloud.google.com/maps-platform/terms
- Google Maps Platform pricing and SKU list (checked September 2026). developers.google.com/maps/billing-and-pricing/pricing
- Places API (New) documentation. developers.google.com/maps/documentation/places/web-service
- hiQ Labs, Inc. v. LinkedIn Corp., 31 F.4th 1180 (9th Cir. 2022), opinion PDF. cdn.ca9.uscourts.gov
- FTC, CAN-SPAM Act: A Compliance Guide for Business. ftc.gov
- US Census Bureau, 2023 County Business Patterns (released June 2025). census.gov