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.