Google Maps Reviews Scraper: Text, Ratings, Photos & Replies
Pricing
from $0.20 / 1,000 reviews
Google Maps Reviews Scraper: Text, Ratings, Photos & Replies
Get the Google Maps reviews of any place: rating, full text, exact date, photos, owner reply, reviewer details and food or service scores. Sort by newest to collect only recent reviews.
Pricing
from $0.20 / 1,000 reviews
Rating
0.0
(0)
Developer
Stratum ICS
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
What does Google Maps Reviews Scraper do?
Google Maps Reviews Scraper extracts the Google reviews of any place on Google Maps: star rating, full review text, exact date, photos, the owner's reply, the reviewer's name and profile, and scores such as Food, Service and Atmosphere (Rooms, Service and Location for hotels) when the reviewer gave them. Paste place links or place IDs, or find places with a search term and a location, and get one clean row per review for reputation monitoring, sentiment analysis or competitor research.
Reviews in other languages come with Google's own translation into the language you pick. Sort by newest and set a date limit, and the scraper reads only the reviews posted since then, so a weekly check of all your locations costs cents. Use it from the Apify Console, through the Apify API as a Google reviews API, or from any AI agent connected to Apify.
Why use this Google Maps reviews scraper?
- The whole review history. The scraper pages through every review Google lists for a place. A dental office with 735 reviews returned all 735, back to 2018, and one run collected 5,000 reviews of the Eiffel Tower in three and a half minutes.
- Exact dates.
publishedAtis the exact time Google stores for the review, in ISO 8601, next to the "3 weeks ago" text Google shows. - Built for monitoring. With newest-first sorting and Only reviews newer than set to "7 days", the scraper stops reading a place at the first older review. Reviews skipped by the date limit are free.
- Translations included. You get the original text, its language code, and Google's translation in
textTranslated. - Owner replies, photos and context. The owner's response, full-size photo links, per-aspect scores (Food, Service and Atmosphere for restaurants; Rooms, Service and Location for hotels), and the answers to Google's follow-up questions (meal type, price per person, wait time, trip type, parking and more).
- Any link works. Place page links,
maps.app.goo.glshare links,?cid=links, links withquery_place_id, and plain place IDs. - A privacy switch. Turn off reviewer details to collect reviews without names, profile links or photos of the people who wrote them.
- Fast and light. Plain HTTP requests and no browser: about 20 to 45 seconds per 1,000 reviews of a place, with three places read at the same time.
Typical uses: reputation monitoring for multi-location businesses and agencies, sentiment analysis and AI summaries of what customers say, competitor research before opening a location, finding unhappy customers to answer (sort by lowest rating), and local SEO audits of how often owners reply.
What data can you extract from Google Maps reviews?
| Field | Example |
|---|---|
placeName, placeAddress, placeCategory | Corner Restaurant · 110 E 2nd St, Austin, TX 78701 · Restaurant |
placeRating, placeReviewsCount | 4.8 · 18425 |
placeId, googleMapsUrl | ChIJxcCceAi1RIYR9AqXT8eWDyc · link to the place |
reviewId, reviewUrl | stable review ID · link to the review on Google Maps |
rating | 5 |
text, textTranslated, language | 美味實惠 · Delicious and affordable · zh-Hant |
publishedAt, publishedAtRelative | 2026-09-25T21:51:46.947Z · 3 weeks ago |
isEdited, updatedAt | true when the reviewer edited the review, with the date of the edit |
photos | full-size links to the photos attached to the review |
ownerResponse | the owner's reply and when it was posted ("2 weeks ago") |
reviewerName, reviewerUrl, reviewerPhotoUrl | Giovanni Cardenas · public profile link · profile picture |
reviewerReviewsCount, reviewerPhotosCount, isLocalGuide | 45 · 79 · true |
aspectRatings | {"Food": 5, "Service": 5, "Atmosphere": 5} |
reviewContext | {"Meal type": "Lunch", "Price per person": "$10–20", "Wait time": "No wait"} |
searchTerm, scrapedAt | the search that found the place · time of the run |
Each run also saves a free summary of every place (name, address, rating, review count, reviews saved, and why a place was skipped) in the Places output, the PLACES record of the run's key-value store.
How to scrape Google Maps reviews
- Open the Input tab and paste one or more Google Maps links or place IDs into Places, one per line. To pick places by search instead, fill in Search terms and Location.
- Set Max reviews per place. This also caps what you pay.
- Choose the sort order. For monitoring, pick Newest and set Only reviews newer than, for example
7 days. - Optionally turn on Only reviews with text, turn off Include reviewer details, or pick the language for translations and relative dates.
- Click Start. Reviews appear in the Output tab.
- Download the results as CSV, Excel, JSON or HTML, or send them to Google Sheets, Slack, Zapier, Make or n8n.
How much does it cost to scrape Google Maps reviews?
You pay per review saved:
| Event | Price |
|---|---|
| Review saved (all fields above) | $0.00035 ($0.35 per 1,000) |
| Place summaries, reviews skipped by your filters, places not found | Free |
1,000 reviews cost $0.35. Watching 20 locations every week with a 7-day limit, at about 30 new reviews per location, comes to roughly 2,600 reviews a month, or $0.91. Apify's free plan includes $5 of monthly credit, enough for about 14,000 reviews.
Larger Apify plans pay less per review automatically: $0.30 per 1,000 on Starter, $0.25 on Scale and $0.20 on Business. Each run also has a start fee of $0.00005.
Input
See the Input tab for every option. A weekly monitoring run:
{"places": ["https://www.google.com/maps/place/Toothbar/@30.2671177,-97.7527535,17z/data=!3m1!4b1!4m6!3m5!1s0x8644b511d14d4c3b:0x3062648265433120!8m2!3d30.2671177!4d-97.7527535","https://maps.google.com/?cid=2814634074907806452","ChIJLU7jZClu5kcR4PcOOO6p3I0"],"maxReviewsPerPlace": 1000,"sort": "newest","reviewsNewerThan": "7 days","includeReviewerDetails": true,"language": "en"}
The complaints of the top 10 dentists in a city, in German:
{"searchTerms": ["dentist"],"location": "Austin, TX","maxPlacesPerSearch": 10,"maxReviewsPerPlace": 50,"sort": "lowestRating","onlyWithText": true,"language": "de"}
- Places: any Google Maps link to a place, or a place ID. Links that only point at a map area are skipped and listed in the Places summary.
- Only reviews newer than: a date (
2026-01-31) or a period back from now (30 days,6 months,1 year). It compares againstpublishedAt, which for edited reviews is the date of the last edit. - Language and country: the language sets the translations, the relative dates and the names of the aspect scores and follow-up questions ("Food" becomes "Essen" in German), so keep it the same between runs you want to compare. The country sets where Google looks up searches.
Output
You can download the dataset in various formats such as JSON, HTML, CSV or Excel. Two records from real runs:
{"placeId": "ChIJxcCceAi1RIYR9AqXT8eWDyc","placeName": "Corner Restaurant","placeAddress": "110 E 2nd St, Austin, TX 78701","placeCategory": "Restaurant","placeRating": 4.8,"placeReviewsCount": 18425,"googleMapsUrl": "https://www.google.com/maps/search/?api=1&query=Corner%20Restaurant&query_place_id=ChIJxcCceAi1RIYR9AqXT8eWDyc","reviewId": "Ci9DQUlRQUNvZENodHljRjlvT2pSUmMyRXpSMU00YjAxNWJGVlNWV3h0U0ZscVNWRRAB","reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2pSUmMyRXpSMU00YjAxNWJGVlNWV3h0U0ZscVNWRRAB!2m1!1s0x0:0x270f96c74f970af4!3m1!1s2@1:CAIQACodChtycF9oOjRRc2EzR1M4b015bFVSVWxtSFlqSVE%7C%7C","rating": 5,"text": "This place was really good everything was so good and the service was amazing!","textTranslated": null,"language": "en","publishedAt": "2026-09-25T21:51:46.947Z","publishedAtRelative": "3 weeks ago","updatedAt": null,"isEdited": false,"photos": ["https://lh3.googleusercontent.com/grass-cs/AABkmLc7NnefDwFx28U6udJ_Ov3scD0vocLknAsGLqdEPrGo_gOUSiobHLke9uC4_LHbxf2SgVVL-HLRN5fgbj54nB4nlE8A6kgnBc3Qagd3ZbWdKRqR8VXqHLMBFakozEn4zJBN8x4vcGnfZ8Y8=w1600-h1600-k-no","https://lh3.googleusercontent.com/grass-cs/AABkmLedk-te9R19CmydChreOfpyC1yY2xG-Ftv-oNxvG2GwjeQUwmhwUx3xB29s37Ys2NNKhVr_g80QUSw6LUYuSoyCxJS2iAHvynbYaMRof5dPGdAWCSjhEtYwOTLlowYPFeLZrQFTV64fVi_A=w1600-h1600-k-no"],"ownerResponse": {"text": "Dear Giovanni Cardenas, thank you so much for your wonderful review! We're thrilled to hear that you had a great experience at The Corner. Our team works hard to create a welcoming atmosphere and serve delicious food, so it means the world to us that you enjoyed your visit. We can't wait to welcome you back again soon! Best Regards, Corner Restaurant Team","publishedAt": null,"publishedAtRelative": "2 weeks ago"},"reviewerName": "Giovanni Cardenas","reviewerId": "116280267191313209109","reviewerUrl": "https://www.google.com/maps/contrib/116280267191313209109/reviews","reviewerPhotoUrl": "https://lh3.googleusercontent.com/a-/ALV-UjVL15yamVuDGbOLf_uJjJRaVaGyFpDKDnep0PMgSCBp7oQlQxZtgA=s128-c-rp-mo-ba12-br100","reviewerReviewsCount": 45,"reviewerPhotosCount": 79,"isLocalGuide": true,"aspectRatings": { "Food": 5, "Service": 5, "Atmosphere": 5 },"reviewContext": {"Meal type": "Lunch","Price per person": "$10–20","Wait time": "No wait","Seating type": "Indoor dining area, Outdoor patio / terrace, Booth seating","Recommendation for vegetarians": "Highly recommend","Dietary restrictions": "Very accommodating and ask if u havw allergies before hand.","Kid-friendliness": "Pretty good","Wheelchair accessibility": "Good"},"source": "Google","searchTerm": null,"scrapedAt": "2026-10-18T02:34:49.433Z"}
A review in Chinese with Google's English translation (place fields trimmed):
{"placeName": "美德耐 台科大活動中心第一餐廳","placeCategory": "Food court","rating": 5,"text": "美味實惠","textTranslated": "Delicious and affordable","language": "zh-Hant","publishedAt": "2025-10-04T13:24:55.126Z","publishedAtRelative": "a year ago","photos": ["https://lh3.googleusercontent.com/grass-cs/AABkmLfFfTH-VyCipam4aWY3Qt1U42cA6rXsNxxSUfk9PK7lGfkDzNqX1vxCtlYbhLHLq6kw8hol9JMfKmEVd6VdBRMH6aYVwC80yKIsjr4eLDU2RGUscDD6ThRxnUib6nstkMnzU1MgoY4XhFVs=w1600-h1600-k-no"],"ownerResponse": null,"reviewerReviewsCount": 46,"isLocalGuide": true,"aspectRatings": { "Food": 5, "Service": 5, "Atmosphere": 5 },"reviewContext": {"Order type": "Dine in","Meal type": "Dinner","Price per person": "NT$1–200","Wait time": "No wait"}}
Tips for better results
- Monitor with a date limit. Sort by newest, set Only reviews newer than a little longer than your schedule (for example 8 days for a weekly run), and merge results on
reviewId, which never changes. - Most relevant gives a representative sample: Google puts detailed reviews with photos first. Lowest rating finds complaints fast.
- Tens of thousands of reviews from one place? The scraper read 1,400 to 3,000 reviews a minute per place in our tests; for very large places, raise the run timeout in the run options.
- Only need the words? Turn off reviewer details and turn on Only reviews with text for a lean dataset for sentiment analysis.
- A place shows 0 reviews? Check that the link points at the business itself and not at a whole market, park or neighborhood around it.
Integrations and API
- API: start runs and download results from any language. The API tab has ready code in Python, JavaScript and cURL.
- Python:
from apify_client import ApifyClient, thenclient.actor("stratumics/google-maps-reviews-scraper").call(run_input={"places": ["ChIJxcCceAi1RIYR9AqXT8eWDyc"], "maxReviewsPerPlace": 200}). - JavaScript:
import { ApifyClient } from 'apify-client', thenclient.actor('stratumics/google-maps-reviews-scraper').call({ places: ['ChIJxcCceAi1RIYR9AqXT8eWDyc'], maxReviewsPerPlace: 200 }). - No-code: Zapier, Make, n8n, Google Sheets and Slack from the Integrations tab, for example to add each week's new reviews to a Google Sheet after a scheduled run.
- AI agents: connect any MCP-capable assistant to Apify's MCP server (
mcp.apify.com) and it can call this scraper as a tool to read and summarize the reviews of a place.
FAQ
Is it legal to scrape Google reviews?
Google reviews are published for everyone to read, and this scraper does not log in. Reviews do contain personal data, though: the reviewer's name, profile link and picture, and sometimes names inside the text. Personal data is protected by the GDPR in the European Union and by other laws around the world, so only collect it when you have a legitimate reason, keep it no longer than you need, and consult a lawyer if you are unsure. Also consider Google's Terms of Service for your use case.
What personal data does it collect, and can I turn it off?
With Include reviewer details on (the default), each review carries the reviewer's public name, profile ID and link, profile picture, number of reviews and photos, and Local Guide status, exactly as Google Maps shows them. Turn the option off and those fields are null; you still get the rating, text, date, photos and owner reply. The review text itself can still mention people by name.
How many reviews can I get from one place?
All the reviews Google lists for it: a dental office with 735 reviews returned all 735. For a place with hundreds of thousands of reviews, set Max reviews per place to what you need and raise the run timeout.
Why is there no likes count?
The review data Google serves to visitors who are not signed in does not include the number of likes, and this scraper never signs in. The field is left out rather than filled with zeros.
Why does the owner reply have no exact date?
Google gives the reply date only as relative text ("2 weeks ago"), which is in ownerResponse.publishedAtRelative. ownerResponse.publishedAt stays null until Google provides more.
What is the date of an edited review?
Google keeps one date per review. For an edited review it is the time of the last edit: isEdited is true, publishedAtRelative carries Google's label ("Edited 2 weeks ago"), and updatedAt repeats the date. The original posting date is not available.
Why are the newest reviews of some landmarks weeks old?
For a few very large landmarks, Google's own newest-first list starts weeks back. When we checked, the Golden Gate Bridge listing's newest reviews were about two months old. Busy places such as restaurants usually show reviews from the same day.
Does it collect reviews from other sites shown on Google?
No. It collects Google reviews only, and source is "Google".
Found a problem or need a field?
Open an issue in the Issues tab with the input you used. Every issue is read and usually answered within a day.