Google Maps Reviews Scraper | 💰 $0.25 per 1,000 results
Pricing
from $0.25 / 1,000 results
Google Maps Reviews Scraper | 💰 $0.25 per 1,000 results
[💰 $0.25 / 1K] Scrape Google Maps reviews at scale. Extract review text, ratings, reviewer details, owner responses, photos, and more for any place on Google Maps.
Pricing
from $0.25 / 1,000 results
Rating
5.0
(1)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
41
Total users
7
Monthly active users
3 days ago
Last modified
Categories
Share
Google Maps Reviews Scraper
Export the review history of any place on Google Maps as clean spreadsheet rows: star ratings, full review text, reviewer profiles, owner replies, and review photos. Built for reputation managers, market researchers, and analysts who need a place's complete review record, not the handful of reviews a page happens to show before it stops loading.
Why This Scraper?
- Date-range exports that are actually complete. Google's "newest" feed is not in date order. Across a 2,757-review sample, every place tested served reviews out of position, some by years. This scraper reads straight past those instead of stopping at the first old one, so "everything since January" really means everything since January.
- Up to 50,000 reviews from a single listing. Set the per-place limit to
0and take the whole history in one run. - 20 fields per review, including each reviewer's lifetime review count, their photo count, and their Local Guide badge, so a 5-star rave from a 900-review Local Guide can be weighted differently from a first-timer's.
- Owner replies on the same row as the review they answer, with the date the business posted them.
- Review photos as full-size image links, listed per review.
- 4 sort orders (Most Relevant, Newest First, Highest Rating, Lowest Rating). Lowest Rating with a limit of 100 buys you a complaint sample for cents instead of an entire history.
- 33 review languages and 184 countries. Reviews come back in whatever language they were written in, each row tagged with its own language code, and you pick which country's view of Maps to collect.
- Three ways to name a place, mixable in one run: a Maps URL, a
ChIJ…place ID, or plain text like "Katz's Delicatessen New York". - Runs report honestly. If reviews cannot be retrieved, the run fails and names the reason instead of handing you an empty file marked "succeeded". Partial runs say how many places came back short.
Use Cases
Reputation Monitoring
- Track new reviews across every one of your locations in one dataset
- Pull only reviews posted since your last export and route them to Slack or email
- Catch owner replies that were never written, by filtering rows where the response field is empty
Competitive Intelligence
- Compare rating distributions across every competitor in a trade area
- Read a rival's 1-star and 2-star reviews in bulk to find the failure they keep repeating
- Track how a competitor's rating moves month by month after a refurbishment or menu change
Lead Generation
- Build prospect lists of businesses whose ratings slipped below a threshold
- Find high-review-volume locations worth a partnership approach
- Identify businesses that never respond to reviews, an easy opening for reputation services
Customer Experience Research
- Mine thousands of reviews for the phrases customers repeat about wait times, staff, or parking
- Separate tourist feedback from local feedback using reviewer review counts and Local Guide status
- Compare what customers praise in one city against another for the same brand
Academic and Data Science
- Assemble large labelled review corpora for sentiment and NLP work
- Study rating behaviour, reviewer tenure, and photo-contribution patterns
- Analyse temporal and geographic trends in consumer feedback
Getting Started
Paste place URLs
The fastest start. Paste one or more Google Maps place links:
{"placeUrls": ["https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2944813"],"maxReviewsPerPlace": 100}
Search by name
No URL? Give the name and the city:
{"searchQueries": ["Katz's Delicatessen New York", "Sagrada Familia Barcelona"],"maxReviewsPerPlace": 200}
Only reviews since a date
Everything published on or after your cutoff. Reviews outside the range are dropped before they reach your dataset, so they cost you nothing:
{"placeUrls": ["https://www.google.com/maps/place/..."],"reviewsStartDate": "2024-01-01","maxReviewsPerPlace": 0}
Complaints only, in a local market
Lowest ratings first, in the language and country you care about:
{"searchQueries": ["Tokyo Tower"],"maxReviewsPerPlace": 100,"sortBy": "lowest","language": "ja","countryCode": "JP"}
Input
Places
| Parameter | Type | Default | Description |
|---|---|---|---|
placeUrls | string[] | [] | Google Maps place URLs or place IDs (ChIJ…). One per line. |
searchQueries | string[] | [] | Place names to look up, for example "Eiffel Tower Paris". One per line. |
You can supply both in the same run.
Collection options
| Parameter | Type | Default | Description |
|---|---|---|---|
maxReviewsPerPlace | integer | 100 | Reviews to collect per place. 0 means everything, up to 50,000. |
sortBy | string | relevant | Most Relevant, Newest First, Highest Rating, or Lowest Rating. Forced to Newest First whenever a start date is set. |
reviewsStartDate | string | empty | Collect only reviews published on or after this date (YYYY-MM-DD). Also switches the sort to Newest First. |
Language and region
| Parameter | Type | Default | Description |
|---|---|---|---|
language | string | en | One of 33 languages for the Google Maps interface. Review text itself always comes back in the language the reviewer wrote it in. |
countryCode | string | Auto-detect | One of 184 countries. The run is made from that country, so results match what a visitor there would see. Leave empty to let Google choose. |
Output
Every review is one row, with up to 20 fields:
{"reviewId": "Ci9DQUlRQUNvZENodHljRjlvT2xWbExYUlBlRTFrWjB0...","rating": 5,"reviewText": "Incredible family-style Italian food. The portions are massive and perfect for sharing, and service was attentive even on a busy Saturday night.","language": "en","publishedAt": "2026-06-20T17:16:06Z","publishedAtTimestamp": 1781975766,"reviewPhotoUrls": ["https://lh3.googleusercontent.com/..."],"responseFromOwnerText": "Thank you for the wonderful review! We hope to see you again soon.","responseFromOwnerDate": "2026-06-22","reviewUrl": "https://www.google.com/maps/reviews/data=Ci9DQUlRQUNvZENodHlj...","source": "Google","reviewerName": "Sarah M.","reviewerUrl": "https://www.google.com/maps/contrib/1234567890123456789","reviewerPhotoUrl": "https://lh3.googleusercontent.com/a-/ALV-UjU...","reviewerNumberOfReviews": 852,"reviewerNumberOfPhotos": 8391,"isLocalGuide": true,"placeName": "Carmine's - Times Square","placeUrl": "https://www.google.com/maps/place/...","placeFeatureId": "0x89c259af3367d0f5:0x3bdb6f7c1c5b8b5d"}
Review fields
| Field | Type | Description |
|---|---|---|
reviewId | string | Unique identifier for the review, stable across runs |
rating | number | Star rating, 1 to 5 |
reviewText | string | Full review text. Empty when the reviewer left a rating only |
language | string | Language the review was written in |
publishedAt | string | Publication date and time, ISO 8601 (2026-06-20T17:16:06Z) |
publishedAtTimestamp | number | The same moment as a Unix timestamp, ready to sort or filter on |
reviewPhotoUrls | string[] | Full-size links to photos attached to the review |
responseFromOwnerText | string | The business owner's public reply, when there is one |
responseFromOwnerDate | string | Date the owner replied |
reviewUrl | string | Direct link to the review on Google Maps |
source | string | Platform the review came from |
Reviewer fields
| Field | Type | Description |
|---|---|---|
reviewerName | string | Reviewer's display name |
reviewerUrl | string | Link to the reviewer's public Google Maps profile |
reviewerPhotoUrl | string | Reviewer's profile photo |
reviewerNumberOfReviews | number | How many reviews this person has written in total |
reviewerNumberOfPhotos | number | How many photos this person has contributed in total |
isLocalGuide | boolean | Whether Google marks them as a Local Guide |
Place fields
| Field | Type | Description |
|---|---|---|
placeName | string | Name of the reviewed place |
placeUrl | string | Google Maps link to the place |
placeFeatureId | string | Google's own identifier for the place, useful for joining runs together |
Tips for Best Results
- Name the city in every search query. "Katz's Delicatessen New York" resolves to one listing; "Katz's" can land on a different branch in a different country.
- A start date overrides your sort order. Setting
reviewsStartDateswitches collection to Newest First, because that is the only order a date range can be read in. If a specific order matters more than the date window, use one or the other, not both. - Raise the per-place limit when you use a date range. The limit counts reviews delivered to your dataset, so a busy place can hit
100long before it reaches your cutoff. The run log names which of the two ended collection. - Filter ratings after export, not before. Google offers no rating filter, so pull the reviews you want and filter on the
ratingcolumn in your spreadsheet or database. - Use
publishedAtTimestampfor repeat exports. Keep the highest timestamp from your last run and use it as the next run's start date to pick up only what is new. - Pair
languagewithcountryCode. A Japanese-language run from Japan surfaces a noticeably different review mix than the same place requested from the US. - Split places with 10,000+ reviews across runs. Two runs with different sort orders reach further into a huge review history than one long run with a single order.
Pricing
From $0.22 per 1,000 reviews. One flat rate per review, whichever place it came from. You pay for reviews delivered to your dataset, plus a small fixed start fee each time a run begins. Reviews filtered out by your date range never reach the dataset and are never charged. Bronze, Silver, and Gold subscribers pay progressively less, and the table shows the total at each discount tier.
| Reviews | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.025 | $0.024 | $0.023 | $0.022 |
| 1,000 | $0.25 | $0.24 | $0.23 | $0.22 |
| 10,000 | $2.50 | $2.40 | $2.30 | $2.20 |
| 100,000 | $25.00 | $24.00 | $23.00 | $22.00 |
Standard Apify platform fees apply on top.
Integrations
Export as JSON, CSV, Excel, XML, or RSS, and connect to 1,500+ apps:
- Zapier / Make / n8n — workflow automation
- Google Sheets — direct spreadsheet export
- Slack / Email — alerts when a run finishes
- Webhooks — push new reviews into your own systems
- Apify API — full programmatic access for scheduling, monitoring, and data retrieval
Legal and Ethical Use
This actor is built for legitimate reputation monitoring, market research, and competitive intelligence. You are responsible for complying with applicable laws and Google's Terms of Service. Do not use collected data for spam, harassment, or any unlawful purpose.