Google Maps Reviews Scraper β Photos, Ratings & Translations
Pricing
from $0.30 / 1,000 per reviews
Google Maps Reviews Scraper β Photos, Ratings & Translations
Scrape Google Maps reviews by place URL or place ID. Get review text with English translation, star ratings, attached photos, likes, owner responses, dates, and reviewer profiles β 20 fields. $0.50 per 1,000 reviews; pay only for what you get.
Pricing
from $0.30 / 1,000 per reviews
Rating
0.0
(0)
Developer
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Google Maps Reviews Scraper β Extract Reviews, Ratings, Photos & Owner Responses
Last updated: June 2026
Google Maps Reviews Scraper is an Apify actor that extracts every review from any Google Maps place β by place URL or place ID. It returns one row per review with 20 fields: rating, full review text (plus an English translation for non-English reviews), attached review photos, direct review link, relative and absolute date, owner response, reviewer name, profile URL, review count, photo, likes, and language. Purpose-built for reputation monitoring, sentiment analysis, and anyone who needs review data at scale. Priced at $0.0005 per review delivered ($0.50 per 1,000).
How to Scrape Google Maps Reviews
- Pay only for what you get β $0.0005/review ($0.50 per 1,000), $0.01 per run start, nothing else
- Two ways to target a place β paste its Google Maps URL, or supply its hex place ID
- Deep pagination β fetches every review up to
maxReviews, across all pages - Sort control β newest, most relevant, highest rating, or lowest rating (e.g. set
highestRating+maxReviews: 5to grab a place's top 5 reviews) - Owner responses captured β the business reply is a first-class field, not buried in text
- Rich reviewer data β profile URL, total review count, photo, and likes per review
- CSV-friendly output β flat row per review, no nested objects
Note on review counts. Google's total (e.g. "25 reviews") counts star-only ratings that have no written text. This actor returns reviews with text β so the number of rows is usually lower than the headline count. That is expected, not missing data.
Use Cases
- Reputation monitoring β track new reviews for your business or a competitor; alert on low ratings
- Sentiment analysis β feed
text+ratinginto an NLP pipeline for voice-of-customer insights - Lead generation β identify businesses with clusters of negative reviews (service opportunities)
- Market research β compare review velocity and rating distributions across competitors
- Review datasets β build training corpora for LLMs or fine-tuning sentiment classifiers
- Agency reporting β pull monthly review snapshots for client SEO/reputation dashboards
How to Get a Google Maps Place URL
This is the easiest input β just copy it from Google Maps:
- Open Google Maps and search for the business.
- Click the place so its panel opens on the left.
- Copy the full URL from your browser's address bar. It looks like:
https://www.google.com/maps/place/Business+Name/@9.29,105.73,17z/data=!4m8!3m7!1s0x31a1090bfc613b0d:0x236a0a4f8f3febce!... - Paste it into Place URLs (one per line for multiple places).
The important part is the β¦!1s0xβ¦:0xβ¦ segment β that's the place's ID. Copying from the address bar always includes it. Short links (maps.app.goo.gl/β¦) and bare name URLs without the data= segment may not resolve β use the full address-bar URL.
Quick Start
By place URL
{"startUrls":["https://www.google.com/maps/place/Tr%C3%A0+s%E1%BB%AFa+Feeling+Tea/@9.2958277,105.7306288,17z/data=!4m8!3m7!1s0x31a1090bfc613b0d:0x236a0a4f8f3febce!8m2!3d9.2958224!4d105.7332037!9m1!1b1"],"maxReviews":100,"reviewsSort":"newest"}
Top 5 reviews (highest rated)
{"startUrls":["https://www.google.com/maps/place/.../data=...!1s0x...:0x..."],"maxReviews":5,"reviewsSort":"highestRating"}
By hex place ID
Important: only the hex
0xβ¦:0xβ¦feature-ID format is accepted. TheChIJβ¦place ID shown in some Maps URLs is not supported β paste the full place URL instead.
{"placeIds":["0x8644b5003b80596b:0x6b271d491de49e1e"],"maxReviews":200,"reviewsSort":"lowestRating"}
Input Parameters
| Parameter | Default | Description |
|---|---|---|
startUrls | [] | Google Maps place URLs to scrape reviews from (see "How to get a place URL") |
placeIds | [] | Hex feature IDs (0xβ¦:0xβ¦ form only β see note above) |
maxReviews | 100 | Max reviews per place. 0 = unlimited. Counts reviews with text only |
reviewsSort | newest | Sort order: newest, mostRelevant, highestRating, lowestRating |
language | en | Language for reviews (BCP-47 code, e.g., en, de, fr, vi) |
proxy | null | Proxy config β residential recommended |
At least one of startUrls or placeIds is required.
Sample Output β Google Maps Review Row
{"place_id":"0x8644b5003b80596b:0x6b271d491de49e1e","business_name":"ATX Family Dental","business_url":"https://www.google.com/maps?cid=7720627710330453534","review_id":"ChdDSUhNMG9nS0VJQ0FnSURydXBfcXdBEAE","review_url":"https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSURydXBfcXdBEAE!...","rating":5,"text":"Absolutely love this place. The staff is kind, professional, and always on time. Dr. Chen explained everything clearly and I left with zero anxiety. 10/10 recommend.","text_translated":null,"review_images":["https://lh3.googleusercontent.com/grass-cs/AN..."],"relative_time":"2 months ago","absolute_date":"March 2026","language":"en","review_likes":3,"owner_response":"Thank you so much! We love having you as a patient and look forward to seeing you at your next visit.","has_owner_response":true,"reviewer_name":"Sarah M.","reviewer_profile_url":"https://www.google.com/maps/contrib/113456789012345678901","reviewer_review_count":47,"reviewer_photo_url":"https://lh3.googleusercontent.com/a-/ALV-UjV...","scraped_at":"2026-06-19T08:30:00+00:00"}
Every review row has these 20 fields: place_id, business_name, business_url (an openable maps?cid= link), review_id, review_url (direct link to the review), rating (1β5), text, text_translated (Google's English translation; null if the review is already in the requested language), review_images (list of attached review photo URLs), relative_time, absolute_date, language, review_likes, owner_response, has_owner_response, reviewer_name, reviewer_profile_url, reviewer_review_count, reviewer_photo_url, scraped_at.
How Much Does It Cost to Scrape Google Maps Reviews?
$0.0005 per review ($0.50 per 1,000) + $0.01 per run start.
| Use case | Reviews | Est. cost |
|---|---|---|
| Monitor one business (latest 100) | 100 | ~$0.06 |
| Competitive snapshot (10 businesses Γ 100 reviews) | 1,000 | ~$0.51 |
| Sentiment dataset β one category in one city | 10,000 | ~$5.01 |
| Full competitor audit β 100 businesses Γ 200 reviews | 20,000 | ~$10.01 |
One run start = $0.01 regardless of how many places or reviews you pull. You only pay for reviews actually delivered β if a place has 30 reviews and you set maxReviews: 100, you are charged for 30.
Google Maps Reviews Scraper Comparison
How this actor compares to other Google Maps review scrapers on Apify (prices as of June 2026, free tier):
| Scraper | Price / 1,000 reviews | Review text | English translation | Review photos | Likes | Owner response |
|---|---|---|---|---|---|---|
| This actor | $0.50 | β | β | β | β | β |
| Compass | $0.60 | β | β | β | β | β |
| beatanalytics | $0.50 | β | β | β | β | β |
| memo23 | $0.50 | β | β | β | β | β |
This actor delivers the most complete review row β English translations and review likes that the others omit, plus attached photos β at the lowest mainstream price. You pay only for reviews actually delivered, with no per-place or subscription fees.
Proxy Configuration
Works without proxy for small runs (under ~100 reviews). For larger scrapes or if you hit rate limits, a residential proxy is strongly recommended.
// Apify managed proxy (easiest){"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}// Bright Data{"provider":"brightdata","username":"YOUR_USER","password":"YOUR_PASS","zone":"residential","country":"US"}// Oxylabs{"provider":"oxylabs","username":"YOUR_USER","password":"YOUR_PASS","proxy_type":"residential","country":"US"}// SmartProxy{"provider":"smartproxy","username":"YOUR_USER","password":"YOUR_PASS","proxy_type":"residential","country":"US"}// Any proxy URL{"provider":"raw_urls","urls":["http://user:pass@proxy.example.com:8080"]}
Error Handling
| Situation | What happens |
|---|---|
| Google cookie-consent page on a fresh proxy IP | Dismissed automatically during session setup |
| Place URL has no place ID (short link / bare name) | Logs a warning, skips that URL, continues |
| A place returns no reviews | Logs, moves to next place β partial results always returned |
maxReviews reached | Stops pagination cleanly, dataset is complete |
| Run hits spending limit | Stops gracefully β no partial-page leakage |
Frequently Asked Questions
Do I need a proxy?
Not for small runs (under ~100 reviews total). For large scrapes or scraping reviews for many places at once, a residential proxy reduces the chance of rate limiting. Set proxy.useApifyProxy = true with group RESIDENTIAL for the easiest option.
What is the difference between startUrls and placeIds?
Both fetch reviews from the same Google endpoint β they only differ in how you point at the place. startUrls takes the Google Maps URL (recommended β just copy it from the address bar). placeIds takes the raw hex feature ID (0xβ¦:0xβ¦) if you already have it.
How do I target a place? See How to Get a Google Maps Place URL β copy the full URL from your browser's address bar and paste it into Place URLs. That's all most users need.
Why doesn't ChIJ⦠work as a place ID?
The ChIJβ¦ string is a base64-encoded identifier; the reviews endpoint requires the raw hex feature ID (0xβ¦:0xβ¦). Just pass the full place URL instead β it contains the hex ID in its β¦!1s0xβ¦:0xβ¦ segment and resolves automatically.
Why do I get fewer reviews than the count shown on Google? Google's headline count (e.g. "25 reviews") includes star-only ratings with no written text. This actor returns reviews with text, so the row count is usually lower. The star-only ratings are not individually retrievable.
How many reviews can I scrape per place?
As many as the business has. Google Maps shows up to several thousand reviews per place depending on the sort order. Set maxReviews as high as needed β the actor paginates automatically.
Why are some review texts empty?
Occasionally a returned review has text: null (the rating, date, and reviewer metadata are still present). Star-only ratings that Google never lists as individual reviews are not returned at all.
Why are some absolute_date values approximate (e.g., "March 2026" vs a full date)?
Google Maps exposes an approximate date string for most reviews (month + year). The exact day is not available through the reviews endpoint.
How do I sort reviews to find the most critical ones?
Set reviewsSort: "lowestRating" β the actor fetches 1-star reviews first.
Can I scrape reviews in other languages?
Yes. Set language to any BCP-47 code (e.g., de, fr, ja, es). This controls the language of relative time strings and UI text in the response; it does not filter reviews β Google returns reviews in all languages regardless.
Is this cheaper than other review scrapers on Apify? At $0.0005/review ($0.50 per 1,000), this matches the lowest mainstream per-review rates on the platform β and includes English translations, review photos, likes, and owner responses with no add-on fees. You only pay for reviews actually delivered.
Related Actors
Building a broader data pipeline? These actors use the same proxy config format and Pydantic-validated output.
Local business intelligence
- Google Maps Scraper β Extract business leads β emails, phone numbers, social links, 24 fields per business. Flat $7 per 1,000 results with emails included.
Lead generation
- LinkedIn Profile Scraper β Scrape LinkedIn profiles via your li_at cookie. Structured fields, full experience history, optional contact enrichment.
Lead generation / Hiring
- LinkedIn Jobs Scraper β Scrape LinkedIn job listings with 30 fields per job β company enrichment, salary, recruiter info, full description.
E-commerce intelligence
- TikTok Shop Product Scraper β Scrape TikTok Shop products across 10 regions β variants, prices, seller info, ratings, sold counts.
