Google Maps Reviews Scraper - Bulk Reviews + Owner Replies
Pricing
$0.50 / 1,000 review scrapeds
Google Maps Reviews Scraper - Bulk Reviews + Owner Replies
Google Maps reviews scraper - extract reviews from any Google Maps place: reviewer name, star rating, date, full text, owner reply and photo count. Sort newest / highest / lowest. No API key. Export CSV.
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
7 days ago
Last modified
Categories
Share
Google Maps Reviews Scraper - Scrape Google Maps Reviews in Bulk + Owner Replies
Scrape Google Maps reviews from any place — restaurant, hotel, store, attraction, anywhere. This Google Maps review scraper — also a Google Map reviews scraper for any location — extracts 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.
Q: How do I scrape Google Maps reviews?
Paste one or more Google Maps place URLs (or short maps.app.goo.gl links) into placeUrls, set maxReviews (1–500 per place), pick a sortBy (newest, highest, lowest, or relevant), optionally set minRating, and run. The actor loads each place page, opens the Reviews tab, scrolls until enough reviews load, and returns each review with reviewer name, rating, date, full text, owner reply, and photo count.
Q: Can I export all reviews for a place?
Yes — up to 500 reviews per place per run, with one record per individual review (place name and URL denormalised onto each row) so you can filter or pivot in Sheets and Excel. Export to JSON, CSV, Excel, or Google Sheets via the Apify API. To capture more than 500, run multiple jobs with different sortBy values and deduplicate.
Q: Can I get owner replies to reviews?
Yes. When a business has replied to a review, the reply is captured in the owner_response field — useful for tracking how businesses respond to feedback.