← Blog

How to Scrape Google Maps: Extension vs Cloud vs API (2026)

2026-10-21 · 8 min read

To scrape Google Maps, you run a search (for example "dentists in Miami"), collect every listing it returns — name, address, phone, website, rating, review count — and export the result to a spreadsheet. You can do it five ways: copy by hand, use a browser extension, use a cloud scraper, call Google's Places API, or write your own Python scraper. For most people building lead lists, a no-code tool that splits the map into cells is the fastest way to get a complete list, because a single Maps search stops at about 120 results.

This guide walks through each method, what it costs in time and money, and where it breaks, so you can pick the right one before you start.

What data you can get from Google Maps

Every public business listing on Google Maps carries roughly the same set of facts. The useful ones for sales and research are:

Data On the Maps listing? Notes
Business name, category Yes Category is the main targeting lever
Full address, coordinates Yes Lets you segment by district or plot on a map
Phone number Usually Missing on some listings
Website Often Its absence is itself a sales signal for web agencies
Rating, review count Yes Quick proxy for size and activity
Opening hours, claim status Usually Unclaimed listings are a local-SEO opening
Place ID Yes (in the page data) Google's stable ID — the right key for de-duplication
Email No Has to be crawled from the business's own website
Social profiles No Also found on the website

Those last two rows matter. Any guide that promises emails "from Google Maps" is really describing a second step: visiting each listed website and extracting contact details from it. Our field reference lists all 41 fields MapScraper exports and where each one comes from.

Method 1: Copy and paste by hand

Search on Google Maps, click each result, and copy the details into a spreadsheet.

  • Good for: 10–20 businesses, a one-off check.
  • Cost: free, but slow — expect a minute or more per listing once you include the website and phone.
  • Breaks when: you need hundreds of rows, or you need it again next month.

It is worth doing once, because it shows you exactly which fields matter for your use case before you pay for anything.

Method 2: A browser extension

An extension runs inside Chrome or Edge, reads the results panel while you search, and adds each listing to a table you can download.

  1. Install the extension and sign in.
  2. Open Google Maps and search for your category and location.
  3. Start the extension; it scrolls the results list and reads each listing.
  4. Export to CSV or Excel.
  • Good for: quick lists of a few hundred rows, people who want to see the map while they work.
  • Watch out for: most extensions only read what one search shows, so they top out around 120 rows. They also depend on Google's page layout — when Google changes it, a poorly maintained extension silently returns empty fields.

Before you trust an extension, run "restaurants in Chicago" and count the rows. If you get 100–125, it is reading a single capped search. We explain the cap in detail in why Google Maps stops at 120 results.

Method 3: A cloud scraper

A cloud scraper does the same job on a server. You enter a query and a location, close the tab, and come back to a finished file.

  • Good for: large areas (whole cities or countries), recurring jobs, and anyone who doesn't want their own browser tied up.
  • What to look for:
    • Area splitting. The tool should divide the area into a grid and keep subdividing dense cells until none hits the ~120 cap. Without this, a city-wide search is incomplete no matter how long it runs.
    • De-duplication by place ID. Neighbouring cells overlap, so the same business appears several times. Matching on place ID rather than name removes duplicates without merging two branches of a chain.
    • A count before you pay. Big searches can contain thousands of businesses. You should know the number before credits are spent.
    • Billing on delivered rows, not on attempted searches.

Method 4: Google's Places API

Google sells the same underlying data through the Places API. You send a text query such as "dentists in Miami" and get back JSON.

As of today, Google's pricing page lists Text Search Pro at $32 per 1,000 calls (5,000 free calls a month) and Text Search Enterprise at $35 per 1,000 (1,000 free calls a month) at the lowest volume tier. Place Details, which you may need for extra fields, is billed separately — $17 (Pro) or $20 (Enterprise) per 1,000 calls. Which SKU you pay for depends on the fields you request.

  • Good for: developers building an app or a map feature, where you need a handful of places per user action and want an official, stable contract.
  • Breaks when: you want a full lead list. Text Search returns 20 results per page and stops at 60 per query, so covering a city means writing your own grid logic, paging, de-duplication and retry code — and paying for every call, including the empty ones. It also returns no email addresses.

If you are weighing the API seriously, the honest question is whether you want to build a scraper or use one.

Method 5: Write your own scraper in Python

Most of the top-ranking tutorials for this query teach this method: drive a real browser with Selenium or Playwright, open a Maps search URL, scroll the results feed until it stops loading, and parse each card into CSV.

A minimal version is about 50 lines. A version you can rely on is much more:

  1. Scrolling and end detection — the feed loads lazily and you must detect when it has really ended, not just stalled.
  2. Detail pages — phone, website and hours often require opening each listing, which multiplies requests.
  3. Selector maintenance — Google's class names are machine-generated and change; hard-coded selectors break without warning.
  4. Blocking — at volume you will meet CAPTCHAs and rate limits, which means proxies and pacing.
  5. The 120 cap — you still need grid splitting and place-ID de-duplication to get beyond one search.
  6. Email crawling — a separate crawler that visits each website's home, contact and about pages.
  • Good for: engineers who enjoy the problem or need a very custom pipeline.
  • Real cost: not the code, but the maintenance. Budget time every time Google changes its markup.

Which method should you use?

Method Setup time Rows per run Complete city lists Emails Ongoing upkeep
Copy by hand None Tens No Manual None
Extension (single search) Minutes ~120 No Depends on tool None for you
Cloud scraper with grid splitting Minutes Thousands Yes Depends on tool None for you
Places API Hours to days 60 per query Only if you build the grid No Medium
Own Python scraper Days Depends Only if you build the grid Only if you build it High

A simple rule: if you are a developer embedding places in a product, use the API. If you need a lead list — every plumber in a metro area with phone, website and email — use a no-code tool that splits the area, de-duplicates by place ID and crawls websites for emails.

A worked example: every dentist in a city

Here is the full workflow with a grid-splitting tool, using MapScraper as the example because it is what we know:

  1. Search "dentists" and pick the city.
  2. Pre-count. MapScraper probes the area cell by cell before writing any rows and tells you how many businesses the search contains — an exact number when no cell is capped, a range when some are. The count is free and nothing is deducted.
  3. Run it in the Chrome/Edge extension or the cloud scraper (same account, same lead balance). The area is split into a quadtree; dense neighbourhoods get small cells, suburbs get large ones.
  4. De-duplicate. Results are merged on place ID, so a business found in two overlapping cells is delivered — and charged — once.
  5. Enrich. Emails are crawled from each business's own website (home, /contact, /about). Each row also gets a digital weakness score, useful if you sell websites or SEO.
  6. Export to CSV, Excel or JSON with the fields you choose.

You are charged only for rows actually delivered: stop a 3,400-row job at row 412 and it costs 412 leads. Ready-made category pages such as dentist leads show what the output looks like for one industry.

Common mistakes

  • Trusting the first number. A list of 120 "restaurants in London" is not the restaurants in London. Always ask how the tool handles the cap.
  • De-duplicating on name. Two "Starbucks" rows are often two real stores. Use place ID.
  • Skipping the website check. A missing website is a filter, not a gap. Agencies selling web design can target exactly those businesses — see our businesses without a website playbook.
  • Ignoring data-protection rules. Business listings are public, but how you store and contact people is regulated (GDPR in the EU, KVKK in Türkiye, and similar laws elsewhere). Using the data responsibly is the user's job. This is general information, not legal advice.
  • Comparing tools on monthly price alone. Compare cost per 1,000 delivered, de-duplicated rows. Our comparisons, for example MapScraper vs Outscraper, are built around that number.

Summary

  • Scraping Google Maps means turning search results into a structured list: name, address, phone, website, rating, reviews — plus emails from each business's website.
  • Manual copying works for a few dozen rows; the Places API suits apps (Text Search tops out at 60 results per query and every call is billed); custom Python scrapers carry ongoing maintenance.
  • For complete lead lists, use a tool that splits the area into cells, de-duplicates on place ID and tells you the count before you spend.

If you want to try that on your own search, MapScraper's free plan includes 300 leads a month with emails, and the pre-count is free — no card required.

FAQ

What is the easiest way to scrape Google Maps?
A no-code tool — a browser extension or a cloud scraper. You type a search such as "plumbers in Denver", the tool collects the listings, and you download a CSV or Excel file. No code or API key is needed.
Can I scrape Google Maps with the official API?
Partly. Google's Places API returns structured data, but it pages 20 results at a time, stops at 60 per text query, and bills every request. It is good for apps, awkward for building large lead lists.
Why does my Google Maps scraper only return about 120 results?
Google Maps shows at most roughly 120 places per search. To get every business in a city, the area has to be split into smaller cells that are searched separately and then de-duplicated.
Does Google Maps show business email addresses?
No. Listings show phone, website and address, but not email. Emails come from crawling each business's own website, usually the home, contact and about pages.
Is it legal to scrape Google Maps?
Business listings are public information, but Google's terms of service and data-protection laws such as GDPR still apply to how you collect and use the data. This is general information, not legal advice.

Related