Get the reviews of a Google Maps place
Fetch Google reviews for one place: rating, text, language, publish_time, the author (with their Local Guide badge and review count), photos and the owner_response where there is one. The first page has up to 8 reviews, and each page after it up to 20. Use this for review monitoring and sentiment work.
https://api.scrapefield.com/v1/google-maps/reviewshttps://api.scrapefield.com/v1/google-maps/reviews?place_id=ChIJN1t_tDeuEmsRUsoyG83frY4In your code
const params = new URLSearchParams({
"place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4"
});
const res = await fetch(`https://api.scrapefield.com/v1/google-maps/reviews?${params}`, {
headers: { Authorization: `Bearer ${process.env.SCRAPEFIELD_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits_charged);Parameters
| Parameter | What it does |
|---|---|
place_id | Google's place ID. |
url | The full URL of the place on Google Maps, which carries its id. A short maps.app.goo.gl link does not, so open it and copy the address it leads to. |
sort | Order of the reviews. relevance · newest · highest · lowest, default relevance |
limit | At most this many results, 1–20. A page can hold fewer while next_cursor is set: read until it is null.1–20, default 20 |
cursor | The meta.next_cursor from the previous page. Omit for the first page. |
fresh | Skip the cache and fetch now. Charged normally. Not available on trial credits — buy any pack to unlock it. default false |
Response
Returns an array of google_maps_review. This is the demo’s answer, the one the playground above returns, in full rather than abbreviated — including the fields that come back null, because a field is null when the platform does not show it and you should know which ones those are before you build on them. A call with your key returns the account you ask for.
{
"data": [
{
"review_id": "ChZDSUhNMG9nS0VJQ0FnSUGNEw2YrTzvsaWn",
"place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4",
"author": {
"name": "Jonas Ibarra",
"url": "https://www.google.com/maps/contrib/111478498097400184005",
"profile_photo_url": "https://cdn.example/maps/a/peh_n197qa4Q.jpg",
"is_local_guide": false,
"review_count": 10,
"photo_count": 4
},
"rating": 3,
"text": null,
"language": "en",
"publish_time": "2025-10-27T17:50:54.000Z",
"like_count": 6,
"photos": [],
"owner_response": {
"text": "Sorry to hear this — we have spoken to the team about the wait.",
"publish_time": "2026-09-08T14:57:01.000Z"
}
},
{
"review_id": "ChZDSUhNMG9nS0VJQ0FnSUF_qv6XTY4cltsa",
"place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4",
"author": {
"name": "Sofia Aydin",
"url": "https://www.google.com/maps/contrib/173599325867380465475",
"profile_photo_url": "https://cdn.example/maps/a/qoeJGybOfm0k.jpg",
"is_local_guide": true,
"review_count": 85,
"photo_count": 313
},
"rating": 4,
"text": null,
"language": "en",
"publish_time": "2026-06-14T01:08:19.000Z",
"like_count": 6,
"photos": [],
"owner_response": null
}
],
"meta": {
"request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
"credits_charged": 6,
"credits_remaining": 74218,
"cached": false,
"fetched_at": "2026-09-20T09:12:03Z",
"next_cursor": "eyJwIjoxLCJzIjoiYTNmOSJ9"
}
}Fields of google_maps_review
One Google review of a place. Named after Google's Places API.
| Field | What it is |
|---|---|
review_id | Google's id for the review. |
place_id | The place it is about. |
author | Who wrote the review. |
author.name | As shown on the review. null where the source gives none. |
author.url | Their Google Maps contributor page. |
author.profile_photo_url | Their profile photo. |
author.is_local_guide | Whether they carry the Local Guide badge. |
author.review_count | How many reviews they have written, as the review shows. |
author.photo_count | How many photos they have posted. |
rating | 1 to 5. null when the source gives no rating. |
text | null for a rating with no words. |
language | Two-letter code of the language it was written in. |
publish_time | When it was posted. null when the source does not say. |
like_count | How many people marked it helpful. |
photos | Photos attached to the review. |
photos[].url | The image on Google's CDN. We do not rehost images. |
photos[].width | Pixels. |
photos[].height | Pixels. |
photos[].author_name | Who uploaded it, as the listing credits them. null for the owner's own photos. |
photos[].author_url | Their Google Maps contributor page. |
owner_response | The "Response from the owner", where there is one. |
owner_response.text | The owner's reply. |
owner_response.publish_time | When the owner replied. null when the source does not say. |
What it costs
6 credits per successful call, whether we fetch it or serve it from cache — you pay for the answer, not for how we produced it. Responses are cached for 6 hours and a cached one tells you when the data was actually fetched. A call we fail costs 0 and is refunded automatically.
On the smallest pack that is $4.68 per 1,000 calls; on the largest, $2.64. The full table.
What people build with it
Questions
How much does the Google Maps reviews scraper API cost?
6 credits a call: $4.68 per 1,000 calls on the smallest pack and $2.64 on the largest. A call that fails costs nothing, and the refund is automatic. A cached answer costs the same as a fresh one. Credits are bought in packs and never expire; there is no plan.
Do I need a Google Maps account, a login or cookies?
No. You need a key from us and nothing from Google Maps. We never take a customer's login, cookies or session, at any price, and no account of yours is ever at risk.
Can I try it without signing up?
Yes. Add demo=true and leave the key out, or press Send request in the playground on this page. The demo answers with a real answer about Ferrari, captured once a week, in exactly the shape a live call returns, whatever you ask, and charges nothing.
How fresh is the data?
An answer is kept for up to 6 hours, and a cached one says when it was fetched, in meta.fetched_at. Add fresh=true to fetch it again now, at the same price; it needs any purchase, not the trial.
What does it return?
A list of google_maps_review objects. Its fields are named after Google's Places API. A field is null when Google Maps does not show it, never missing. Every field is described on this page.
How do I get more than one page?
Pass meta.next_cursor back as cursor, and stop when it is null. Each page is a call, priced the same. A cursor lasts as long as the answer it belongs to is cached.
Can an AI agent call it?
Yes: it is the MCP tool get_place_reviews on our MCP server, with the same parameters, answer and price. Without a key, the tool answers from the demo.