Google Maps Reviews Scraper - Bulk Reviews + Owner Replies
Pricing
$0.50 / 1,000 review scrapeds
Google Maps Reviews Scraper - Bulk Reviews + Owner Replies
Scrape reviews from any Google Maps place. Reviewer name, rating, date, text, owner reply, photo count. Sort newest / highest / lowest. No API key.
Pricing
$0.50 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Hasnain Nisar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape reviews from any Google Maps place — restaurant, hotel, store, attraction, anywhere. Extract reviewer names, star ratings, dates, full review text, owner replies, and photo counts. Sort by newest, highest, or lowest. Filter by minimum rating. No API key.
At a glance
| What you get | Reviewer name, star rating, date, full review text, owner reply, photo count - one row per review |
| Input | One or more Google Maps place URLs (or short maps.app.goo.gl links) |
| Sorting | newest, highest, lowest, or relevant |
| Filters | minRating, maxReviews (1-500 per place) |
| Auth | No Google account and no Places API key required |
| Speed | ~20 reviews in 10-20s; ~100 in 30-60s |
| Export | JSON, CSV, Excel, or Google Sheets via the Apify API |
What this Google Maps Reviews Scraper does
For each Google Maps place URL, the actor returns:
- Place name — the business or location name
- Overall rating — the aggregate star rating
- Total reviews — how many were extracted (capped at
maxReviews) - Reviews list — each review with:
reviewer_namerating(1.0–5.0)date(e.g. "3 weeks ago", "a year ago")text(full body — long reviews are auto-expanded by clicking "More")owner_response(the business owner's reply, when present)photo_count(how many photos the reviewer attached)
Why use this Google Maps Reviews Scraper?
- No Google Places API key — bypass the per-call $$ pricing
- No quota limits — extract as many reviews as you need
- Owner-reply extraction — track how businesses respond to feedback
- Auto-expanded review text — full body, not the truncated preview
- Sort + filter controls — newest / highest / lowest, plus min-rating filter
- Bulk-friendly — pass an array of place URLs
Use cases
- Reputation management — monitor your own business's reviews and reply patterns
- Competitor analysis — see what customers say about your competitors
- Sentiment analysis — feed reviews into AI/ML pipelines for topic / mood extraction
- Local SEO research — analyse review velocity and rating distribution by competitor
- Marketing testimonials — surface 5-star reviews for ad copy and landing pages
- Customer-experience research — identify common complaints to fix
- Real-estate / hospitality due diligence — check review velocity before investing
- Brand monitoring — capture mentions across your store locations
Input
{"placeUrls": ["https://www.google.com/maps/place/Eiffel+Tower/@48.8584,2.2945","https://maps.app.goo.gl/abc123"],"maxReviews": 100,"sortBy": "newest","minRating": 1}
| Field | Type | Default | Description |
|---|---|---|---|
placeUrls | array of strings | required | One or more Google Maps place URLs |
maxReviews | integer | 20 | Max reviews per place (1–500) |
sortBy | string | newest | newest, highest, lowest, or relevant |
minRating | integer | 1 | Skip reviews below this star rating |
Output
The first record per place is a place-level summary:
{"place_url": "https://www.google.com/maps/place/Eiffel+Tower/...","place_name": "Eiffel Tower","rating": "4.6","total_reviews": 100,"reviews": [{"reviewer_name": "Alice Smith","rating": 5.0,"date": "2 weeks ago","text": "Amazing experience! The view from the top is breathtaking…","owner_response": "Thank you for visiting! We hope to see you again.","photo_count": 3}]}
The actor then pushes one record per individual review (with place_name and place_url denormalised onto each row) — handy for filtering / pivoting in Sheets and Excel.
How it works
The actor uses Playwright to load the Google Maps place page and:
- Dismisses cookie consent
- Reads the place name (
h1.DUwDvf) and overall rating (div.fontDisplayLarge) - Clicks the "Reviews" tab
- Sorts via the dropdown using your
sortByvalue - Scrolls the reviews panel until enough reviews are loaded
- Walks each review element, clicks "More" on long bodies, and extracts:
- reviewer name from
.d4r55 - rating from the
aria-labelof the stars span - date from
.rsqaWe - body text from
.wiI7pd - owner reply from
.CDe7pd - photo count from
button[aria-label*='photo']
- reviewer name from
Cost & speed
A 20-review scrape completes in 10–20 seconds. A 100-review scrape completes in 30–60 seconds. Memory usage is ~1 GB due to Chromium.
Related actors
- Facebook Page Scraper — extract contact info from FB business pages
- LinkedIn Profile Scraper — bulk LinkedIn profile data
- Email Verifier — verify scraped emails for outreach hygiene
- TikTok / YouTube / Twitter scrapers — multi-platform social monitoring
FAQ
Q: Do I need a Google account? No.
Q: Can I scrape thousands of reviews from a single place?
Up to 500 per run. For more, run multiple jobs with different sortBy (newest, highest, lowest) to capture different slices, then deduplicate.
Q: Why is total_reviews lower than maxReviews?
The place may simply have fewer reviews, or the minRating filter discarded some. The actor only counts reviews that survived the filter and were successfully parsed.
Q: Will Google block my Apify IP? Each place URL is loaded one at a time. Google typically tolerates this. For very large batches, run smaller chunks and pace your runs.
Q: Is scraping Google Maps reviews legal? Reviews are public data. Always comply with Google's Terms of Service when storing or republishing data. For commercial use, consult your legal team.