Google Maps Review Scraper
Pricing
Pay per usage
Google Maps Review Scraper
Scrape Google Maps reviews for any place by CID or Maps URL — no fixed store list required. Each review (reviewer, rating, text, date, owner reply) is pushed as a clean dataset row, ready for ETL, sentiment analysis, or reporting pipelines.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Touma
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Scrapes Google Maps reviews for any list of places (via cid and/or a raw
Maps URL), optionally filtered to a specific month/year. No bundled store
list -- pass whatever places you want at run time.
Input
| field | required | notes |
|---|---|---|
targets | one of targets/targetsCsv | JSON array of {name, cid, mapsUrl} -- only cid or mapsUrl is required per item |
targetsCsv | one of targets/targetsCsv | CSV text, columns name,cid,mapsUrl |
month | no | 1-12. Omit for ALL reviews, any date. |
year | no | paired with month; defaults to 2026 if month is set and this isn't |
maxReviewsPerPlace | no | cap per place; omit for no cap |
workers | no | concurrency, default 6 |
limit | no | only process the first N targets (testing) |
Example run -- specific month, one place
{"targets": [{"name": "Bata Shoe Store - Esplanade, Kolkata", "cid": "1886281027832551729"}],"month": 7,"year": 2026}
Example run -- ALL reviews (no date filter), multiple places by URL
{"targets": [{"name": "Store A", "mapsUrl": "https://www.google.com/maps/place/.../@..."},{"name": "Store B", "cid": "5850262627799758060"}],"workers": 8}
Example run -- bulk via CSV
{"targetsCsv": "name,cid,mapsUrl\nStore A,1886281027832551729,\nStore B,,https://www.google.com/maps/place/...","month": 7,"year": 2026,"workers": 10}
Output
Each row pushed to the actor's default dataset is one review:
name, cid, mapsUrl (from the input target) plus the review fields --
review_id, reviewer_name, rating, review_text, review_date_iso,
owner_reply_text, etc. (see botguard_lib.parse_review for the full
field list). Pull it from the dataset via the Apify API/export the same
way any other actor's output is consumed.
Notes
- Occasional per-place failures are retried automatically (up to 3 attempts) before being logged.
workersabove ~8-10 increases the chance of rate limiting -- start conservative and raise it once you've confirmed a run stays stable.