Google Maps Reviews Scraper with AI Sentiment Analysis
Pricing
from $1.00 / 1,000 reviews
Google Maps Reviews Scraper with AI Sentiment Analysis
This actor extractc reviews, ratings and photos from any Google Maps business listing — with AI-powered sentiment analysis and business insights. Fast, structured, and ready to use
Pricing
from $1.00 / 1,000 reviews
Rating
0.0
(0)
Developer
Dennis
Maintained by CommunityActor stats
2
Bookmarked
21
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Share
Google Maps Reviews Scraper
Extract reviews, ratings and photos from any Google Maps business listing — with AI-powered sentiment analysis and business insights. Fast, structured, and ready to use
What it does
This actor calls the Google Maps API to collect reviews for one or more places. For each place it retrieves the author's name, profile link, Local Guide status, review and photo counts, star rating, date, source platform, full text (with translation if present), photos, and owner replies — all without running a browser.
You can feed it:
- A list of place URLs or IDs — scrape specific known places in bulk
- A search query + location — let the actor discover matching places within a radius and scrape them all
Output
The result is a JSON object with place metadata and an array of reviews. When generateAIOverview is enabled, an reviewOverview field is added at the place level:
{"placeId": "0x3a02a586c15e1b3d:0x2e5b31b1d5397aae","placeName": "Some Business","reviewOverview": "### Overall Sentiment\nPositive\n\n### Top Strengths\n- **Food Quality**: Customers consistently praise the deliciousness and quality of the food....","reviews": [{"reviewId": "Ci9DQWLR...","author": "John Smith","authorUrl": "https://www.google.com/maps/contrib/123456789/reviews","isLocalGuide": true,"authorReviewCount": 42,"authorPhotoCount": 7,"rating": 4,"date": "2 months ago","reviewSource": "Google","reviewUrl": "https://www.google.com/maps/reviews/data=...","text": "Great place, would definitely come back again...","textTranslated": null,"photos": [{"thumbnail": "https://lh3.googleusercontent.com/...","fullsize": "https://lh3.googleusercontent.com/...=s1600"}],"replies": [{"author": "Response from the owner","date": "1 month ago","text": "Thank you for your kind words!","textTranslated": null}]}]}
Review fields
| Field | Type | Description |
|---|---|---|
placeId | string | Unique Google place ID |
placeName | string | Name of POI or business |
reviewId | string | Unique Google review ID |
author | string | Reviewer's display name |
authorUrl | string | null | Link to the reviewer's Google Maps profile |
isLocalGuide | boolean | Whether the reviewer is a Google Local Guide |
authorReviewCount | number | null | Total number of reviews written by the author |
authorPhotoCount | number | null | Total number of photos uploaded by the author |
rating | number | Star rating (1–5) |
date | string | null | Relative date as shown on Google Maps |
reviewSource | string | null | Source platform (e.g. Google, Google Maps) |
reviewUrl | string | null | Direct link to the review on Google Maps (Google reviews only) |
text | string | Original review text |
textTranslated | string | null | Translated text if Google auto-translated the review, otherwise null |
photos | array | Review photos with thumbnail and fullsize (up to 1600px) URLs |
replies | array | Owner replies, each with author, date, text, and textTranslated |
Input
Scraping specific places
Provide a list of place URLs or IDs in placeUrls. Multiple entries are processed in parallel.
| Parameter | Type | Default | Description |
|---|---|---|---|
placeUrls | string[] | — | List of Google Maps place URLs or place IDs to scrape |
maxPlaces | number | 0 (unlimited) | Maximum number of places to process across all inputs |
maxReviews | number | 100 | Maximum reviews to collect per place; 0 = unlimited |
sortBy | string | newest | Sort order: newest, highest, lowest, or relevant |
newerThan | number | 0 (disabled) | Only fetch reviews posted within this many days; forces sortBy to newest |
language | string | en | Two-letter language code for review text (e.g. en, de, fr) |
generateAIOverview | boolean | false | Generate an AI-written summary of all reviews per place (see AI Overview) |
Supported place URL / ID formats
| Format | Example |
|---|---|
| Full Google Maps URL | https://www.google.com/maps/place/... |
| Short URL | https://maps.app.goo.gl/ykgpkGMfASnkhQgXA |
| Hex place ID | 0x40d4e9413c90fc47:0xe70863b37a371fdf |
| Base64 place ID | ChIJgUbEo8cfqokR5lP9_Wh_DaM |
Short maps.app.goo.gl links are resolved automatically before scraping begins. Hex and Base64 IDs are converted to canonical place URLs.
Example input — specific places
{"placeUrls": ["https://maps.app.goo.gl/ykgpkGMfASnkhQgXA","0x40d4e9413c90fc47:0xe70863b37a371fdf","ChIJgUbEo8cfqokR5lP9_Wh_DaM"],"maxReviews": 50,"sortBy": "newest","language": "en"}
Discovering places by search
Leave placeUrls empty and provide a search query with a location to let the actor find matching places automatically and scrape reviews from all of them.
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | — | Search term to discover places (e.g. "restaurant", "hotel") |
searchLocation | string | — | Center of the search area — coordinates ("58.75304, 17.01097") or a place name ("Paris, France") |
searchRadius | number | 5000 | Radius in meters around the search center to look for places (min 100) |
maxPlaces | number | 0 (unlimited) | Cap the number of discovered places to scrape |
Example input — search-based discovery
{"searchQuery": "coffee shop","searchLocation": "Paris, France","searchRadius": 2000,"maxPlaces": 20,"maxReviews": 30,"sortBy": "newest"}
This finds up to 20 coffee shops within 2 km of central Paris and collects the 30 newest reviews from each.
AI Overview
When generateAIOverview is set to true, the actor uses an AI model to produce a concise written summary of all collected reviews for each place. The summary is returned as an aiOverview string at the place level alongside the individual reviews.
Pricing: this feature incurs an additional charge per review with text that is processed by the AI. Reviews without text are not charged. The charge is applied on top of the standard per-review cost.
Example output:
{"placeId": "0x3a02a586c15e1b3d:0x2e5b31b1d5397aae","placeName": "Some Business","reviewOverview": "### Overall Sentiment\nPositive\n\n### Top Strengths\n- **Food Quality**: Customers consistently praise the deliciousness and quality of the food....","reviews": [...]}
Features
- Bulk place input — supply as many URLs or IDs as needed; all are processed automatically
- Search-based discovery — find places by name or category within any radius and scrape them all in one run
- All place ID formats — accepts full URLs, short links, hex IDs, and Base64 IDs
- No browser required — uses the Google Maps API directly for fast, reliable data retrieval
- Date filtering —
newerThanlimits results to recent reviews only, forcing newest-first sort automatically - Language control — request review text in any supported Google Maps language
- Sorting — supports all four Google Maps sort modes: newest, highest rating, lowest rating, and most relevant
- Translation detection — captures both the auto-translated version (
textTranslated) and the original (text) when present - Owner replies — extracts owner responses including author, date, text, and translation if present
- Full-size photos — thumbnail URLs normalized to full-resolution (
=s1600) variants - AI overview — optional AI-generated summary of all reviews per place; charged per source review with text