Google Maps Reviews Scraper
Under maintenancePricing
from $2.00 / 1,000 review scrapeds
Google Maps Reviews Scraper
Under maintenanceScrape Google Maps place reviews by place URL or search query. Returns place metadata and individual reviews (author, rating, text, date, likes) for SMB review-velocity qualification and local lead gen.
Pricing
from $2.00 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Harsh
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape Google Maps place reviews by place URL or search query. Get place metadata (name, address, rating, review count) plus individual reviews (author, rating, text, date, likes) — ideal for SMB review-velocity qualification and local lead-gen stacks.
Pairs well with Google Maps Business Leads for listings; this Actor is reviews-focused.
Built with TypeScript and Crawlee CheerioCrawler (HTTP/HTML, no browser by default). Multi-strategy parsing (fixture cards, JSON-LD, embedded Maps payloads, meta tags, DOM review panels) with retries, rate limiting, and proxy support.
Run it on the Apify platform for scheduling, API access, proxy rotation, monitoring, and dataset exports (JSON, CSV, Excel).
What does Google Maps Reviews Scraper do?
- Accept Google Maps place URLs (preferred) and optional search queries
- Extract a place row:
placeId,name,address,rating,reviewCount,mapsUrl,scrapedAt - Extract review rows:
placeId,placeName,reviewId,author,rating,text,date,likes,scrapedAt,error - Cap volume with
maxReviewsPerPlace - Deduplicate reviews by
reviewId(fallback: author + date + text) - Export REVIEWS.csv and SUMMARY.md to the key-value store
Why use Google Maps Reviews Scraper?
- SMB qualification — measure review velocity and recent sentiment before outreach
- Local lead gen — enrich Maps leads with social proof and complaint themes
- Reputation research — track star mix and likes on competitor reviews
- Agency workflows — schedule runs via API for multi-location clients
How to use
- Open the Actor in Apify Console
- Paste one or more Google Maps place URLs (and/or search queries)
- Set Max reviews per place, delay, and proxy (residential if blocked)
- Click Start
- Download the Dataset, or REVIEWS.csv / SUMMARY.md from the key-value store
Input
| Field | Type | Default | Description |
|---|---|---|---|
placeUrls | string[] | sample place | Google Maps place page URLs (preferred) |
searchQueries | string[] | [] | Optional Maps search queries to discover places |
maxReviewsPerPlace | integer | 50 | Cap reviews collected per place |
maxConcurrency | integer | 2 | Parallel HTTP requests (keep low for Maps) |
maxRequestRetries | integer | 3 | HTTP retry count |
requestDelayMs | integer | 1000 | Delay + jitter before each request |
language | string | en | Maps hl language code |
proxyConfiguration | object | Apify Proxy on | Proxy settings |
Example:
{"placeUrls": ["https://www.google.com/maps/place/Joe%27s+Coffee/@30.2672,-97.7431,17z/data=!3m1!4b1!4m6!3m5!1s0x8644b50a0a0a0a0a:0x1111111111111111"],"searchQueries": [],"maxReviewsPerPlace": 50,"maxConcurrency": 2,"maxRequestRetries": 3,"requestDelayMs": 1000,"language": "en","proxyConfiguration": { "useApifyProxy": true }}
See examples/input.json.
Output
Dataset items use a type field:
Place record
{"type": "place","placeId": "ChIJfixture0001joescoffee","name": "Joe's Coffee","address": "123 Congress Ave, Austin, TX 78701, United States","rating": 4.7,"reviewCount": 842,"mapsUrl": "https://www.google.com/maps/place/...","scrapedAt": "2026-07-20T12:00:00.000Z","error": null}
Review record
{"type": "review","placeId": "ChIJfixture0001joescoffee","placeName": "Joe's Coffee","reviewId": "rev-fixture-001","author": "Maya L.","rating": 5,"text": "Best latte in downtown Austin. Friendly staff and quick wifi.","date": "2 weeks ago","likes": 12,"scrapedAt": "2026-07-20T12:00:00.000Z","error": null}
You can download the dataset in JSON, HTML, CSV, or Excel.
Data fields
| Field | On type | Description |
|---|---|---|
placeId | both | Google place identifier |
name | place | Business / place name |
placeName | review | Parent place name |
address | place | Formatted address |
rating | both | Aggregate or review stars (0–5) |
reviewCount | place | Total reviews shown on Maps |
mapsUrl | place | Place URL |
reviewId | review | Stable review id when available |
author | review | Reviewer display name |
text | review | Review body |
date | review | Relative or absolute date string |
likes | review | Likes / helpful votes |
scrapedAt | both | ISO scrape timestamp |
error | both | Soft error when blocked or failed |
Pricing
How much does it cost to scrape Google Maps reviews?
Pay-per-event (PPE): $0.002 per review (primary dataset item charge on apify-default-dataset-item), plus a small actor-start fee. Place rows written to the dataset are also charged as dataset items. Use maxReviewsPerPlace to control cost.
Example: 500 reviews ≈ $1.00 in result charges (plus start fee and any proxy compute).
Tips
- Prefer place URLs from Google Maps (or from the business-leads Actor) for best reliability
- Keep maxConcurrency at 1–2 and raise
requestDelayMsif you see captchas - Use Apify Proxy (residential groups when needed) — Maps blocks many datacenter IPs
- For review-velocity scoring, sort/filter by
dateand count recent reviews perplaceId - Pair with Maps leads: scrape listings first, then feed
mapsUrlvalues intoplaceUrls
Limitations
- Google Maps is heavily protected. Datacenter IPs are frequently captcha’d; use Apify Proxy
- This Actor uses Cheerio/HTTP (fast, cheap). Highly interactive review panels may not load full infinite-scroll history in raw HTML; depth depends on what Maps returns in the page payload
- Review dates may be relative strings (
"2 weeks ago") as shown on Maps - Respect Google Terms of Service, local laws, and do not use data for spam or prohibited purposes
FAQ
Why did I get zero reviews?
Likely a block/captcha or empty HTML payload. Check logs for “blocked”, enable residential proxy, lower concurrency, and increase requestDelayMs.
Can I use only search queries?
Yes — set searchQueries and leave placeUrls empty. Places found on the search page are enqueued for review extraction.
How are duplicates handled?
Reviews are deduplicated by reviewId, then by author + date + text snippet. Places are deduplicated by placeId.
Does language matter?
Set language (hl) to bias Maps UI strings and some content locale.
Changelog
1.0.0
- Initial release: place URLs + search queries, multi-strategy review extractors, place + review dataset types, CSV/Markdown export, fixture unit tests, PPE-ready
License
Apache-2.0