Google Maps Extractor - Fast Business Data & Leads
Pricing
Pay per usage
Google Maps Extractor - Fast Business Data & Leads
Extract Google Maps business data at scale: names, categories, addresses, coordinates, phones, websites, opening hours, ratings and review counts. Business data only, no review texts or photo lists, so it runs far faster and cheaper than browser-based extractors. Export to CSV, Excel, JSON.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Andrew Babo
Maintained by CommunityActor stats
0
Bookmarked
449
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Extract Google Maps business listings at scale — business data only. No review texts, no photo galleries, no popular-times histograms: that is exactly why this actor is several times faster and cheaper than browser-based extractors.
Need review bodies, photos and popular times? Use the heavy sibling, Google Maps Scraper.
Proxies (important)
Run with Apify Proxy + RESIDENTIAL; it is the default in the input form. Google blocks
datacenter IPs within minutes and the run then returns nothing. If the residential group is not
available on your plan, the actor automatically falls back to the default Apify proxy and flags
proxyDegraded in the run summary.
Empty results are not failures
If nothing matches (rare keyword, empty area) the run succeeds with an empty dataset and the
run summary carries zeroResultReason (NO_RESULTS, NO_RESULTS_IN_AREA, ALL_BLOCKED,
UPSTREAM_TEMPORARY) plus a human-readable zeroResultMessage. Set failOnZeroResults: true
if you prefer the run to fail instead.
What you get per place
title, categoryName, categories, address, street, neighborhood, city, postalCode,
state, countryCode, countryName, location (lat/lng), plusCode, totalScore,
reviewsCount, openingHours, permanentlyClosed, temporarilyClosed, phone,
phoneUnformatted, website, imageUrl, placeId, fid, cid, url, rank,
isAdvertisement, searchString.
How it works
- No browser on the main path. Google Maps' own JSON endpoints are called directly, so a place costs a fraction of a second instead of several seconds of page rendering.
- Breaks the ~120-results-per-viewport limit by splitting the area into adaptive map tiles and deduplicating by place ID.
- Detail requests only when they add something. A listing record that already carries website, phone, hours and review count never triggers an extra request.
- Geo guard: results that fall outside the requested area (Google answering from the egress IP) are dropped instead of silently polluting the dataset.
Input
Minimal run:
{"searchStringsArray": ["coffee shop"],"locationQuery": "Da Nang, Vietnam","maxCrawledPlacesPerSearch": 100}
Residential proxies are strongly recommended — datacenter IPs get blocked by Google within minutes.
Benchmarks — head-to-head vs compass/google-maps-extractor
Same query, same place cap, same bounding box, run sequentially. Coverage is computed on the matched-by-place-ID intersection so result-set composition cannot flatter either side.
500 places per query:
| Query | this actor | compass | cost / 1k places (this) | cost / 1k places (compass) |
|---|---|---|---|---|
| coffee shop, Da Nang | 23.1 s | 34.9 s | $0.013 | $4.32 |
| IT services, Singapore | 29.3 s | 65.0 s | $0.015 | $4.12 |
| hotel, Bangkok | 22.5 s | 60.0 s | $0.013 | $5.00 |
| logistics, Ho Chi Minh City | 28.5 s | 52.1 s | $0.002 | $4.75 |
Field coverage is equal or better on every field measured. The consistent wins:
| Field | this actor | compass |
|---|---|---|
| postalCode | 100% | 35–100% |
| reviewsCount | 100% | 54–99% |
| plusCode | 82–98% | 0% |
| imageUrl | 97–100% | 95–99% |
Title, category, address, street, city, state, countryCode, coordinates, rating, opening hours, phone, website and Maps URL match compass exactly on the intersection.
Full tables: docs/poc-vs-compass-500.md and
docs/poc-vs-compass-100.md, produced by scripts/compare.mjs.
For AI agents (MCP-ready)
This actor is built to be called by AI agents. It works out of the box with the Apify MCP Server — add it to Claude Desktop, Cursor or any MCP client: the agent can pull business listings and leads on its own.
{"mcpServers": {"google-maps-extractor": {"url": "https://mcp.apify.com/?actors=andrew_babo/google-maps-extractor","headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }}}}
Agent skill (paste into your agent's instructions)
Use the "google-maps-extractor" tool for fast, cheap Google Maps BUSINESSDATA: names, addresses, coordinates, phone, website, rating, review counts,opening hours. It does NOT return review texts, photo galleries or populartimes — for those use "google-maps-scraper" instead.HOW TO CALL- { "searchStringsArray": ["coffee shop"], "locationQuery": "Da Nang, Vietnam","maxCrawledPlacesPerSearch": 100 }- Always keep the default residential proxy. Datacenter IPs are blocked byGoogle within minutes and the run returns nothing.- Cap "maxCrawledPlacesPerSearch" to what the user actually needs — it isthe cost driver.- Precise areas: "customGeolocation", or bbox / centerPoint + radiusMeters.OUTPUT CONTRACT- One row per place: title, categories, full address parts, location(lat/lng), totalScore, reviewsCount, openingHours, phone, website,placeId, cid, url.- An empty dataset is a valid SUCCESS: read zeroResultReason(NO_RESULTS, NO_RESULTS_IN_AREA, ALL_BLOCKED, UPSTREAM_TEMPORARY) andzeroResultMessage in the run summary and report it. ALL_BLOCKED meansretry with residential proxy, not "no businesses exist".- Never invent places, phone numbers or emails that are not in the rows.