Google Maps Reviews API
for any place, with ratings and text
Pull Google Maps reviews for any place as clean JSON. One request returns the place info and a batch of reviews with rating, text, an ISO date, images, and reviewer detail, paginated, with proxies handled for you.
of requests succeed
median response
95% finish faster
per 1k review batches at volume
Google reshuffles the reviews panel constantly. Your parser shouldn't care.
- Reviews hidden behind scroll pagination
- Reviewer detail nested and inconsistent
- Dates like "a month ago", not timestamps
- Proxy rotation and retries per place
- Re-parse the panel after each redesign
One GET Request. That's the whole integration.
Start with just a query. Add more parameters when your use case needs them.
curl -G 'https://api.hasdata.com/scrape/google-maps/reviews' \
--data-urlencode 'dataId=0x873312ae759b4d15:0x1f38a9bec9912029' \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json'dataId Data IDplaceId Place IDnextPageToken Next Page Tokenhl LanguagesortBy Sort BytopicId Topic IDcurl -G 'https://api.hasdata.com/scrape/google-maps/contributor-reviews' \
--data-urlencode 'contributorId=117472887966458832611' \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json'contributorId * Contributor IDnum Number of ResultsnextPageToken Next Page Tokenhl Languagegl CountryGet Google Maps reviews without code
Prefer no code? Pull the same reviews from a visual scraper. No API, no setup, just a place and a sort order.
Google Maps Reviews ScraperPlace and reviews, one predictable schema
The place summary and each review come back with the same keys every time, including a normalized ISO date. Map the fields once and forget about it.
{
"title": "Grand Canyon National Park",
"address": "Arizona, United States",
"type": "National park",
"rating": 4.8,
"reviews": 63554,
"gpsCoordinates": {
"latitude": 36.2678855,
"longitude": -112.3535253
}
}title / type stringPlace name and category
address stringFormatted address
rating / reviews numberOverall rating and total review count
gpsCoordinates objectlatitude and longitude
[
{
"rating": 5,
"date": "a month ago",
"isoDate": "2026-06-28T13:43:13.352Z",
"snippet": "Absolutely breathtaking. Go at sunrise, skip the midday crowds...",
"source": "Google",
"images": ["https://lh3.googleusercontent.com/grass-cs/ACvplmNVrzom..."],
"user": {
"name": "Annmarie V.",
"localGuide": true,
"reviews": 748,
"photos": 12872,
"link": "https://www.google.com/maps/contrib/110142617241649447736"
}
}
]rating numberStar rating this reviewer gave
date / isoDate stringRelative date and a normalized ISO timestamp
snippet stringThe review text
images string[]Photos attached to the review
user.name / localGuide string / booleanReviewer name and Local Guide status
user.reviews / photos numberReviewer's total reviews and photos
// The contributor-reviews endpoint: every review one person has left, by contributor ID.
{
"contributor": {
"name": "Annmarie V.",
"level": 9,
"points": 97699,
"contributions": { "reviews": 748, "photos": 12872, "answers": 3407 }
},
"reviews": [
{
"placeInfo": { "title": "Tim Hortons", "type": "Coffee shop", "dataId": "0x882c98ecf9cc5a79:0x665e132f8eddb2bf" },
"rating": 4,
"date": "18 hours ago",
"snippet": "Quick service and the staff were friendly..."
}
]
}contributor.name / level / points string / numberReviewer identity and Local Guide standing
contributor.contributions objectTheir totals: reviews, photos, answers, and more
reviews[].placeInfo objectThe place each review is about, with its dataId
reviews[].rating / date / snippet number / stringThe review's score, date, and text
// The topic keywords Google extracts from the reviews, with how often each is mentioned.
[
{ "keyword": "Bright Angel Trail", "mentions": 4, "id": "YCs-0R3y3do" },
{ "keyword": "sunrise", "mentions": 27, "id": "a1B2c3D4e5" },
{ "keyword": "shuttle", "mentions": 12, "id": "f6G7h8I9j0" }
]keyword stringA topic pulled from the review text
mentions numberHow many reviews mention it
id stringTopic ID to filter the reviews by
An all-in-one scraping service
Every feature you need to collect data from thousands to millions of requests.
Discover similar
scrapers and APIs
to expand your projects.
Google Maps Search API
Local Market Research • $0.37 / 1k Request
Google Maps Photos API
Place Photos • $0.37 / 1k Request
Fits right into your stack.
Works with the tools you already use.
View Documentation ->Teams that deleted their scraper
Now it's the part of the pipeline they don't think about
The Google Maps API from HasData has been incredibly useful for collecting structured local business data. We were able to extract names, categories, contact details, and even customer reviews.
HasData delivers exactly what we need: speed and comprehensive search features. It's the fastest API we've used in this space. Plus, their customer support is fantastic.
We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.
Great web scraping API which is incredibly easy to use. It requires minimal effort to get up and running, and the documentation is very clear and helpful.
I needed to scrape some information they didn't already support, and they wrote the code for me right away, which was super nice of them.
Plans that get cheaper at scale
Fixed price, fixed volume, no surprises at the end of the month. Upgrade when you need more.
Free
Startup
Business
RecommendedGrowth
Monthly review batch volume
Custom price based on required volume
Past 100M scrapes a month, or terms the self-serve plans do not cover. We shape the contract around your workload. Past 100M scrapes a month, or need terms the self-serve plans do not cover? We shape the contract, concurrency, and support around your workload.
HasData accesses publicly available data only. Google Maps' terms may restrict automated access; you are responsible for compliance. Where data includes personal information, ensure a lawful basis under GDPR/CCPA.
Questions, answered
Pass the place's dataId, which the Google Maps Search API returns for every result. Feed that in and you get the place info plus its reviews back in one response.
Both. The reviews endpoint returns a place's reviews. The contributor-reviews endpoint returns every review a specific person has left. Same field shapes either way.
Yes. Each response carries a pagination token. Pass it on the next request to walk the full review history a batch at a time.
Yes. Alongside Google's relative label like "a month ago", every review carries an isoDate, so you can sort and filter by actual date without parsing fuzzy strings.
Per successful request. One request is one review batch, the place info plus a page of reviews. A failed request costs nothing.
Yes, a one-time trial of 200 review batches with every field included. No credit card required. When you're done testing, pick a plan that fits your volume.
One review batch costs 5 credits. The unit price drops with volume, from about $1.23 down to $0.37 per 1,000 batches. Need more than the top plan covers? We'll set a custom rate.
No. Requests run on HasData's infrastructure, so there's nothing to provision or maintain. You're responsible for using the results in line with each target site's terms and applicable law.
Your first review batch
is minutes away
200 review batches free · no credit card