Google Maps Reviews Scraper avatar

Google Maps Reviews Scraper

Pricing

from $0.25 / 1,000 record scrapeds

Go to Apify Store
Google Maps Reviews Scraper

Google Maps Reviews Scraper

Scrape Google Maps reviews at scale — no login, no limits.

Pricing

from $0.25 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

Reviewly

Reviewly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 maxReviews limit
  • 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

FeatureThis ActorMost Alternatives
No Google login needed❌ Requires OAuth token
Bulk multi-place supportOften single-place only
Auto-translated text
Language filter✅ 28 languages
Date cutoff pagination
Reviewer stats (Local Guide, review count)
Photo URLs per reviewRarely
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

FieldTypeDefaultDescription
startUrlsarrayGoogle Maps place URLs to scrape
placeIdsarrayPlace IDs in any supported format
maxReviewsinteger100Max reviews to scrape per place (1–10,000)
reviewsSortselectnewestSort order for reviews
reviewsStartDatestringStop scraping reviews older than this date (YYYY-MM-DD)
languageselectAllFilter reviews by language
personalDatabooleantrueInclude reviewer name, profile URL, avatar
proxyConfigurationobjectResidentialApify 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 URL
ChIJN1t_tDeuEmsRUsoyG83frY4 ← ChIJ (Places API)
0x47e66e1f06e2b70f:0x40b82c3688c9c610 ← Hex place ID
14724890234567890123 ← Numeric CID

Sort Options

ValueDescription
newestMost recent reviews first (recommended for monitoring)
most_relevantGoogle's default ranking
highest5-star reviews first
lowest1-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 reviewsStartDate with reviewsSort: "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

FieldTypeDescription
placeIdstringHex place ID of the scraped business
sortstringSort mode used for this run
reviewIdstringUnique review identifier
ratingintegerStar rating (1–5)
reviewTextstringOriginal review text (null if rating-only)
languagestringISO 639-1 language code (e.g. "en", "fr")
languageNamestringHuman-readable language name
translatedTextstringGoogle's auto-translation (null if same language)
relativeDatestringRelative date string from Google (e.g. "3 months ago")
photosarrayDirect URLs to review photos
reviewerNamestringReviewer's display name (personalData)
reviewerIdstringReviewer's Google ID (personalData)
reviewerProfileUrlstringLink to reviewer's Google Maps profile (personalData)
reviewerAvatarUrlstringReviewer's profile photo URL (personalData)
reviewerStatsstringReviewer badge, e.g. "Local Guide · 161 reviews" (personalData)

Fields marked (personalData) are only included when personalData is set to true.


▶️ How to Use

Option 1: Apify Console (No Code)

  1. Go to the Actor page in the Apify Store
  2. Click Try for free
  3. Paste one or more Google Maps URLs into Start URLs
  4. Set your maxReviews, sort order, and optional filters
  5. Click Start and wait for the run to finish
  6. 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)

  1. Open the Actor and click Schedules
  2. Set a daily or weekly schedule
  3. 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 maxReviews up to 10000 per place
  • Use reviewsSort: "newest" with reviewsStartDate to 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?