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
bootforge
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
a day 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.