Google Maps Review Scraper (Pay Per Result)
Pricing
from $0.50 / 1,000 reviews
Google Maps Review Scraper (Pay Per Result)
Scrape Google Maps reviews and return clean, structured data for analytics, monitoring, and workflows.
Pricing
from $0.50 / 1,000 reviews
Rating
0.0
(0)
Developer

Matthew James
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Google Maps Reviews Scraper
Google Maps Reviews Scraper helps you collect structured review data from Google Maps place URLs in a fast, repeatable way.
Use it to:
- monitor brand reputation across multiple locations
- track competitors and compare sentiment over time
- collect review datasets for analysis, dashboards, and AI workflows
- enrich lead research with place-level business context
Instead of manually opening profiles and copying reviews, you can run one Actor job and get clean JSON output ready for automation.
Features
- Works with both short Google Maps share links and full place URLs
- Supports bulk scraping in one run with configurable concurrency
- Lets you control output fields to keep datasets lean
- Returns consistent schema for downstream integrations
- Designed for production workflows on Apify
Output
Results are stored in the run dataset in the Output/Storage tab.
Each dataset item contains:
placename,url,rating,totalReviewCount,categoryaddress(full,street,city,country)phone,website,timezonehours.weekly[](day,isOpen,open,close,display)
scrapedSummaryrequestedMaxReviewsscrapedReviewCountsortOrderscrapedReviewAverageRatingstatus(completeorpartial)errorCodes
reviews[]position,rating,publishedAtauthor(name,profileUrl,reviewCount,photoCount)- optional
text,photos,ownerReplydepending on input toggles
Example Output
{"place": {"name": "<PLACE_NAME>","url": "https://www.google.com/maps/place/<PLACE_PATH>","rating": 4.7,"totalReviewCount": 1234,"category": "<PLACE_CATEGORY>","address": {"full": "<FULL_ADDRESS>","street": "<STREET>","city": "<CITY>","country": "<COUNTRY>"},"phone": "<PHONE_OR_NULL>","website": "<WEBSITE_OR_NULL>","timezone": "<TIMEZONE_OR_NULL>","hours": {"weekly": [{"day": "monday","isOpen": true,"open": "08:00","close": "18:00","display": "<DISPLAY_TEXT>"}]}},"scrapedSummary": {"requestedMaxReviews": 50,"scrapedReviewCount": 50,"sortOrder": "newest","scrapedReviewAverageRating": 4.5,"status": "complete","errorCodes": []},"reviews": [{"position": 1,"rating": 5,"publishedAt": "<PUBLISHED_AT>","author": {"name": "<AUTHOR_NAME>","profileUrl": "<PROFILE_URL_OR_NULL>","reviewCount": 42,"photoCount": 18},"text": "<TEXT_IF_ENABLED>","photos": [{ "url": "<PHOTO_URL>" }],"ownerReply": {"exists": true,"text": "<OWNER_REPLY_TEXT_OR_NULL>","date": "<ISO_DATE_OR_NULL>","relativeDate": "<RELATIVE_DATE_OR_NULL>"}}]}
Input
The actor accepts the following fields:
startUrls(required): list of Google Maps URLsreviewSort(optional, default:Newest)Most relevantNewestHighest ratingLowest rating
maxReviews(optional, default:999)maxConcurrency(optional, default:1, max:3)proxy(optional), e.g.{ "useApifyProxy": true }returnTextReview(optional, default:true)returnPhotos(optional, default:true)returnOwnerReply(optional, default:true)returnEmptyReviews(optional, default:false)
Example Input
{"startUrls": [{ "url": "https://maps.app.goo.gl/<SHORT_CODE>" },{ "url": "https://www.google.com/maps/place/<PLACE_PATH>" }],"reviewSort": "Newest","maxReviews": 50,"maxConcurrency": 1,"proxy": {"useApifyProxy": true},"returnTextReview": true,"returnPhotos": true,"returnOwnerReply": true,"returnEmptyReviews": false}
Notes
For power users, check out the monthly rental Actor here: https://apify.com/matthewjames/google-maps-review-scraper
- If a place has fewer reviews than requested, the actor returns the available amount.
- Output fields are controlled by your toggles, so you only pay for and process what you need.