Google Maps Reviews Scraper: Extract Ratings, Text and Owner Replies Without an API
How to pull Google Maps place reviews at scale — star ratings, full text, reviewer details and owner responses — for any hotel, restaurant, shop or attraction.
The actor referenced in this article. Pay only for results delivered.
Google Maps is the de facto review platform for local businesses: hotels, restaurants, shops, clinics, law firms. Customers check it before every purchase decision. The reviews on a Maps listing can make or break a quarter for a small business — and they are almost impossible to monitor at scale using the native interface.
The Google Maps Reviews Scraper pulls structured review data from any Maps place URL: star rating, reviewer name, full review text, date, owner response and photo count. No Google Maps API key, no $200/month Cloud billing. $0.003 per review, nothing charged on failed extractions.
What You Get Per Review
For each review the actor returns:
- rating — integer 1–5
- reviewerName + reviewerUrl — linked to their Google profile
- reviewText — full text, with “More” expansion handled automatically
- reviewDate — as displayed on Maps (relative: “3 months ago”)
- ownerResponse — the business owner’s reply, or null if no reply
- photoCount — number of photos attached to the review
- placeId + placeName — for joining results across multiple runs
Pull Reviews in Python
import os
from apify_client import ApifyClient
apify = ApifyClient(os.environ["APIFY_TOKEN"])
# Paste the full Google Maps URL for your target place
places = [
"https://www.google.com/maps/place/Nobu+Restaurant+London/@51.5007,0.1246,17z",
"https://www.google.com/maps/place/Four+Seasons+Hotel+Mumbai/",
]
run = apify.actor("themineworks/google-maps-reviews").call(run_input={
"placeUrls": places,
"maxReviews": 200,
"sortBy": "newest",
"language": "en",
})
reviews = list(apify.dataset(run["defaultDatasetId"]).iterate_items())
for r in reviews:
if r.get("_type") == "summary":
continue
print(f"{r['placeName']} | {r['rating']}★ | {r['reviewDate']}")
print(f" {r['reviewerName']}: {r.get('reviewText', '')[:100]}...")
if r.get("ownerResponse"):
print(f" [Owner replied]")
Sort Options
The sortBy field controls which reviews come first:
| Value | Description |
|---|---|
newest | Most recent reviews first — best for monitoring |
most_relevant | Google’s default ranking |
highest_rating | 5-star reviews first |
lowest_rating | 1-star reviews first — useful for complaint analysis |
For reputation monitoring workflows, newest is the default and most useful — you always see what customers said last week before anything else.
Use It as an MCP Tool in Claude
{
"mcpServers": {
"maps-reviews": {
"command": "npx",
"args": ["-y", "@apify/mcp-client"],
"env": {
"APIFY_TOKEN": "your-token-here",
"MCP_ACTOR_URL": "https://mcp.apify.com/?tools=themineworks/google-maps-reviews"
}
}
}
}
Once connected, you can paste a Google Maps URL into Claude and ask it to summarise the recent reviews, identify the most common complaints, or flag reviews that need an owner response. Claude calls the actor, receives the review data, and reasons over it directly.
A practical pattern for multi-location businesses: give Claude a list of 20 branch URLs and ask it to rank them by average rating, identify the branch with the most unanswered 1-star reviews, and draft a response template for the three most common complaints across all locations.
Use Cases
Reputation management at scale. Track competitor and own-brand ratings across dozens of locations. Set up a weekly run sorted by newest to catch new reviews before they compound.
Competitive benchmarking. Compare your restaurant’s 4.3 average to the three closest competitors. Which attributes (food, service, value) are reviewers praising or criticising most? The full text lets you do semantic analysis that a star average never could.
Local SEO content. Google Maps reviews are a goldmine of the exact language your customers use to describe your product or service. Mining that vocabulary improves ad copy, landing pages and structured data.
Training sentiment models. Labelled review data (rating 1–5 paired with free text) is high-quality training signal for sentiment classifiers. Unlike synthetic datasets, these are real customer opinions on real businesses.
Pricing
Each review costs $0.003. Scraping 1,000 reviews from a single highly-reviewed restaurant costs $3. A monthly monitoring sweep across 50 locations at 50 reviews each costs $7.50.
Reviews that fail to extract (network error, place not found) are never charged.
Frequently Asked Questions
Do I need a Google Maps API key?
No. The actor uses a real browser with Apify residential proxy to access publicly visible Maps pages. No Google Cloud project, no billing account, no API quota.
How many reviews can I get per place?
Up to 1,000 per run with the default settings. Most businesses have far fewer than that. The actor scrolls the reviews panel automatically to load more — set maxReviews to limit the count and run time.
What format is the review date?
Google Maps shows relative dates (“3 months ago”, “a week ago”). The actor captures the raw displayed text. If you need ISO dates, a secondary enrichment step (fetching the place’s full review JSON via the Maps Embed API or similar) would be required — that is outside the scope of this actor.
Does it capture photos attached to reviews?
The photoCount field records how many photos a reviewer attached, but not the photo URLs themselves. The photos live behind an authenticated session and are not accessible without login.
Explore the scraper referenced in this article — see inputs, outputs, and pricing, then run it on Apify.
Airbnb Scraper: Listing Prices, Ratings, and Availability Without the API
Airbnb has no public listings API. Here's how to pull nightly price, rating, superhost status and coordinates from Airbnb search results using Python.
Maps Leads: Verified Email Extraction from Google Maps Business Listings
How to pull B2B leads from Google Maps with MX-verified emails, past the official API's 120-result cap, and pay only for contactable businesses.
Realtor.com Scraper: Property and Agent Data Without the MLS Paywall
Scrape Realtor.com listings in Python — price, beds, baths, county, and the listing agent + brokerage office on every record. No login, no API key.