Skip to main content
Google Maps reviews

Google Maps Reviews Scraper
what customers say, as data

Send a place link and get its reviews back: 60 per place, most relevant first, each with the star rating, date, full text, photos and the owner's reply. The same call returns how the ratings spread across 1 to 5 stars and the topics reviewers mention most.

You sendwww.google.com/maps/place/data=!4m2!3m1!1s0x89c2598f7ff4aa09:0x313547e757cb8cea
60 reviews1 credit
You get back (real run, trimmed)
{
"place": {
"title": "Katz's Delicatessen",
"rating": 4.5,
"reviewsCount": 56122
},
"reviewsReturned": 60,
"reviews": [
{
"rating": 5,
"isoDate": "2026-06-11T19:27:42.022Z",
"text": "Katz's has been open since 1888 and it shows in the best possible way.…"
},
"… 59 more"
]
}
60

reviews per place, most relevant first

22 of 60

reviews in the Katz's sample came with an owner reply

1 credit

for the reviews, star distribution and topics together

$0

for a place that can't be delivered

What one place link tells you about its reviews

Use any link to the place: the full Maps link, a CID link or a share link. The reviews come with it.

Reviews

Up to 60, in Google's most relevant order, each with rating, relative and exact date, text, language and photos.

"reviewsReturned": 60

Star distribution

How many reviews gave 1, 2, 3, 4 and 5 stars, across every review the place has, not just the 60.

"ratingDistribution": { "1": 1848, ... }

Review topics

The keywords Google pulls from all reviews, with how many reviews mention each one.

{ "keyword": "long lines", "mentions": 1512 }

Owner replies

The business's reply under each review, with its text and when it was posted.

"response": { "text": ..., "date": ... }

Detailed ratings

Food, service and atmosphere scores, price per person, meal type, wait time and parking, when the reviewer filled them in.

"label": "Price per person", "value": "$30–40"

Review snippets

The short quotes Google highlights on the place, ready to show next to a rating.

"reviewSnippets": [ ... ]

One call, every field

Point the scrape call at a Google Maps link. With JSON output and no prompt, the data comes back as it is, for 1 credit and no AI cost.

Ask for markdown instead and you get the readable page as text. The structured data still comes back, in its own structuredData field next to the markdown.

import { SpidraClient } from "spidra";
 
const spidra = new SpidraClient({
apiKey: process.env.SPIDRA_API_KEY,
});
 
const result = await spidra.scrape({
urls: [{ url: "https://www.google.com/maps/place/data=!4m2!3m1!1s0x89c2598f7ff4aa09:0x313547e757cb8cea" }],
output: "json",
});
 
const data = result.content;
for (const r of data.reviews) console.log(r.rating, r.isoDate, r.text);
What you get for each review
Rating
1 to 5 stars
Date
As Google shows it ("4 months ago") and as an exact ISO timestamp
Text
The full review text, its language, and a translation when it was written in another language
Photos
Links to every photo attached to the review
Details
The structured answers: food, service and atmosphere scores, price per person, meal type, wait time, parking
Owner reply
The business's reply text and when it was posted
Reviewer
Public name and profile link, their review and photo counts, and the Local Guide badge
Links
A permanent link to the review and its review ID, for de-duplication across runs

What comes back

Real responses from Spidra, trimmed for length. Nothing here is mocked up.

Request
https://www.google.com/maps/place/data=!4m2!3m1!1s0x89c2598f7ff4aa09:0x313547e757cb8cea

The reviews part of a place response: up to 60 per place, most relevant first.

Response (real run, October 18, 2026, trimmed)
{
"reviewsSort": "relevant",
"reviewsReturned": 60,
"reviews": [
{
"rating": 5,
"isoDate": "2026-06-11T19:27:42.022Z",
"text": "Katz's has been open since 1888 and it shows in the best possible way. The walls are covered in celebrity photos going back decades, the staff have clearly been here a while, and when you walk in you get handed a paper t…",
"language": "en",
"user": {
"name": "[redacted]",
"thumbnail": "[redacted]",
"reviews": 4,
"photos": 14,
"localGuide": true
},
"images": [
"https://lh3.googleusercontent.com/grass-cs/AABkmLc2FdBcmY6R3eJmBPTZSmtgkjyMo9ffF_5k2Ud3Iy_kvkeCC4O0aQSITAfNajPWQLYOQrIHamBD1svmi5noTpSVLvNz7HrwNVX7tq1Ft-3n5HuihG1JJpBkwiqFNROMkfZcDM8QAY7HANJL=k-no",
"https://lh3.googleusercontent.com/grass-cs/AABkmLcJ-G0HnGUrlS2gYyboLTx21hkZrxzVcbmSIGoOQ3MrMTecJ3zuEKTSaZzsxJnk67bFbgvxHpNG1UR92dhEP3bdDgFinsE3V8Szwbq4i4PimPa_zhVR6RZgQhW9mupRaivgNYlMtnrgiL0-=k-no",
"… 2 more"
]
},
{
"rating": 5,
"isoDate": "2026-07-24T10:18:14.112Z",
"text": "I knew this place was going to be busy, but actually being inside is a different experience. It has that old New York feeling where everything is moving at once, people are talking, orders are being called out, and someh…",
"language": "en",
"user": {
"name": "[redacted]",
"thumbnail": "[redacted]",
"reviews": 3,
"photos": 10,
"localGuide": false
},
"response": {
"text": "What's a deli without a little chaos? We're so glad you enjoyed your first visit - though if you ever want to try stopping by at a slower time, drop by during off-peak hours: breakfast, between lunch and dinner, and late…",
"date": "2 months ago"
},
"images": [
"https://lh3.googleusercontent.com/grass-cs/AABkmLfPOib-nQhjghe7HAqSC6ULJwSRioEZuZ22Yb5-0SQ0fJiTCfz6WQDoV4fdjQpB8e8eKXYYZDzmYYabo25sb0lxsJd5f7SX5_zk5bULgB-iY4gHCe6Gr_UMF7hBVk_scfrNCIjCNB8Z7wE=k-no",
"https://lh3.googleusercontent.com/grass-cs/AABkmLeO8JKvEfNG_DAu771qXRNpc3rKm8GpqX8Dbf20iV7Jm5OzH8VafJhy2Vac91cj71kzEmMWRv7M8dR5Y27YZ9VTWdR99HjnXsP1HW_rLiTP-bxQyQlx6wrxrjct1C4F8SYRyKwgzYKEzha0=k-no",
"… 2 more"
]
},
"… 58 more"
]
}

The whole picture, not only 60 reviews

Sixty reviews tell you what people say. They don't tell you how the place scores overall. With every reviews call you also get the star distribution across all of the place's reviews, and the topics Google extracts from them with a mention count for each.

For Katz's Delicatessen that is 56,122 reviews summed up in five numbers, and a list that shows "long lines" coming up in 1,512 reviews and "wait time" in 1,215. You can chart either one without reading a single review.

Katz's Delicatessen (real run, trimmed)
"rating": 4.5,
"reviewsCount": 56122,
"ratingDistribution": {
"1": 1848,
"2": 1440,
"3": 3392,
"4": 8901,
"5": 40541
},
"reviewTopics": [
{ "keyword": "pastrami", "mentions": 8794 },
{ "keyword": "sandwiches", "mentions": 2263 },
{ "keyword": "long lines", "mentions": 1512 },
{ "keyword": "wait time", "mentions": 1215 }
]

Owner replies, under the review they answer

How a business answers its reviews says a lot about it. Each review comes with the owner's reply when there is one, so you can measure how often a business replies, how fast, and to which ratings.

Reputation teams use the same data from the other side: find the reviews that still have no reply, or compare your reply rate with the places around you.

A Katz's review with its reply (real run)
{
"rating": 5,
"date": "4 months ago",
"isoDate": "2026-05-27T20:16:40.720Z",
"text": "This place is truly legendary. Had the half pastrami on rye with mustard and half corned beef. The best pastrami sandwich I've ever had. If you go at peak times, be prepared to wait in line, but I assure you it will be worth it!",
"language": "en",
"user": { "name": "[redacted]" },
"response": {
"text": "We're so glad you enjoyed your first visit - there's truly nothing we love more than making new fans! And yes, during peak hours we can get pretty packed, so the best times to try dodging the crowd are breakfast, between lunch and dinner, or late nights on the weekends. Hope to see you back again soon for round two!",
"date": "4 months ago"
}
}

Food, service and atmosphere, scored separately

Restaurant reviewers on Google can rate food, service and atmosphere on their own, and note what they paid, how long they waited and whether parking was easy. Most review exports drop this.

Spidra keeps each answer with its label, so you can average the service score on its own or see the price range people report.

One Katz's review (real run, trimmed)
"details": [
{ "label": "Price per person", "value": "$30–40" },
{ "label": "Food", "value": 5 },
{ "label": "Service", "value": 5 },
{ "label": "Atmosphere", "value": 5 },
{ "label": "Wait time", "value": "No wait" },
{ "label": "Parking space", "value": "Difficult to find parking" }
]

Ask for the columns you want

Describe the answer as a prompt, a JSON schema or both, and it comes back in that shape. The AI reads a compact copy of the data Spidra already read, not the whole page.

Request
const result = await spidra.scrape({
urls: [{ url: "https://www.google.com/maps/place/data=!4m2!3m1!1s0x89c2598f7ff4aa09:0x313547e757cb8cea" }],
prompt: "From the reviews, list the 3 most common complaints and the 3 most praised dishes.",
schema: {
type: "object",
properties: {
complaints: {
type: "array",
items: {
type: "string"
}
},
praisedDishes: {
type: "array",
items: {
type: "string"
}
}
}
},
});
What came back (real run)
{
"complaints": [
"long lines and wait times",
"high prices",
"chaotic ordering system and crowded atmosphere"
],
"praisedDishes": [
"pastrami sandwich",
"matzo ball soup",
"Reuben sandwich"
]
}

This request cost 8 credits on October 18, 2026: 1 for the page plus the AI tokens. For the data as it is, use JSON output with no prompt for 1 credit.

What teams build with it

Review data feeds reputation work, research and product decisions.

How Spidra compares

Review scrapers differ on depth, price and what they keep from each review.

Apify (Reviews Scraper)SerpApiOutscraperSpidra
1,000 reviews$0.60 down to $0.30$1.25 down to $0.10 at 20 per call$3, then $1About 17 credits at 60 per place: $0.06 down to $0.03
Reviews per placeAs many as you set8 on the first page, then up to 20 per pageAs many as you setUp to 60, most relevant first
Owner repliesYesYesYesYes
Detailed ratingsFood, service, atmosphereFood, service, atmosphere and moreNot in the data dictionaryEvery detail with its label
Star distribution and topicsWith the place scraperTopics, plus the place engineStar counts on some queriesBoth, in the same call as the reviews
OutputFixed fieldsFixed fieldsFixed fieldsFixed fields, or your own schema or prompt

Choose Apify or Outscraper if

You need every review a place has ever had, or reviews sorted by newest, in a single export.

Choose Spidra if

You want the most relevant reviews with the star distribution, topics and owner replies in one call for 1 credit, and the option to have AI summarize them in your own format.

Competitor prices are as published on their own pages on October 15, 2026 and may have changed. Spidra prices use 1 credit per place on each plan. Sources: Apify, SerpApi, Outscraper.

What to know before you build

We would rather you hear the limits from us than find them in production.

  • Each place returns up to 60 reviews, in Google's most relevant order. Newest-first sorting and reviews beyond the first 60 aren't available yet.
  • The star distribution and topics cover all of the place's reviews. The 60 reviews are a sample of them, not a random one.
  • Helpful-vote counts aren't in the review data Spidra reads, so they aren't returned. Some reviews are a star rating with no text.
  • Reviews include the reviewer's public name and profile link, as Google shows them. Handle personal data according to the privacy laws that apply to you.

What it costs

1 credit per page. Pages that can't be delivered are free. Work out your monthly volume below.

Monthly credits
3,000
Fits the Starter plan ($19/mo)

Example: 100 places a day is up to 6,000 reviews a day, about 3,000 credits a month. AI summaries add tokens on top (8 credits for the example above).

PlanPriceGoogle Maps pages a month
Free$0up to 300 (one time)
Starter$19/moup to 5,000
BuilderPopular$79/moup to 25,000
Pro$249/moup to 125,000

Credits are shared across everything Spidra does, so the same plan covers Google Maps and any other site.

Related scrapers

Same API key, same credits. See every scraper.

FAQ

Questions, answered

Google Maps

Up to 60 per place, in Google's most relevant order, for 1 credit. The same call returns the star distribution and the review topics, which cover every review the place has, so you see the overall picture even for places with tens of thousands of reviews.

Send a place link and read its reviews as data.

Get 300 free credits, no card, and pull your first 60 reviews from the dashboard or the API.

Spidra is not affiliated with, endorsed by, or sponsored by Google. Google Maps is a trademark of Google LLC. Check Google's terms of service and the privacy laws that apply to you before you collect reviews, and use the data responsibly.