Google Maps Scraper Pro – Reviews, Photos & Place Details avatar

Google Maps Scraper Pro – Reviews, Photos & Place Details

Pricing

from $1.20 / 1,000 scraped places

Go to Apify Store
Google Maps Scraper Pro – Reviews, Photos & Place Details

Google Maps Scraper Pro – Reviews, Photos & Place Details

Google Maps places with rating, review count, hours, categories, phone, website, GPS and cid/kgmid IDs. Add-ons billed only when used: detail page (star distribution, review topics, plus code), reviews (about 5 per place), photos, website e-mails. Standard input field names. $3.20 per 1,000 places.

Pricing

from $1.20 / 1,000 scraped places

Rating

0.0

(0)

Developer

Badr Bouargan

Badr Bouargan

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

Google Maps Scraper Pro: visual report of a real run, key figures and charts

What it does. Google Maps Scraper Pro extracts the full Google Maps record of each place — name, address, phone, website, rating, review count and star distribution, review topics, opening hours, categories, coordinates, plus code, placeId / cid / fid / kgmid — and, as add-ons, the place's reviews, photos, detail page and the e-mails and social profiles found on its website. No API key.

The problem it solves. The search list of Google Maps only gives the basics; reviews, photos and the detailed record sit on each place's own page. Pro opens that page only when you ask for it and bills it only when it is delivered, so you get rich data without paying for what you do not use.

Who it is for. Market and location analysts, local SEO and reputation agencies, hospitality and retail teams watching competitors, data teams who need stable Google identifiers, and developers who already use the standard Google Maps scraper input (searchStringsArray, locationQuery, maxCrawledPlacesPerSearch…) and want it to run unchanged.

What you get. title, categoryName, address, city, postalCode, countryCode, location, plusCode, phone, website, totalScore, reviewsCount, reviewsDistribution, reviewsTags, openingHours, additionalInfo, placeId, cid, kgmid, imageUrl (Google's main photo of the place, included with every search result, null when it has none) — and with add-ons reviews (text, stars, date, reviewer, owner response), images, email, social links. Output example below.

How to start.

  1. Open the Actor on the Store: apify.com/badr_xba/google-maps-scraper-pro — or try the ready-made task from the Actor page.
  2. Type a search term (restaurant) and a location (New York, USA); set Number of reviews or Number of images if you want them.
  3. Press Start and download JSON, CSV or Excel — reviews also come one per row in the Reviews view.

Why choose it.

  • Standard input field names: an input written for the most popular Google Maps scraper of the Store runs here as it is; options that are not available are ignored and never billed.
  • Modular pay-per-event: $3.20 per 1,000 places, and each add-on (details, reviews, images, contacts, filters) is billed only when you turn it on and only for what is delivered.
  • Per-place price 20% below the Store's leading Google Maps scraper on the Free, Starter, Scale and Business plans ($3.20 vs $4.00 per 1,000 on Free, as listed on both pricing tabs on 2026-11-07; add-ons are priced separately).
  • Past Google's limit: cities and regions are split into smaller squares; custom GeoJSON areas accepted; duplicates delivered once.
  • Honest limits: about 5 reviews per place (what Google sends with the place) — see limits.

How much it costs. $3.20 per 1,000 places on the Free plan ($2.40 Starter, $1.60 Scale, $1.20 Business). Example: 1,000 restaurants with 5 reviews each ≈ $3.20 + $1.60 (place details) + $2.00 (5,000 reviews) = $6.80 on the Free plan. Full pricing.

Which of the three Google Maps Actors should I pick?

You needPick
Lead lists with e-mails, worldwide, one flat price per place (e-mails and filters included)Google Maps Leads Scraper
Reviews, photos, star distribution, Google identifiers, GeoJSON areas, standard input namesThis Actor — Google Maps Scraper Pro
French businesses: one option sweeps 226 French cities, results in FrenchGoogle Maps Scraper France

What can it do?

  • 🎯 Generate leads: business names, phones, websites, emails and social profiles
  • 📊 Track competitors: ratings, reviews count, reviews distribution and review topics
  • 🗺️ Analyse markets: every pizzeria of a city, every dentist of a region, places with no website
  • 🔗 Scrape any input: search term + location, Google Maps URLs, place IDs, custom GeoJSON areas
  • ⭐ Reviews and images of each place (add-ons)
  • 📤 Export to JSON, CSV, Excel, XML or HTML, or use the API, webhooks, Make, Zapier, n8n and the Apify MCP server

What data does it extract?

🔗 Title, category, all categories📍 Address, street, city, state, postal code, country🌍 Coordinates, plus code
☎️ Phone (formatted and international)🌐 Website⭐ Rating (totalScore) and reviews count
📊 Reviews distribution (1–5 stars)🏷️ Review topics (reviewsTags)🕒 Opening hours, open at scrape time
🔒 Temporarily / permanently closed➕ Additional info (services, accessibility, payments…)📝 Description and owner description
🆔 placeId, cid, fid, kgmid🖼️ Main image and images💬 Reviews: text, stars, date, reviewer, owner response, photos
📧 Emails from the website👥 Facebook, Instagram, LinkedIn, X, YouTube, TikTok🛵 Order online link

How to use it in 3 steps

  1. Type one or more search terms (restaurant, dentist, hotel…) — or directly dentist in Chicago, a Google Maps link or a place ID.
  2. Type a location (New York, USA) — or use country / city / postal code, GPS coordinates or a custom GeoJSON area.
  3. Click Start, then download your data (set the number of places and the add-ons first if you want).

Tip: use distinct search terms (restaurant, bar, cafe) rather than synonyms (restaurant, restaurants): synonyms only make the run longer.

Every input you can paste

The input is tidied silently — extra spaces, duplicates, bullets, a list pasted on one line — so you can paste straight from a spreadsheet.

You pasteWhat happens
restaurant + location New York, USARestaurants in New York
dentist in Chicago, plombier à LyonThe location is read from the search term
restaurant, bar, cafe on one lineThree search terms
https://www.google.com/maps/search/pizza/@40.75,-73.98,14z"pizza" in the area shown on the map
https://www.google.com/maps/search/pizza (no coordinates)"pizza" in your Location
Place link …/maps/place/…, ?cid=…, maps.app.goo.gl/…, ?q=place_id:…That place with its details, one row
ChIJ… or place_id:ChIJ…That place with its details, one row
Location 40.7128, -74.0060 or 10001, USASearched around that point / postal code

Entries that cannot be used (non-Google link, expired short link, unknown location, malformed place ID) are skipped with a warning and listed in FAILED_INPUTS — never billed, and they never make the run fail. An empty input runs the demo search (20 restaurants in New York) instead of failing.

Input example

{
"searchStringsArray": ["restaurant"],
"locationQuery": "New York, USA",
"maxCrawledPlacesPerSearch": 50,
"language": "en",
"placeMinimumStars": "four",
"website": "withWebsite",
"scrapeContacts": true,
"maxReviews": 5
}

The input uses the same field names as the most popular Google Maps scraper of the Store, so an existing input works as it is.

Output example

Google Maps Scraper Pro: result cards from a real run

Screenshots from a real platform run.

{
"searchString": "pizza",
"rank": 2,
"title": "SIMÒ PIZZA - MIDTOWN",
"imageUrl": "https://lh3.googleusercontent.com/grass-cs/AABkmL…=w408-h306-k-no",
"categoryName": "Pizza restaurant",
"address": "…, New York, NY 10018",
"city": "New York",
"postalCode": "10018",
"countryCode": "US",
"phone": "(646) 000-0000",
"website": "https://simopizza.com/",
"totalScore": 4.7,
"reviewsCount": 610,
"reviewsDistribution": { "oneStar": 12, "twoStar": 6, "threeStar": 14, "fourStar": 60, "fiveStar": 518 },
"plusCode": "Q26C+7F New York",
"placeId": "ChIJ…",
"cid": "9027705500530585310",
"kgmid": "/g/11v3yv8j5s",
"email": "info@simopizza.com",
"openingHours": [{ "day": "Monday", "hours": "11 AM–11 PM" }],
"reviews": [{ "stars": 5, "text": "…", "publishAt": "3 months ago", "isLocalGuide": true }]
}

Views: Overview, Contacts (leads) and Reviews (one review per row, also via &view=reviews in the API). Every run writes RUN_SUMMARY (places, add-ons billed, searches) and FAILED_INPUTS (inputs that gave nothing — never billed — each with a stable errorCode: INVALID_INPUT, INVALID_URL, SHORT_LINK_EXPIRED, NO_SEARCH_TERM, INVALID_PLACE_ID, INVALID_AREA, NO_AREA, AREA_NOT_FOUND, GEOCODING_FAILED, PLACE_NOT_FOUND, BLOCKED, PARTIAL_BLOCKED, UNEXPECTED_ERROR).

Visual report

Every run also saves a visual report: one HTML page that shows your places as business cards instead of rows.

  • Business cards: name, category, star rating and review count, address, phone, website, e-mail and social profiles (when website contacts are on and the site publishes them), opening state with the full weekly hours, rank on Google Maps and a link to the place on Google Maps. Photos: the place's main photo (imageUrl, sent with every search result) is shown on its card; with Maximum images on, click it to browse the place photos in full size (arrows, ← → Esc, swipe on mobile). Places without a photo on Google show a designed category tile, never a stock image. With place details, the card also shows the review distribution (5★ to 1★) and the price level.
  • Key figures and charts: places, average rating, reviews, share with phone, website and e-mail; rating distribution, top categories and top cities. They follow your filters; click a bar to filter.
  • Search, filters and sorting: search names, categories, addresses and phones; filter by category, city, minimum rating, has website / phone / e-mail, open at scrape time, price level and search term; sort by Google rank, rating, reviews or name. Card or table view.
  • Export: download the filtered places as JSON or CSV, or the full dataset as JSON, CSV or Excel.
  • Searches or areas that failed are listed at the top, grouped by error code (they are not billed).
  • Live progress: while the run is going, the page shows the searches done out of the total and the places saved so far, and refreshes itself every 30 s.
  • Data-quality panel: how complete the key fields are (name, phone, website, e-mail, address, category, rating, reviews, opening hours) and the share of places with a photo. It measures completeness, not accuracy.
  • At most 3 photos per place in the page (the main photo first); the dataset keeps every image you asked for with Maximum images.

How to open it: in the run, go to the Output tab and choose Visual report (or open the REPORT record of the key-value store).

Photos are shown straight from Google in your browser; nothing is re-hosted. The report holds the first 2,000 places of a run; the full dataset is one click away. Saving the report is never billed and can never make a run fail.

Pricing

Pay per event. Platform usage is included. Add-ons are billed only when you turn them on, and only for what is actually delivered.

EventFreeStarterScaleBusiness
Scraped place$3.20 / 1,000$2.40 / 1,000$1.60 / 1,000$1.20 / 1,000
Add-on: Filter applied (per place, any filter)$0.80 / 1,000$0.80 / 1,000$0.60 / 1,000$0.424 / 1,000
Add-on: Place details (per detailed place)$1.60 / 1,000$1.60 / 1,000$1.20 / 1,000$0.84 / 1,000
Add-on: Company contacts (per website read)$1.60 / 1,000$1.60 / 1,000$1.20 / 1,000$0.84 / 1,000
Add-on: Review scraped$0.40 / 1,000$0.40 / 1,000$0.296 / 1,000$0.208 / 1,000
Add-on: Image scraped$0.40 / 1,000$0.40 / 1,000$0.296 / 1,000$0.208 / 1,000
Actor start$0.00005$0.00005$0.00005$0.00005

Examples on the Free plan:

  • 1,000 places, no add-on: $3.20.
  • 1,000 restaurants with emails = $3.20 + up to $1.60 (contacts, billed only per website actually read) ≈ $4.80 at most. For e-mail lead lists only, Google Maps Leads Scraper includes contacts in $3.50 per 1,000.
  • 1,000 places with 5 reviews each = $3.20 + $1.60 (place details, needed for reviews) + $2.00 (5,000 reviews) = $6.80.

Using any filter (categories, minimum stars, website, exact name, closed places) adds the filter add-on per delivered place. Cap any run with the number of places or a maximum cost per run.

Good to know (limits)

  • Reviews: Google sends the most relevant reviews with each place — usually about 5 per place, which is the maximum here. For all reviews of a place, a dedicated reviews scraper is needed.
  • Images: a few images per place (those Google sends with the place).
  • Not available (accepted in the input, ignored, never billed): business leads enrichment, email verification, social media profile enrichment, AI competitor analysis, popular times, questions & answers, table reservation providers, places inside malls, web results, "scrape all places" without a search term.
  • One area per search: a location must be given with search terms (or a custom area / search URL).
  • Counts are a snapshot at the time of the run and can be lower than what you see when signed in to Google.

FAQ

How does it work? It reads the same public data your browser loads when you search Google Maps, splits large areas into smaller squares, and opens the place detail only when you ask for details, reviews or images.

Do I need a proxy? No. The Actor reads Google directly and switches to Apify datacenter addresses only when Google slows it down.

Can I scrape a whole country? Yes: set the country (or a large region) as the location; the area is split automatically. Large areas take longer — start with a city to check the results.

Is it legal? It scrapes only publicly available data, as any visitor sees it without signing in. You are responsible for complying with the site's terms and with data-protection law. Reviews and contacts can include personal data protected by the GDPR: collect them only for a legitimate reason, and turn off Include reviewers' data if you do not need it.

Pro or the Leads Scraper? Pick Pro for reviews, photos, place details, Google identifiers or the standard input names. Pick Google Maps Leads Scraper when you only need lead lists with e-mails: contacts and filters are included in its place price.

Can I get all reviews of a place? No — about 5 per place, the ones Google sends with the place. A dedicated reviews scraper is needed for full review histories.

Can I get one specific business? Yes: paste its Google Maps link (place link, ?cid= or maps.app.goo.gl) or place ID into Search term(s) or Google Maps URLs. One row, with its details.

Something does not work? Open an issue on the Issues tab with your run ID.

Troubleshooting

SymptomFix
Fewer places than expectedLeave Number of places empty (all) and start with a city rather than a country
Location not found on OpenStreetMap in FAILED_INPUTSWrite city, region, country or use GPS coordinates
Google refused the requestsRun again, or set Proxy to the RESIDENTIAL group. Refused searches are not billed
A link is listed in FAILED_INPUTSExpired short link or non-Google link: open it in a browser and paste the full Google Maps address
Only ~5 reviews per placeThat is what Google sends with a place (see limits above)
Warning about unknown or unavailable input fieldsOptions from another Actor: they are ignored and never billed

Use it via API

Replace YOUR_API_TOKEN with your token from Apify Console → Settings → API & Integrations.

Python (pip install apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("badr_xba/google-maps-scraper-pro").call(run_input={
"searchStringsArray": ["restaurant"],
"locationQuery": "New York, USA",
"maxCrawledPlacesPerSearch": 50,
"scrapeContacts": True,
})
for place in client.dataset(run["defaultDatasetId"]).iterate_items():
print(place["title"], place["phone"], place.get("email"))

JavaScript (npm install apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('badr_xba/google-maps-scraper-pro').call({
startUrls: [{ url: 'https://www.google.com/maps/search/pizza/@40.75,-73.98,14z' }],
maxCrawledPlacesPerSearch: 20,
maxReviews: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((p) => [p.title, p.totalScore, (p.reviews || []).length]));

cURL (waits for the run and returns the places)

curl -X POST "https://api.apify.com/v2/acts/badr_xba~google-maps-scraper-pro/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchStringsArray": ["dentist in Chicago"], "maxCrawledPlacesPerSearch": 20}'

Integrations

  • Make, Zapier and n8n: start a run and send the places to any of their apps.
  • Google Sheets, CRM (HubSpot, Salesforce, Pipedrive…): from the Integrations tab, or through Make, Zapier, n8n or the API.
  • Webhooks: notify your service or Slack when a run finishes; read RUN_SUMMARY for the numbers.
  • AI agents (MCP): add the Actor to Claude, Cursor or any MCP client through the Apify MCP server — https://mcp.apify.com/?actors=badr_xba/google-maps-scraper-pro.
  • Schedules: re-run weekly to follow ratings, review counts and new reviews of competitors.

Support

Found a bug or need a field? Open an issue on the Actor's Issues tab with your run ID; every report is read.

Feedback and reviews

If this Actor saved you time, a short review on its Store page helps other users find it. If something did not work as expected, please open an issue on the Issues tab with your run ID: we read every issue.

This Actor collects only publicly available data that anyone sees on Google Maps without signing in, and contact details businesses publish on their own websites. Automated access may conflict with Google's Terms of Service. Reviewer names, review texts, e-mails and phone numbers can be personal data: you are responsible for having a lawful basis under the GDPR (EU/UK) and similar laws, and for how you use them.