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.
| Goal | Start here |
|---|---|
| Get leads into CSV/JSON | Command Line |
| Ask an AI coding agent to run a scrape | AI Agent Skill |
| Run a browser UI locally | Web UI |
| Automate scraping from your app | REST API |
| Run a multi-user scraping platform | SaaS Edition |
| Follow common workflows | Recipes |

If this project is useful to you, a GitHub star helps others discover it. Sponsorships help fund maintenance and new work.
This project is made possible by our amazing sponsors
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.
Find ready-made workers for public websites, run them instantly, and get structured data you can export or connect anywhere. Get free test for $3 →
Chrome extension that extracts emails, social profiles, phone numbers, reviews & more. Get 1,000 free leads →
No keywords needed. No limits. Export millions of businesses in 2 clicks. Try it free →
Fast, reliable, and scalable. Used by Fortune 500 companies. View all APIs →
Real-time Google Maps data with a simple integration. Explore the API →
Swiss quality proxies from $0.49/GB across 150+ countries, with 24/7 support and 99.9% uptime. Visit Evomi →
Extract business leads, emails, addresses, phones, reviews and more. Get 1,000 free credits →
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 →
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
The most affordable premium proxies across 195 countries & 80+ million IPs, plus a FREE plan for new users. 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!
Visit BirdProxies → | Join Discord
Mobile and residential proxies for Google Maps scraping, local SEO, lead generation, and data collection. Use code gmaps20 for 20% off. Visit Proxidize →
View all sponsors | Become a sponsor
| Completely Free & Open Source | MIT licensed, no hidden costs or usage limits |
| Multiple Interfaces | CLI, Web UI, REST API - use what fits your workflow |
| High Performance | ~120 places/minute with optimized concurrency |
| 33+ Data Points | Business details, reviews, emails, coordinates, and more |
| Production Ready | Scale from a single machine to Kubernetes clusters |
| Flexible Output | CSV, JSON, PostgreSQL, S3, LeadsDB, or custom plugins |
| Proxy Support | Built-in SOCKS5/HTTP/HTTPS proxy rotation |
Once you've collected your data, you'll need to manage, deduplicate, and work with your leads. LeadsDB is a companion tool designed exactly for this:
The scraper has built-in LeadsDB integration - just add your API key and leads flow directly into your database.
mkdir -p gmaps-output
docker run \
-v gmaps-playwright-cache:/opt \
-v "$PWD/example-queries.txt:/queries.txt:ro" \
-v "$PWD/gmaps-output:/out" \
gosom/google-maps-scraper \
-input /queries.txt \
-results /out/results.csv \
-depth 1 \
-exit-on-inactivity 3m
Useful options:
| Need | Flag |
|---|---|
| Extract emails from business websites | -email |
| Write JSON instead of CSV | -json -results /out/results.json |
| Collect extra reviews | -extra-reviews -json -results /out/results.json |
| Increase concurrency | -c 4, -c 8, or -c 16 |
| Run multiple pages per browser | -pages-per-browser 4 |
| Limit browser processes | -browser-pool-size 2 |
| Use proxies | -proxies "http://user:pass@host:port,socks5://host:port" |
-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:
docker run \
-v gmaps-playwright-cache:/opt \
-v "$PWD/example-queries.txt:/queries.txt:ro" \
gosom/google-maps-scraper \
-input /queries.txt \
-depth 1 \
-leadsdb-api-key "your-api-key" \
-exit-on-inactivity 3m
Start the web interface with a single command:
mkdir -p gmapsdata
docker run \
-v "$PWD/gmapsdata:/gmapsdata" \
-p 8080:8080 \
gosom/google-maps-scraper \
-data-folder /gmapsdata
Then open http://localhost:8080 in your browser.
Or download the binary release for your platform.
Note: Results take at least 3 minutes to appear (minimum configured runtime).
macOS Users: Docker command may not work. See MacOS Instructions.
When running the web server, a full REST API is available:
| Endpoint | Method | Description |
|---|---|---|
/api/v1/jobs |
POST | Create a new scraping job |
/api/v1/jobs |
GET | List all jobs |
/api/v1/jobs/{id} |
GET | Get job details |
/api/v1/jobs/{id} |
DELETE | Delete a job |
/api/v1/jobs/{id}/download |
GET | Download results as CSV |
Full OpenAPI 3.0.3 document
$ claude mcp add google-maps-scraper \
-- python -m otcore.mcp_server <graph>