Google Maps Reviews Scraper | Fast & Low Cost Export avatar

Google Maps Reviews Scraper | Fast & Low Cost Export

Pricing

from $0.05 / 1,000 results

Go to Apify Store
Google Maps Reviews Scraper | Fast & Low Cost Export

Google Maps Reviews Scraper | Fast & Low Cost Export

⚡ Extract Google Maps reviews flawlessly at ultra-low costs ($0.05/1k results). Features automated website matching, asset blocking to cut compute bills, and dataset resume support. Scrape full review text, Local Guide metrics, translations, images, and owner replies instantly.

Pricing

from $0.05 / 1,000 results

Rating

5.0

(1)

Developer

ScrapeCraft

ScrapeCraft

Maintained by Community

Actor stats

2

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

⭐ Google Maps Reviews Scraper

Scrape all reviews from any Google Maps listing — one dataset row per review, with reviewer details, star ratings, photos, and owner replies.


✅ What You Get

DataDetails
👤 ReviewerName, profile URL, photo, review count, Local Guide status
✍️ ReviewFull text, translated text, star rating, likes
📅 DateRelative date ("a month ago") + parsed timestamp
📸 PhotosImage URLs attached to the review
💬 Owner ReplyResponse text and date when present
🌐 LanguageOriginal and translated language codes

Place details (name, address, phone) are saved separately in the Key-Value Store under OUTPUT_METADATA — not repeated on every row.


🚀 Quick Start

You need at least one of these:

  • A business name (search query)
  • A Google Maps URL
  • A Google Maps CID
  • A Google Place ID

⚙️ Input Options

🔍 Option 1 — Search by Business Name (most common)

{
"searchQuery": "NETSOL Technologies Ltd.",
"website": "https://www.netsoltech.com/",
"maxReviews": 0,
"language": "en",
"proxyConfig": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

💡 maxReviews: 0 means scrape all reviews. Add website to make sure the right listing is matched.


🔗 Option 2 — Google Maps URL

{
"url": "https://www.google.com/maps/place/NETSOL+Technologies/@31.5204,74.3587,17z",
"maxReviews": 100
}

🆔 Option 3 — CID or Place ID

{
"cid": "15430805186958748717",
"maxReviews": 50,
"language": "en"
}

⚠️ Always keep CIDs in quotes — they can exceed JavaScript's safe integer range.


🛠️ All Input Fields

FieldTypeDefaultDescription
searchQuerystringBusiness name to search on Google Maps
websitestringCompany website — helps match the correct listing
urlstringDirect Google Maps place URL
placeIdstringGoogle Place ID
cidstringGoogle Maps CID
maxReviewsinteger0Max reviews to collect (0 = all)
languagestringenReview language code (e.g. en, es, fr, de)
maxReviewAgestringFilter by age, e.g. 6 months, 1 year, 3 years
resumeDatasetIdstringResume a previous run — skips already-scraped reviews
blockAssetsbooleantrueBlock images/fonts to save bandwidth
proxyConfigobjectApify proxy config — residential proxies recommended

📦 Output Example

Each review is one row in the dataset:

{
"name": "Daniyal Saqib",
"stars": 4,
"text": "Amazing ambience and hospitality. Truly a fine experience.",
"publishedAtDate": "2026-04-21T15:35:49.034Z",
"publishAt": "a month ago",
"isLocalGuide": true,
"reviewerNumberOfReviews": 143,
"likesCount": 0,
"responseFromOwnerText": null,
"reviewImageUrls": ["https://lh3.googleusercontent.com/..."],
"originalLanguage": "en",
"scrapedAt": "2026-05-21T15:35:46.577Z"
}

📁 Place Summary (Key-Value Store)

The place details are saved once under OUTPUT_METADATA:

{
"place": {
"name": "NETSOL Technologies Ltd.",
"overallRating": 4.4,
"totalReviews": 1410,
"address": "...",
"phone": "...",
"website": "https://www.netsoltech.com/"
},
"reviewsCount": 1408,
"scrapedAt": "2026-05-21T15:35:46.577Z"
}

❓ FAQ

How do I scrape all reviews? Set maxReviews to 0 (the default).

My search matched the wrong business — what do I do? Add the website field. The actor uses it to verify the correct listing was found.

Can I continue a previous run? Yes — paste the previous run's dataset ID into resumeDatasetId and already-scraped reviews will be skipped.

How do I filter by review age? Set maxReviewAge (e.g. 6 months) — works best combined with sortMode: "newest".

Which proxy should I use? Residential proxies are recommended for Apify Cloud runs to get complete, reliable results.