Extract Google Maps business leads, emails, reviews, phone numbers, websites, ratings, coordinates, and more with a free open-source CLI, Web UI, REST API, and optional self-hosted platform.
Use it for lead generation, local business research, sales prospecting, data enrichment, or developer automation.
Ask an AI Agent to Get Leads
The easiest way to use Google Maps Scraper is with an AI coding agent such as Claude Code, Codex, Cursor, GitHub Copilot, or any Agent Skills-compatible tool. You describe the leads you want; the agent plans the searches, runs a small validation, starts the full local scrape, monitors it, and helps you work with the results.
Install the skill:
npx skills add gosom/google-maps-scraper
Then ask your agent in plain language:
Find dentists in Berlin and include their websites and email addresses.
The agent automatically checks for the latest skill and Docker image, then asks only for details it still needs. For larger crawls, you can provide your own proxy, continue without one, or review three randomly selected proxy sponsors. Proxy credentials are entered through a masked local terminal prompt and are never pasted into the agent chat.
Built on a fully owned premium residential proxies network infrastructure powering enterprise-grade Website Unblocker, SERP APIs, LLM scraper, ecommerce data collection, and ready-to-use datasets.
Unlock global access with consistent, high-speed connections from $0.65/GB, 90M+ real residential IPs worldwide, and traffic that never expires. Try it free →
TalorData - Fast SERP API for Google Maps and Search Data
Real-time SERP data APIs for Google Maps and search results, with structured JSON / HTML responses and 1,000 free API responses to start. Start using TalorData → | Learn more
Hey, we built BirdProxies because proxies shouldn't be complicated or overpriced. Fast residential and ISP proxies in 195+ locations, fair pricing, and real support. Try our FlappyBird game on the landing page for free data!
Mobile and residential proxies for Google Maps scraping, local SEO, lead generation, and data collection. Use code gmaps20 for 20% off. Visit Proxidize →
NodeMaven - Reliable proxies with high-quality IPs
NodeMaven provides high-quality proxies for automation, web scraping, SEO research, and social media management.
-c controls how many scrape jobs run in parallel. Higher concurrency can finish large input files faster, but it also uses more CPU/RAM and can increase blocking or failures, especially without proxies. Start with the default for a first run. For larger jobs on a capable machine, try -c 4, -c 8, or -c 16 and measure the result.
Want to skip CSV files? Send leads directly to LeadsDB:
More examples are available in Recipes. If you need proxies for larger jobs, see Proxy Sponsors.
AI Agent Skill
The AI Agent Skill turns a natural-language lead request into a guided local scraping workflow. It is designed for nontechnical users as well as developers and keeps you in control of the search scope, proxy choice, and output.
If you have not installed it yet:
npx skills add gosom/google-maps-scraper
Then just ask your agent:
Find me all dentists in Berlin with their emails
The agent will:
Noninteractively check for the latest skill and Docker image.
Infer sensible search defaults and ask only for missing essentials.
Let you use your own proxy, continue without one, or choose from three randomly selected proxy sponsors.
Collect proxy credentials through a masked local terminal prompt instead of chat.
Run a small validation scrape before the full job.
Start and monitor the Docker crawl in the background.
Present the results with options to save, filter, analyze, or export.
Proxy sponsor recommendations are clearly disclosed and shown with equal placement. Any discount or offer is displayed only when it is configured in the skill's active sponsor registry. You can always use another provider or no proxy.
Requires Docker and Node.js on macOS, Linux, or Windows through WSL. See the skill definition for details.
Installation
Using Docker (Recommended)
The published Docker image uses Playwright:
docker pull gosom/google-maps-scraper
Build from Source
Requirements: Go 1.26.5+
git clone https://github.com/gosom/google-maps-scraper.git
cd google-maps-scraper
go mod download
go build
./google-maps-scraper -input example-queries.txt -results results.csv -exit-on-inactivity 3m
First run downloads required browser libraries for Playwright.
Features
Feature
Description
33+ Data Points
Business name, address, phone, website, reviews, coordinates, and more
Email Extraction
Optional crawling of business websites for email addresses
Multiple Output Formats
CSV, JSON, PostgreSQL, S3, LeadsDB, or custom plugins
Proxy Support
SOCKS5, HTTP, HTTPS with authentication
Scalable Architecture
Single machine to Kubernetes cluster
REST API
Programmatic control for automation
Web UI
User-friendly browser interface
Fast Mode (Beta)
Quick extraction of up to 21 results per query
AWS Lambda
Serverless execution support (experimental)
Extracted Data Points
Click to expand all 36 data points
#
Field
Description
1
input_id
Internal identifier for the input query
2
link
Direct URL to the Google Maps listing
3
title
Business name
4
category
Business type (e.g., Restaurant, Hotel)
5
address
Street address
6
open_hours
Operating hours
7
popular_times
Visitor traffic patterns
8
website
Official business website
9
phone
Contact phone number
10
plus_code
Location shortcode
11
review_count
Total number of reviews
12
review_rating
Average star rating
13
reviews_per_rating
Breakdown by star rating
14
latitude
GPS latitude
15
longitude
GPS longitude
16
cid
Google's unique Customer ID
17
status
Business status (open/closed/temporary)
18
descriptions
Business description
19
reviews_link
Direct link to reviews
20
thumbnail
Thumbnail image URL
21
timezone
Business timezone
22
price_range
Price level ($, $$, $$$)
23
data_id
Internal Google Maps identifier
24
street_view_url
Street View URL
25
place_id
Google's unique place id
26
images
Associated image URLs
27
reservations
Reservation booking link
28
order_online
Online ordering link
29
menu
Menu link
30
owner
Owner-claimed status
31
complete_address
Full formatted address
32
credit_cards_accepted
Accepted credit card networks
33
about
Additional business info
34
user_reviews
Customer reviews (text, rating, timestamp)
35
user_reviews_extended
Extended reviews up to ~300 (requires -extra-reviews)
36
emails
Extracted email addresses (requires -email flag)
Custom Input IDs: Define your own IDs in the input file:
Matsuhisa Athens #!#MyCustomID
Direct Google Maps URLs: Input lines can be regular search queries or direct Google Maps URLs. Supported URL formats include:
URLs on google.com subdomains must include a scheme (http:// or https://) and a /maps path. Short maps.app.goo.gl links are also supported without a scheme.
Configuration
Command Line Options
Usage: google-maps-scraper [options]
Core Options:
-input string Path to input file with queries (one per line)
-results string Output file path (default: stdout)
-json Output JSON instead of CSV
-depth int Max scroll depth in results (default: 10)
-c int Concurrency level (default: half of CPU cores)
Email & Reviews:
-email Extract emails from business websites
-extra-reviews Collect extended reviews (up to ~300)
Location Settings:
-lang string Language code, e.g., 'de' for German (default: "en")
-geo string Coordinates for search, e.g., '37.7749,-122.4194'
-zoom int Zoom level 0-21 (default: 15)
-radius float Search radius in meters (default: 10000)
-grid-bbox string Bounding box for grid scraping, format: "minLat,minLon,maxLat,maxLon"
-grid-cell float Grid cell size in km (default: 1.0, used with -grid-bbox)
Web Server:
-web Run web server mode
-addr string Server address (default: ":8080")
-data-folder Data folder for web runner (default: "webdata")
Database:
-dsn string PostgreSQL connection string
-produce Produce seed jobs only (requires -dsn)
Proxy:
-proxies string Comma-separated proxy list
Format: protocol://user:pass@host:port
-proxies-file Path to a file containing one proxy URL per line
Export:
-leadsdb-api-key Export directly to LeadsDB (get key at getleadsdb.com)
Advanced:
-exit-on-inactivity duration Exit after inactivity (e.g., '5m')
-fast-mode Quick mode with reduced data
-debug Show browser window
-writer string Custom writer plugin (format: 'dir:pluginName')
-browser-pool-size int Number of browser processes to launch (default: 0, derived from -c and -pages-per-browser)
-pages-per-browser int Max concurrent pages per browser process (default: 1)
Notes:
-grid-bbox requires a valid zoom level (1-21)
-fast-mode cannot be used together with -grid-bbox
Run ./google-maps-scraper -h for the complete list.
Using Proxies
For larger scraping jobs, proxies help avoid rate limiting. Here's how to configure them:
-grid-bbox guides where searches are launched from, but results are not strictly clipped to the box.
For strict distance filtering, use -fast-mode with -geo + -radius (or post-filter by latitude/longitude).
Browser Page Concurrency
With the default -pages-per-browser 1, each concurrent job (-c) effectively uses its own browser process with a single page tab. This can be inefficient because browser pages can be CPU- and memory-heavy, and each browser process adds overhead.
The -pages-per-browser flag lets you run multiple page tabs inside the same browser process, reducing overhead. Leave -browser-pool-size at 0 to derive the browser count from concurrency and pages per browser, or set it explicitly to cap the number of browser processes independently of concurrency.
How the flags interact:
Flag
What it controls
-c
Total number of concurrent scrape jobs
-browser-pool-size
Number of browser processes to launch (default: 0, derived from -c and -pages-per-browser)
-pages-per-browser
Number of page tabs per browser process (default: 1)
When -pages-per-browser is greater than 1, the scraper opens multiple tabs within each browser process and routes jobs through a shared page pool. This can significantly increase job throughput on the same hardware.
Example — 8 concurrent jobs across 2 browsers with 4 tabs each: