Google Maps Reviews Scraper
Pricing
from $0.25 / 1,000 record scrapeds
Pricing
from $0.25 / 1,000 record scrapeds
Rating
0.0
(0)
Developer
Reviewly
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Google Maps Reviews Scraper — Extract Reviews at Scale, No Login Required
Scrape hundreds of Google Maps reviews per place in minutes. No Google account, no API key, no limits. Get ratings, text, reviewer profiles, photos, and more — ready for analysis or export.
Perfect for: Reputation monitoring · Competitor research · Sentiment analysis · Lead generation · Market research
📌 What This Actor Does
This Actor extracts customer reviews from any Google Maps business listing. Paste one or more Google Maps URLs (or place IDs) and get back a structured dataset of reviews with ratings, text, dates, reviewer info, and photos.
Who is it for?
- Marketing teams tracking brand reputation across locations
- Agencies running competitor analysis for clients
- Developers building sentiment analysis or review aggregation tools
- Data analysts researching consumer trends and ratings
✨ Key Features
- No authentication required — works without a Google account or OAuth tokens
- Bulk scraping — process multiple places in a single run
- Flexible input — accepts Google Maps URLs, place IDs (hex, ChIJ, CID), or a mix of both
- Sort control — scrape by Newest, Most Relevant, Highest, or Lowest rated reviews
- Date filtering — stop pagination automatically when reviews are older than your cutoff date
- Language filter — return only reviews in a specific language (28 languages supported)
- Auto-pagination — fetches all pages automatically up to your
maxReviewslimit - Translation support — captures Google's auto-translated text alongside the original
- Photo URLs — includes direct links to review photos
- Privacy-ready — toggle off personal data (reviewer names, profile URLs) to stay GDPR-compliant
- Residential proxy support — built-in proxy rotation to avoid blocks
🧠 Why This Actor is Different
| Feature | This Actor | Most Alternatives |
|---|---|---|
| No Google login needed | ✅ | ❌ Requires OAuth token |
| Bulk multi-place support | ✅ | Often single-place only |
| Auto-translated text | ✅ | ❌ |
| Language filter | ✅ 28 languages | ❌ |
| Date cutoff pagination | ✅ | ❌ |
| Reviewer stats (Local Guide, review count) | ✅ | ❌ |
| Photo URLs per review | ✅ | Rarely |
| GDPR personalData gate | ✅ | ❌ |
Most Google Maps review scrapers on the market require you to supply a personal Google OAuth refresh token, which ties the scraper to your own account and risks account bans. This Actor requires no authentication at all — it uses the same public API key bundled in the Google Maps iOS app, so your account is never at risk.
⚙️ Input Configuration
Input Fields
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | — | Google Maps place URLs to scrape |
placeIds | array | — | Place IDs in any supported format |
maxReviews | integer | 100 | Max reviews to scrape per place (1–10,000) |
reviewsSort | select | newest | Sort order for reviews |
reviewsStartDate | string | — | Stop scraping reviews older than this date (YYYY-MM-DD) |
language | select | All | Filter reviews by language |
personalData | boolean | true | Include reviewer name, profile URL, avatar |
proxyConfiguration | object | Residential | Apify proxy settings |
Supported Place ID Formats
You can pass places using any of these formats in startUrls or placeIds:
https://www.google.com/maps/place/Eiffel+Tower/@48.8584... ← Google Maps URLChIJN1t_tDeuEmsRUsoyG83frY4 ← ChIJ (Places API)0x47e66e1f06e2b70f:0x40b82c3688c9c610 ← Hex place ID14724890234567890123 ← Numeric CID
Sort Options
| Value | Description |
|---|---|
newest | Most recent reviews first (recommended for monitoring) |
most_relevant | Google's default ranking |
highest | 5-star reviews first |
lowest | 1-star reviews first |
Example Input (JSON)
{"startUrls": [{ "url": "https://www.google.com/maps/place/Eiffel+Tower/@48.8584,2.2945,17z" },{ "url": "https://www.google.com/maps/place/Louvre+Museum/@48.8606,2.3376,17z" }],"maxReviews": 500,"reviewsSort": "newest","reviewsStartDate": "2024-01-01","language": "en","personalData": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Tip: Use
reviewsStartDatewithreviewsSort: "newest"to efficiently collect only recent reviews without downloading the entire review history.
📤 Output Format
Each review is saved as a separate record in the Apify dataset.
Sample Output
{"placeId": "0x48761b2b32ecd5b1:0xa9d484d5c5bfbbb4","sort": "newest","reviewId": "ChdDSUhNMG9nS0VJQ0FnSUQtNXZfcWdnRRAB","rating": 5,"reviewText": "Amazing place, great atmosphere and friendly staff!","language": "en","languageName": "English","translatedText": null,"relativeDate": "a week ago","photos": ["https://lh5.googleusercontent.com/p/AF1QipN..."],"reviewerName": "John Smith","reviewerId": "108234567890123456789","reviewerProfileUrl": "https://www.google.com/maps/contrib/108234567890123456789","reviewerAvatarUrl": "https://lh3.googleusercontent.com/a/...","reviewerStats": "Local Guide · 47 reviews"}
Field Reference
| Field | Type | Description |
|---|---|---|
placeId | string | Hex place ID of the scraped business |
sort | string | Sort mode used for this run |
reviewId | string | Unique review identifier |
rating | integer | Star rating (1–5) |
reviewText | string | Original review text (null if rating-only) |
language | string | ISO 639-1 language code (e.g. "en", "fr") |
languageName | string | Human-readable language name |
translatedText | string | Google's auto-translation (null if same language) |
relativeDate | string | Relative date string from Google (e.g. "3 months ago") |
photos | array | Direct URLs to review photos |
reviewerName | string | Reviewer's display name (personalData) |
reviewerId | string | Reviewer's Google ID (personalData) |
reviewerProfileUrl | string | Link to reviewer's Google Maps profile (personalData) |
reviewerAvatarUrl | string | Reviewer's profile photo URL (personalData) |
reviewerStats | string | Reviewer badge, e.g. "Local Guide · 161 reviews" (personalData) |
Fields marked (personalData) are only included when
personalDatais set totrue.
▶️ How to Use
Option 1: Apify Console (No Code)
- Go to the Actor page in the Apify Store
- Click Try for free
- Paste one or more Google Maps URLs into Start URLs
- Set your
maxReviews, sort order, and optional filters - Click Start and wait for the run to finish
- Download your dataset as JSON, CSV, or Excel
Option 2: Apify API
curl -X POST \"https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{ "url": "https://www.google.com/maps/place/..." }],"maxReviews": 200,"reviewsSort": "newest","language": "en"}'
Option 3: Scheduled Runs (Monitoring)
- Open the Actor and click Schedules
- Set a daily or weekly schedule
- Connect the output to Google Sheets, Slack, or your CRM via Apify integrations
📈 Use Cases
1. Reputation Monitoring
Track new reviews for your business locations on a weekly basis. Get notified when negative reviews appear so you can respond quickly.
2. Competitor Analysis
Scrape reviews for competitor businesses in your city. Identify recurring complaints in 1-star reviews to find gaps you can fill.
3. Sentiment Analysis
Feed review text into NLP tools (OpenAI, HuggingFace) to classify sentiment, extract topics, and detect trends over time.
4. Lead Generation for Agencies
Find businesses with low ratings and many negative reviews — these are warm leads for reputation management services.
5. Market Research
Aggregate reviews from hundreds of locations in a category (e.g. all coffee shops in Paris) to understand what customers value most.
🛠️ Advanced Tips
Getting More Reviews Faster
- Set
maxReviewsup to10000per place - Use
reviewsSort: "newest"withreviewsStartDateto skip old reviews on repeat runs - Run multiple places in parallel by adding them all to
startUrls
Proxy Configuration
Residential proxies are strongly recommended and pre-configured by default. Using datacenter proxies may result in blocks or CAPTCHAs. Keep the default RESIDENTIAL group for best results.
Processing Large Datasets
For datasets over 10,000 records, use the Apify Dataset API to stream results page by page instead of downloading all at once.
Integrations
Connect directly to:
- Google Sheets — via Apify's built-in Google Sheets integration
- Airtable / Notion — via Zapier or Make
- Your database — using the Apify API webhook on run completion
❓ FAQ
Q: Do I need a Google account or API key? No. This Actor requires no authentication whatsoever. Just paste your Google Maps URLs and run.
Q: How many reviews can I scrape per place? Up to 10,000 reviews per place per run. Google Maps itself doesn't surface more than that.
Q: Is the relativeDate field accurate?
It's approximate. Google returns relative strings like "3 months ago" rather than exact timestamps. The reviewsStartDate filter uses these strings to estimate the cutoff, with a precision of roughly ±2 weeks.
Q: Can I scrape reviews in multiple languages at once?
Yes — leave language set to "All Languages" to get reviews in every language. Use the language field in your output to filter later.
Q: Why are some reviews missing reviewText?
Some Google Maps reviews are rating-only (no written text). These are still included in the output with reviewText: null.
Q: What happens if a place has fewer reviews than maxReviews?
The Actor will scrape all available reviews and stop naturally. You won't be charged for unused capacity.
Q: Will this work on Google Maps listings outside the US? Yes — the Actor works for any Google Maps listing worldwide, in any country or language.
Q: What proxy should I use? Residential proxies are required for reliable results. The default Apify Residential proxy group is pre-selected and works out of the box.
📞 Support
Having trouble or need a custom feature?
- Email: me@ahmedhrid.com
- Issues: Use the Issues tab on this Actor's page in the Apify Store
- Apify Community: community.apify.com