Google Maps Scraper ⚡ Places + Emails & Leads avatar

Google Maps Scraper ⚡ Places + Emails & Leads

Pricing

from $3.00 / 1,000 place scrapeds

Go to Apify Store
Google Maps Scraper ⚡ Places + Emails & Leads

Google Maps Scraper ⚡ Places + Emails & Leads

Scrape Google Maps businesses: name, address, phone, website, rating, reviews, opening hours and images. Plus email + social-media leads from each business's website, charged only when found. Simple input, no hidden add-ons.

Pricing

from $3.00 / 1,000 place scrapeds

Rating

0.0

(0)

Developer

Guilherme Teixeira

Guilherme Teixeira

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Google Maps Scraper — Places, Reviews & Contacts, Cheaper & Faster

🌐 README_PT.md | README_ES.md

Extract business names, addresses, phone numbers, websites, ratings, reviews, opening hours, GPS coordinates and images from Google Maps — to power lead generation, local market research, competitive analysis and location intelligence. All place details are included in the base price, and you can scrape multiple locations in a single run.

From $1.00 per 1,000 places — up to 75% cheaper than the leading alternative, with no surprise add-ons.


Why use this instead of alternatives?

  • Drastically cheaper — $1.00/1K places vs $2.10–$4.00/1K on the market leader. Reviews $0.30/1K, images $0.30/1K.
  • No paid add-ons — opening hours, additionalInfo, ratings distribution and full address parsing are included in the base price. The leading competitor charges an extra $2.00/1K for "additional place details".
  • Multiple locations per run — pass several locations separated by || and the actor processes them all with automatic cross-location deduplication. No separate "orchestrator" actor needed.
  • Cleaner output — parsed address fields (street, city, state, postalCode, countryCode), prices as numbers, ISO 8601 timestamps, no duplicate place IDs.
  • 98%+ success rate — residential proxies, stealth browser, humanized delays and exponential-backoff retries.
  • Multilingual docs (EN / PT / ES) — no other Google Maps scraper does this.
  • AI-agent ready — available via the Apify MCP protocol for Claude, GPT and other agents.

Input

ParameterTypeRequiredDescriptionDefault
searchStringsArrayarrayConditionallySearch terms like restaurant, dentist, hotel. Combined with every location.["restaurant"]
locationQuerystringNoLocation(s) to search. Multiple allowed, separated by ||.New York, USA
maxCrawledPlacesPerSearchintegerNoMax places per search term per location.100
languagestringNoResults language (en, pt-BR, es, …).en
maxReviewsintegerNoReviews per place. 0 = none, 99999 = all. Charged $0.30/1K.0
reviewsSortstringNonewest, mostRelevant, highestRanking, lowestRanking.newest
reviewsStartDatestringNoOnly reviews after this date (YYYY-MM-DD or 3 months).
maxImagesintegerNoImages per place. Charged $0.30/1K.0
skipClosedPlacesbooleanNoSkip temporarily/permanently closed places.false
categoryFilterWordsarrayNoOnly include matching categories.
placeMinimumStarsnumberNoMinimum average rating (0–5).
restrictToSearchedCitybooleanNoKeep only places in the searched city (drops nearby towns Google mixes in).false
startUrlsarrayNoDirect Google Maps place/search URLs.
placeIdsarrayNoGoogle Place IDs (ChIJ…).
countryCode / city / state / postalCodestringNoStructured geolocation.
customGeolocationobjectNoGeoJSON Point (with radiusKm), Polygon or MultiPolygon.
scrapeReviewsPersonalDatabooleanNoInclude reviewer name/URL/photo (⚠️ GDPR).true
maxConcurrencyintegerNoParallel browsers (keep 3–5).4
proxyConfigurationobjectNoResidential proxies required.Residential

You must provide at least one of: searchStringsArray (+ a location), startUrls, or placeIds.

Example input

{
"searchStringsArray": ["coffee shop"],
"locationQuery": "São Paulo, Brasil || Rio de Janeiro, Brasil",
"maxCrawledPlacesPerSearch": 50,
"language": "pt-BR",
"maxReviews": 10,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Output example

Real-world example (a restaurant in São Paulo):

{
"title": "A Casa do Porco",
"categoryName": "Restaurant",
"categories": ["Restaurant"],
"placeId": "ChIJi5am_jZYzpQRexample123",
"cid": "10683223470891234567",
"fid": "0x94ce5836fea6968b:0x943f...",
"url": "https://www.google.com/maps/place/A+Casa+do+Porco/@-23.5473,-46.6395,17z",
"address": "R. Araújo, 124 - República, São Paulo - SP, 01220-020, Brazil",
"street": "R. Araújo, 124",
"neighborhood": "República",
"city": "São Paulo",
"state": "SP",
"postalCode": "01220-020",
"countryCode": "BR",
"location": { "lat": -23.5473, "lng": -46.6395 },
"phone": "+55 11 3258-2578",
"phoneUnformatted": "+551132582578",
"website": "https://acasadoporco.com.br",
"totalScore": 4.7,
"reviewsCount": 28431,
"price": "$$",
"openingHours": [
{ "day": "Monday", "hours": "12:00 – 23:00" },
{ "day": "Tuesday", "hours": "12:00 – 23:00" }
],
"permanentlyClosed": false,
"temporarilyClosed": false,
"imageUrl": "https://lh5.googleusercontent.com/p/example",
"searchString": "restaurant",
"rank": 1,
"scrapedAt": "2026-07-05T12:00:00.000Z",
"source": "google_maps"
}

Cost estimate

Base price: $1.00 / 1,000 places · Reviews $0.30 / 1,000 · Images $0.30 / 1,000.

PlacesEstimated costTime
100~$0.10~1–2 min
1,000~$1.00~10 min
10,000~$10.00~1–2 h
50,000~$50.00~5–8 h

Reviews and images are only charged when you set maxReviews > 0 or maxImages > 0.

Price comparison vs Compass (compass/crawler-google-places)

WhatThis actorCompass
Place scraped$1.00 / 1K$1.50–$4.00 / 1K
Review$0.30 / 1K$0.50 / 1K
Image$0.30 / 1K$0.50 / 1K
Additional place detailsIncluded+$2.00 / 1K
Filter appliedIncluded+$1.00 / 1K
Multiple locations per runYesRequires separate orchestrator

Integrations

This actor works with:

  • n8n / Make / Zapier — schedule runs and pipe results to Google Sheets, Slack, a CRM or email.
  • AI Agents — available via Apify MCP for Claude, GPT and other AI agents (agentic payments enabled).
  • API — call directly through the Apify API for custom workflows and dashboards.
  • Results map — every run saves an interactive results-map.html in the Key-Value Store.

FAQ

How does it work? It drives a real (stealth) Chromium browser through Google Maps: it geocodes your locations, splits large areas into a search grid to beat Google's ~120-results-per-search ceiling, scrolls the results feed, then opens each place to extract full details.

How is this different from the Google Places API? The official API is metered, rate-limited, requires billing setup and hides many fields behind extra SKUs. This actor needs no Google API key and returns richer, ready-to-use structured data.

Can I scrape multiple cities at once? Yes — separate them with || in locationQuery (e.g. São Paulo, Brasil || Rio de Janeiro, Brasil). Results are automatically deduplicated across locations.

How fast is it? Roughly 1,000 places in ~10 minutes with residential proxies, depending on how many reviews/images you request.


Limitations

  • Residential proxies are required. Datacenter proxies are blocked by Google within minutes.
  • Google Maps caps a single search at ~120 results; the actor mitigates this with grid splitting, but very dense areas may still miss some places.
  • Some fields (e.g. kgmid, hotel/restaurant-specific blocks) are only populated when Google exposes them for that place.
  • Review timestamps come from Google as relative text (a month ago); absolute publishedAtDate is best-effort.
  • Google changes its DOM frequently. Selectors are centralized in src/constants.js and updated quickly when they break.

Changelog

  • v0.1.0 (2026-07-05): Initial release — places, reviews, images, multi-location search, grid splitting, results map, EN/PT/ES docs.