The Problem
Google Maps is great for finding local businesses, but scraping actual data is a pain. No public API for all the info you want—think emails, phone numbers, reviews, lat/lon, and business websites. Manual copy-paste? Forget it. Trying to automate with headless browsers gets you blocked fast, or you end up writing spaghetti code that breaks every time Google tweaks their UI.
What This Does
google-maps-scraper pulls business data out of Google Maps at scale. It grabs names, addresses, phone numbers, websites, ratings, review counts, lat/lon, emails, and even full reviews, all in one go. The guts live in the gmaps/ folder—place.go parses the place details, reviews.go grabs user reviews, and emailjob.go tries to dig out emails. You can run it via CLI (main.go), use the Web UI (web/static/templates/index.html), or hit the REST API (web/web.go). Storage is handled by the postgres/ or leadsdb/ providers, depending on how fancy you want to get. Docker and Kubernetes configs are ready (Dockerfile, docker-compose.dev.yaml) if you want to deploy this thing without fuss.
Real-World Use
Say you want every pizza shop in Chicago, including their email and review count. Fire up the CLI:
go run main.go --query="pizza Chicago" --output=output.json
Or spin up the web UI with Docker:
docker-compose -f docker-compose.dev.yaml up
Open the browser, drop your search, and export leads directly to LeadsDB or CSV. The REST API lets you automate this from your own scripts—just POST a job and get results back. No babysitting headless browsers or dealing with Google’s endless anti-bot changes.
The Bottom Line
If you need Google Maps data for lead gen, market research, or whatever hustle you’re running, this repo actually delivers. It’s not for tiny projects—setup can be hairy, and Google will still fight you on scale. But if you want real data and hate writing brittle scraping code, use this. If you’re just looking for a quick list, stick to SerpApi or a Chrome extension.