Google Maps Review & Contributor Activity Scraper
Under maintenancePricing
from $0.99 / 1,000 results
Google Maps Review & Contributor Activity Scraper
Under maintenanceGet reviews for any Google Maps business or place, or switch to author mode to pull everything one Google reviewer has written. Includes ratings, review text, dates, likes, and owner replies.
Pricing
from $0.99 / 1,000 results
Rating
0.0
(0)
Developer
Nimbryxo-studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Get Google Maps reviews for any business, restaurant, hotel, or location — no API key, login, or cookies required. Extract reviewer names, star ratings, full review text, dates, likes, owner replies, and business details, sorted by newest, highest-rated, lowest-rated, or most relevant. Also supports author mode to pull everything one Google reviewer has written across every place they've reviewed.
What this actor does
- Extracts full review data — reviewer name, rating, review text, date, likes, owner replies, and photos from any public Google Maps business or location page.
- Two input formats — paste a Google Maps place URL directly, or use a canonical Google
ChIJPlace ID. - Author mode — give a reviewer's public profile and get everything that reviewer has written across Google Maps.
- Sort control — request reviews newest-first, highest/lowest rating, or most relevant, with each row flagging whether Google's requested order was actually confirmed.
- Preserves Google's original relative dates (e.g. "2 weeks ago") instead of guessing calendar dates.
- Clean, null-free records — one row per review; fields Google doesn't expose are omitted rather than left blank.
Two modes
- Place mode (default) — give a business or location and get its reviews. This is the original behaviour and stays the default when
modeis omitted. - Author mode — give a Google reviewer’s public profile and get the reviews that reviewer has written. Author mode returns up to about ten of that reviewer’s most recent reviews; this is a limit of what Google publishes anonymously, not a setting.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
mode | enum | No | place | place for one business or location, author for everything one reviewer has reviewed |
placeUrl | string | In place mode | — | Google Maps place URL; mobile/country-domain/short-link variants and copied tracking parameters are normalized |
placeId | string | In place mode | — | Canonical Google Place ID beginning with ChIJ; use instead of placeUrl (setting both stops the run with an input error) |
contributorUrls | array | In author mode | — | One or more reviewer profile URLs or bare numeric reviewer IDs; profile, reviews, photos and place links are all accepted |
contributorUrl | string | In author mode | — | A single reviewer profile URL or bare numeric reviewer ID; same as one entry in contributorUrls |
maxReviews | integer | No | 50 | Maximum number of reviews to extract. In author mode Google publishes only about ten of a reviewer’s most recent reviews, so a higher value does not yield more rows |
sortBy | enum | No | newest | relevant, newest, highest_rating, or lowest_rating (used in place mode) |
language | enum | No | en | Google Maps interface language |
proxyConfiguration | object | No | — | The actor always uses Apify's Residential proxy group (US exit unless you choose another two-letter apifyProxyCountry); other proxy settings are ignored |
Examples
Example: newest reviews from a place URL
{"placeUrl": "https://www.google.com/maps/place/Joe's+Pizza/@40.7305137,-73.9968643,17z/data=!3m2!4b1!5s0x89c2599bcc4854cd:0xabc03f64af538b40!4m6!3m5!1s0x89c2599bca4854c5:0x48e61b36c6e9e68!8m2!3d40.7305137!4d-73.9942894!16s%2Fg%2F1tfrzlcv","maxReviews": 30}
Example: highest-rated reviews by Place ID
{"placeId": "ChIJabtoT7hlwokRLECK0SW3_8I","maxReviews": 100,"sortBy": "highest_rating","language": "en"}
Example: Japanese review collection
{"placeUrl": "https://www.google.com/maps/place/Sushi+no+Midori/@35.6704396,139.7596577,17z/","maxReviews": 50,"sortBy": "relevant","language": "ja"}
Example: everything one reviewer has reviewed
{"mode": "author","contributorUrls": ["https://www.google.com/maps/contrib/102461194647441801965/reviews"],"maxReviews": 10,"language": "en"}
How to Get the Place URL
- Go to Google Maps
- Search for the business or place
- Click on the place to open its details
- Copy the URL from your browser's address bar
The URL can be a desktop or mobile Google Maps URL, a supported country-domain URL, or a Google Maps short link. Wrapping quotes and tracking parameters are cleaned automatically.
You may provide a canonical Google Place ID beginning with ChIJ in placeId instead of placeUrl. Feature IDs and CIDs are not accepted as Place IDs.
How to Get a Contributor Profile URL
- Open any review written by the reviewer on Google Maps
- Click the reviewer's name to open their contributor profile
- Copy the URL from your browser's address bar
The profile URL looks like https://www.google.com/maps/contrib/…. You can paste the profile link, a …/reviews, …/photos, or …/place/… link, or just the reviewer's numeric ID — all are accepted and cleaned automatically.
Output per review
Each row in the dataset represents one review. In place mode every row includes the review data and the business context; in author mode every row includes the review data and the reviewer's public profile context. The recordType field tells the two apart (review for place mode, authorReview for author mode).
Sample Output
{"recordType": "review","reviewId": "ChZDSUhNMG9nS0VJQ0...","reviewerName": "John Smith","reviewerAvatarUrl": "https://lh3.googleusercontent.com/a/...","rating": 5,"reviewText": "Best pizza in NYC! The classic slice is perfection.","reviewDateOriginal": "2 weeks ago","likesCount": 3,"businessName": "Joe's Pizza","businessRating": 4.5,"businessTotalReviews": 12847,"businessCategory": "Pizza restaurant","businessAddress": "7 Carmine St, New York, NY 10014","placeUrl": "https://www.google.com/maps/place/Joe's+Pizza/...","sourceUrl": "https://www.google.com/maps/place/Joe's+Pizza/...","sortBy": "newest","sortConfirmed": true,"sortStatus": "confirmed","order": 0,"scrapedAt": "2026-09-14T12:00:00+00:00"}
Sample Author-Mode Output
{"recordType": "authorReview","contributorId": "102461194647441801965","contributorName": "Hilarie Sant","contributorAvatarUrl": "https://lh3.googleusercontent.com/a/...","contributorProfileUrl": "https://www.google.com/maps/contrib/102461194647441801965/reviews","contributorLocalGuideLevel": 3,"contributorPoints": 154,"contributorTotalReviews": 9,"placeName": "Especially For You Your Downtown Florist","placeAddress": "221 W 400 S, Salt Lake City, UT 84101, United States","rating": 5,"reviewText": "Thank you for the absolutely beautiful flowers and wonderful customer service!","reviewDateOriginal": "2 weeks ago","position": 1,"sourceUrl": "https://www.google.com/maps/contrib/102461194647441801965/reviews","scrapedAt": "2026-09-14T12:00:00+00:00"}
Output Fields
| Field | Type | Description |
|---|---|---|
recordType | string | review in place mode, authorReview in author mode |
reviewId | string | Unique review identifier when exposed |
reviewerName | string | Name of the reviewer (place mode) |
reviewerAvatarUrl | string | URL of the reviewer's profile picture (place mode) |
reviewerProfileUrl | string | URL of the reviewer's public profile (place mode) |
reviewerSubtitle | string | Google's subtitle under the reviewer name, e.g. Local Guide level, review and photo counts (place mode) |
reviewerLocalGuideLevel | integer | Reviewer's Local Guide level parsed from the subtitle (place mode) |
reviewerTotalReviews | integer | Reviewer's published review total parsed from the subtitle (place mode) |
reviewerPhotoCount | integer | Number of photos on the reviewer's profile parsed from the subtitle (place mode) |
reviewerEmoji | string | Emoji Google shows next to the reviewer's name (place mode) |
rating | integer | Star rating (1–5) |
reviewText | string | Full review text |
reviewLanguage | string | Language code Google reports for the review text |
originalReviewLanguage | string | Original language code when Google shows a translated review (place mode) |
reviewDateOriginal | string | Date text exactly as Google displayed it |
reviewDate | string | Absolute date only when Google exposed one directly |
isEdited | boolean | Set when Google marks the review as edited |
likesCount | integer | Helpful/like count only when published |
businessName | string | Name of the business (place mode) |
businessRating | number | Overall business star rating (place mode) |
businessTotalReviews | integer | Total number of reviews for the business (place mode) |
businessCategory | string | Business category (place mode) |
businessAddress | string | Business street address (place mode) |
contributorId | string | Reviewer's public numeric ID (author mode) |
contributorName | string | Reviewer's display name (author mode) |
contributorAvatarUrl | string | Reviewer's profile picture (author mode) |
contributorProfileUrl | string | Reviewer's public reviews page (author mode) |
contributorLocalGuideLevel | integer | Reviewer's Local Guide level (author mode) |
contributorPoints | integer | Reviewer's public contribution points (author mode) |
contributorTotalReviews | integer | Reviewer's published review total (author mode) |
placeName | string | Place the reviewer reviewed (author mode) |
placeAddress | string | Address of the reviewed place (author mode) |
position | integer | Position of the review in the reviewer's list (author mode) |
reviewPhotoUrls | array | Photo URLs attached to the review (author mode) |
reviewPhotoCount | integer | Number of photos attached to the review (author mode) |
videosInReview | integer | Number of directly labelled video controls Google exposes on this review card |
photosInReview | array | Photo URLs attached to the review (place mode) |
ownerResponseText | string | Owner reply, when the place replied |
ownerResponseDate | string | Owner reply date converted to an absolute date, when resolvable (place mode) |
ownerResponseDateOriginal | string | Owner reply date text exactly as Google displayed it |
contextLabels | array | Public context labels shown on the review (author mode) |
mentionedItems | array | Public item or aspect chips Google highlights in the review |
isVerified | boolean | Set when Google marks the review with a verified badge |
visitDate | string | Visit date text Google shows on the review, e.g. "Visited in May" |
placeId | string | Canonical Google Place ID beginning with ChIJ, when Google exposes one (place and author modes) |
featureId | string | Legacy feature/CID token (0x…:0x…), when Google exposes one (place and author modes) |
placeUrl | string | Google Maps place URL |
sourceUrl | string | Source Google Maps URL for the row |
sortBy | string | Requested review order for the row (relevant, newest, highest_rating, lowest_rating); place mode only |
sortConfirmed | boolean | true only when the requested order was confirmed from Google's own panel; false when rows were emitted but the requested order could not be confirmed. Place mode only |
sortStatus | string | Short form of sortConfirmed: confirmed or unconfirmed. Place mode only |
order | integer | Position of the review in results (0-based, place mode) |
scrapedAt | string | ISO 8601 timestamp of when the data was scraped |
Sort confirmation
sortedness is reported on the rows, never assumed. sortConfirmed is true only
when the panel's own post-click order positively shows the requested order and
something distinguishes it from the pre-click default order — the sampled cards
reordered, or Google's relevance window was replaced at the head by its recency
window. For newest, an all-identical relative-age window (for example ten
reviews that all read "3 weeks ago") is compatible with newest-first and is
confirmed once the panel changed; a window whose ages get newer going down is not
newest-first. For highest_rating/lowest_rating, a window of equal ratings
cannot distinguish the two orders and is left unconfirmed rather than guessed. A
requested order that could not be confirmed is named in the run's status message
and on every row.
Place identity
| Field | Type | Description |
|---|---|---|
placeId | string | Canonical Google Place ID beginning with ChIJ, when Google exposes one. |
featureId | string | Legacy feature/CID token (0x…:0x…), when Google exposes one. |
A canonical ChIJ… token is recorded in placeId; a legacy 0x…:0x… token is
recorded in featureId and is never relabelled as a Place ID. When both are
observed, the canonical token takes placeId and the legacy token is still
recorded as featureId. An identity that was never observed is omitted rather
than invented.
Use cases
- Monitor customer feedback for a business or location.
- Compare review themes and ratings across competitors.
- Follow prolific reviewers and see everything they have reviewed across places.
- Build analysis datasets while preserving Google’s original relative date text.
- Feed public review records into reporting or sentiment-analysis workflows.
Tips
- Set
maxReviewswisely — higher values take longer but give more data when the public review surface exposes it; place-mode collection is capped at about 30 minutes per run, so very large requests (tens of thousands of reviews) can stop short - Author mode is small by design — Google publishes only about ten of a reviewer's most recent reviews anonymously, so expect about ten rows per profile
- Reviews follow the requested
sortBywhen Google's sort control can be applied; rows whose order couldn't be confirmed carrysortConfirmed: false, and the run's status message says how many - Relative review dates are preserved as observed; the actor never converts them into guessed calendar dates
Limitations
- Google Maps sometimes exposes a smaller public review window than a place's advertised total review count, especially for very high-volume places. The actor reports exactly how many reviews it actually retrieved rather than padding the dataset.
- Place-mode collection works within an overall budget of about 30 minutes per run; whatever was collected by then is kept.
- The scraper extracts reviews visible on Google Maps — private or filtered reviews are not accessible.
- Author mode returns at most about ten reviews per profile. Google's public reviewer pages expose only the most recent handful of reviews with no way to page further; this is a Google limit, not a bug, and the actor reports only the reviews it actually observes.
- A reviewer's absolute review dates are not published. Google shows only relative labels such as "2 weeks ago", so author-mode rows keep that label in
reviewDateOriginaland never invent a calendar date.
You are responsible for using these public reviews lawfully and in line with Google's terms.
FAQ
Do I need to provide cookies or sign in? No. The actor reads Google Maps the way a signed-out visitor does.
Are relative dates converted to calendar dates? No. They remain in reviewDateOriginal unless Google exposes an absolute date directly.
Why are some review fields absent? Google does not publish every field for every review; unavailable values are omitted.
Can I sort the reviews? Yes. Choose the supported sortBy value such as newest, relevant, highest_rating, or lowest_rating. When an explicit order cannot be applied through Google's sort control, the run reports the ignored sort instead of returning relevance-ordered rows as though they were sorted.
What happens if a place has thousands of reviews but Google only exposes a smaller public window? The actor goes as far into that public window as it can reach and emits only real reviews it actually observed — it never pads the dataset with invented rows, and it reports honestly if the requested count could not be fully reached.
How many reviews does author mode return? About ten of that reviewer's most recent reviews. Google's public reviewer pages only expose that first window and offer no way to page further, so the actor reports exactly what Google shows and never pads the list.
Do author-mode rows have exact review dates like place mode? No, and neither does Google. A reviewer's published dates are relative labels such as "3 months ago"; those are kept verbatim in reviewDateOriginal, and no calendar date is guessed.
Is this an official Google product? No. This is a third-party actor that extracts publicly available data from Google Maps; it is not affiliated with, endorsed by, or operated by Google.
Can I scrape reviews for a specific Google reviewer instead of a business? Yes — switch to mode: "author" and provide that reviewer's public Google Maps profile URL or numeric ID. You'll get everything they've reviewed, not just one place.
Do I need a Google API key or billing account? No. This actor reads Google Maps' public pages directly — no Google Cloud project, API key, or billing setup required.