Google Maps Reviews Scraper — Deep Review Extraction
Pricing
Pay per usage
Google Maps Reviews Scraper — Deep Review Extraction
Extract Google Maps reviews with full depth: review text, star ratings, author profiles, review counts, photo counts, owner responses, review photos, helpful votes, and complete business details. Supports search queries and direct place URLs with multi-strategy extraction.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Ricardo Akiyoshi
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Google Maps Reviews Scraper -- Deep Review Extraction
Extract Google Maps reviews with full depth: review text, star ratings, author profiles with review/photo counts, owner responses, review photos, helpful votes, and complete business details. The highest-demand Google scraper for reputation management, competitor analysis, local SEO, and market research.
What It Does
This actor scrapes Google Maps place pages and extracts two types of structured data:
Per Review (deep extraction):
- Reviewer name, profile URL, and avatar photo URL
- Author review count (total reviews by this reviewer)
- Author photo count (total photos by this reviewer)
- Star rating (1-5)
- Full review text
- Publication date (absolute ISO and relative, e.g. "2 months ago")
- Helpful vote count (likes)
- Owner/business response text (if the business replied)
- Review photos (array of image URLs attached to the review)
- Direct review URL
Per Business:
- Business name and Google Maps URL
- Full address (street, city, state, ZIP, country)
- Phone number
- Website URL
- Overall rating (e.g. 4.3)
- Total review count
- Business category (restaurant, hotel, etc.)
- Price level ($, $$, $$$, $$$$)
- Operating hours
- GPS coordinates (latitude, longitude)
Features
- Three scraping strategies with automatic fallbacks for maximum reliability
- Embedded JSON extraction from Google's APP_INITIALIZATION_STATE and AF_initDataCallback data blobs (fastest, richest data)
- HTML/DOM parsing of review cards with 6+ selector fallbacks per field
- Google Search knowledge panel extraction as a third fallback
- Deep author data -- review count and photo count for each reviewer (Local Guide stats)
- Review photo extraction -- captures image URLs attached to individual reviews
- Search by query -- just type "pizza near Chicago" without needing a Google Maps URL
- Sort reviews by newest, most relevant, highest rating, or lowest rating
- 12 rotating User-Agent strings covering Chrome, Firefox, Safari, and Edge
- Anti-bot headers (sec-ch-ua, sec-fetch-*, Upgrade-Insecure-Requests)
- Review deduplication by composite key (author + text hash + rating)
- Multi-strategy pagination -- sort variants, language variants, review tab, mobile URL
- CAPTCHA and consent page detection with graceful shutdown
- Proxy support with strong recommendation for residential/SERP proxies
- PPE (pay-per-event) pricing -- only pay for what you scrape
Use Cases
- Reputation Management -- Monitor your own Google reviews over time, track rating trends, identify recurring complaints, and measure response rates
- Competitor Analysis -- Compare review sentiment, response rates, and ratings across competitors in your market. Identify what customers praise or criticize about competitors
- Local SEO -- Assess review volume, recency, owner response rates, and rating distributions as local search ranking factors. Find gaps in competitor review profiles
- Market Research -- Analyze what customers love and hate about businesses in a specific category or location. Discover unmet needs and opportunities
- Sentiment Analysis -- Feed review text into NLP/AI models for automated sentiment classification at scale. Track sentiment changes over time
- Lead Generation -- Find businesses with low ratings or few reviews that might need your services (marketing, consulting, review management)
- Due Diligence -- Research business quality before partnerships, investments, or acquisitions by analyzing review patterns and trends
- Academic Research -- Study consumer behavior, review patterns, rating distributions, and the impact of owner responses on subsequent reviews
Input
| Field | Type | Default | Description |
|---|---|---|---|
placeUrls | array | [] | Google Maps place/business URLs |
searchQuery | string | "" | Search for businesses (e.g. "pizza near Chicago") |
maxReviews | integer | 500 | Max reviews per business (0 = unlimited) |
sortBy | string | "newest" | Sort: newest, relevant, highest, lowest |
language | string | "en" | Language code (en, es, fr, de, ja, pt, etc.) |
proxyConfiguration | object | -- | Proxy settings (residential/SERP STRONGLY recommended) |
Example: Scrape by Google Maps URL
{"placeUrls": ["https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551","https://www.google.com/maps/place/The+Ritz-Carlton+New+York/@40.7641489,-73.9741874"],"maxReviews": 200,"sortBy": "newest","language": "en"}
Example: Search by Query
{"searchQuery": "pizza near Chicago","maxReviews": 500,"sortBy": "relevant"}
Example: Only Negative Reviews
{"placeUrls": ["https://www.google.com/maps/place/..."],"maxReviews": 100,"sortBy": "lowest"}
Output
The actor produces two types of records in the output dataset:
Business Info Record
{"type": "businessInfo","businessName": "Central Park","address": "New York, NY 10024, United States","phone": "+1 212-310-6600","website": "https://www.centralparknyc.org/","overallRating": 4.8,"totalReviews": 234567,"category": "Park","priceLevel": null,"hours": "Open 24 hours","latitude": 40.7828647,"longitude": -73.9653551,"googleMapsUrl": "https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551","scrapedAt": "2026-03-02T12:00:00.000Z"}
Review Record (Deep)
{"type": "review","businessName": "Central Park","businessUrl": "https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551","reviewerName": "John D.","reviewerProfileUrl": "https://www.google.com/maps/contrib/123456789","reviewerPhotoUrl": "https://lh3.googleusercontent.com/a/...","authorReviewCount": 87,"authorPhotoCount": 234,"rating": 5,"text": "Absolutely stunning park in the heart of Manhattan. The Bethesda Fountain area is magical during sunset. Great for running, biking, or just a peaceful walk.","publishedDate": "2026-01-15T10:30:00.000Z","relativeDate": "2 months ago","likes": 12,"ownerResponse": null,"photos": ["https://lh3.googleusercontent.com/p/AF1QipN...=s800","https://lh3.googleusercontent.com/p/AF1QipO...=s800"],"reviewUrl": "https://www.google.com/maps/reviews/data=abc123","scrapedAt": "2026-03-02T12:00:05.000Z"}
Review with Owner Response
{"type": "review","businessName": "The Ritz-Carlton New York","reviewerName": "Sarah M.","reviewerProfileUrl": "https://www.google.com/maps/contrib/987654321","reviewerPhotoUrl": "https://lh3.googleusercontent.com/a/...","authorReviewCount": 15,"authorPhotoCount": 8,"rating": 4,"text": "Beautiful hotel with excellent service. The room was spacious and clean. Only downside was the noise from the street at night.","publishedDate": "2026-02-20T00:00:00.000Z","relativeDate": "a week ago","likes": 3,"ownerResponse": "Thank you for your kind review, Sarah! We apologize for the street noise and have noted your feedback. We hope to welcome you back soon.","photos": [],"scrapedAt": "2026-03-02T12:00:10.000Z"}
Pricing (Pay-Per-Event)
This actor uses Apify's pay-per-event billing model:
| Event | Price | Description |
|---|---|---|
review-scraped | $0.004 | Per individual review extracted with full depth |
Example cost: Scraping 500 reviews = 500 x $0.004 = $2.00
You set a maximum budget per run, and the actor will never exceed it.
Proxy Recommendations
Google is one of the most aggressive anti-scraping platforms. Residential or SERP proxies are essential for reliable scraping.
| Proxy Type | Reliability | Speed | Cost |
|---|---|---|---|
| Apify SERP proxies | Excellent | Fast | Higher |
| Residential proxies | Very good | Medium | Medium |
| Datacenter proxies | Low (frequently blocked) | Fast | Low |
| No proxy | Very low | Fast | Free |
Recommendation: Use Apify SERP proxies for the best results. They are specifically optimized for Google scraping and automatically handle consent pages.
How to Run
On Apify Platform
- Go to the actor page on Apify Store
- Click "Start" or "Try for free"
- Enter Google Maps URLs or a search query
- Configure max reviews and sort order
- Click "Run"
- Download results as JSON, CSV, or Excel
Via Apify API
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/runs" \-H "Authorization: Bearer <YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"placeUrls": ["https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551"],"maxReviews": 100,"sortBy": "newest","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}'
Locally
# Clone the repositorygit clone <repo-url>cd google-reviews-scraper# Install dependenciesnpm install# Create input filemkdir -p ./storage/key_value_stores/defaultecho '{"placeUrls": ["https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551"],"maxReviews": 20}' > ./storage/key_value_stores/default/INPUT.json# Runnpm start
Technical Details
- Runtime: Node.js 18 on Apify platform
- Framework: Crawlee (CheerioCrawler) + Apify SDK v3
- Extraction: Three-strategy approach (embedded JSON, DOM parsing, knowledge panel)
- Deduplication: MD5 hash of (author + text snippet + rating)
- Rate limiting: 12 requests/minute, 2 concurrent requests max
- Retries: 3 automatic retries per failed request
- User-Agents: 12 rotating strings (Chrome, Firefox, Safari, Edge)
- Memory: ~256 MB recommended for typical runs
Limitations
- Google Maps loads additional reviews via JavaScript (AJAX/XHR). Since this actor uses CheerioCrawler (no browser rendering), it extracts reviews from the initial HTML payload. The actor compensates with multi-strategy pagination (sort variants, language variants, review tab URL).
- Google aggressively blocks scrapers. Without residential or SERP proxies, most requests will be blocked.
- Google frequently changes class names and page structure. The actor uses 6+ selector fallbacks per field, but some changes may require updates.
- Review text may be truncated for very long reviews on Google Maps.
- Author review count and photo count are only available when Google includes Local Guide stats in the page data.
- The
searchQueryinput returns reviews for the top-matching businesses (up to 4). For precise targeting, use directplaceUrls.
Changelog
v1.0 (2026-03-02)
- Initial release
- Three-strategy extraction (embedded JSON, DOM parsing, knowledge panel)
- Deep author data (review count, photo count)
- Review photo extraction
- Review deduplication by composite key
- Multi-strategy pagination (sort, language, review tab, mobile)
- CAPTCHA and consent page detection
- 12 rotating User-Agents with anti-bot headers
- PPE billing integration ($0.004 per review)
Support
Built by Sovereign AI. For issues, feature requests, or custom scraping needs:
- Email: ricardo.yudi@gmail.com
- GitHub: https://github.com/ryudi84
Integration — Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("sovereigntaylor/google-reviews-scraper").call(run_input={"placeId": "ChIJN1t_tDeuEmsRUsoyG83frY4","maxResults": 100})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item.get('author', 'Anonymous')}: {item.get('rating', 0)} stars")
Integration — JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('sovereigntaylor/google-reviews-scraper').call({placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4',maxResults: 100});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(item => console.log(item.author || item.name || 'N/A'));