# Google Maps POI & Review Scraping

Complete guide to scraping Google Maps POI data and reviews — 70+ tools across 20 categories. Compiled June 2026.

# Official Google APIs

Places API (New), Business Profile API, pricing, field masks

# Places API (New) — Overview & Pricing

## Places API (New)

The current-generation API replacing the legacy Places API. Uses a mandatory **field mask** in every request — omitting it returns an error. Billing is determined by the highest-tier field requested.

### Three-Tier SKU Billing

<table id="bkmrk-tierwhat%27s-includedc"><tr><th>Tier</th><th>What's Included</th><th>Cost</th></tr><tr><td>**Essentials**</td><td>Place ID, name, address, location, types, business status</td><td>Lowest</td></tr><tr><td>**Pro**</td><td>Phone, website, opening hours, price level, photos</td><td>Medium</td></tr><tr><td>**Enterprise**</td><td>Reviews, ratings, userRatingCount, editorial summary, atmosphere data</td><td>Highest (~$17-35/1K requests)</td></tr></table>

### Subscription Plans

<table id="bkmrk-plancostcallssavings"><tr><th>Plan</th><th>Cost</th><th>Calls</th><th>Savings</th></tr><tr><td>Pay-as-you-go</td><td>Variable</td><td>Unlimited</td><td>Baseline</td></tr><tr><td>Starter</td><td>$100/mo</td><td>50K</td><td>Moderate</td></tr><tr><td>Pro</td><td>$1,200/mo</td><td>250K</td><td>Up to $5,000 vs PAYG</td></tr><tr><td>Enterprise</td><td>Custom</td><td>Custom</td><td>Negotiated</td></tr></table>

### Key API Operations

- **Place Details** — full data for a known place\_id
- **Text Search** — search by query string (e.g., "restaurants in Berlin")
- **Nearby Search** — search within a radius of coordinates
- **Autocomplete** — predictive place suggestions
- **Place Photos** — retrieve photos by reference

### Rate Limits

Enforced **per API method per project** (unlike legacy API which aggregated all methods). Default ~600 requests/minute; increases require contacting Google support.

### Free Tier Status (2026)

**Warning:** The previously documented "$200 monthly credit" and "10,000 free calls" claims were both refuted during adversarial verification. Verify directly at [mapsplatform.google.com/pricing](https://mapsplatform.google.com/pricing/).

### Data Fields (50+)

Name, formatted address, address components, phone, international phone, website, opening hours (regular + secondary), business status, price level, rating, user rating count, reviews (text/author/rating/time/language — **max 5 per place**), photos, types, coordinates, viewport, place ID, URL, UTC offset, plus 20+ boolean amenities (delivery, dineIn, takeout, outdoorSeating, liveMusic, allowsDogs, etc.).

#### New-Only Fields (Not in Legacy API)

`regularSecondaryOpeningHours`, `paymentOptions`, `parkingOptions`, `subDestinations`, `fuelOptions`, `evChargeOptions`, `shortFormattedAddress`, `primaryType`, `primaryTypeDisplayName`

### Sources

- [Usage and Billing](https://developers.google.com/maps/documentation/places/web-service/usage-and-billing)
- [Data Fields Reference](https://developers.google.com/maps/documentation/places/web-service/data-fields)
- [Operations Overview](https://developers.google.com/maps/documentation/places/web-service/op-overview)
- [Maps Platform Pricing](https://mapsplatform.google.com/pricing/)

# Google Business Profile API

## Google Business Profile API

Access **all reviews** (not limited to 5) — but only for locations you own or manage. Requires OAuth2 authentication.

### Key Endpoints

<table id="bkmrk-endpointpurpose-acco"><tr><th>Endpoint</th><th>Purpose</th></tr><tr><td>`accounts.locations.reviews.list`</td><td>All reviews for one location</td></tr><tr><td>`accounts.locations.batchGetReviews`</td><td>Batch review extraction across locations</td></tr></table>

Returns: reviewId, starRating, comment text, creation/update timestamps. Free for business owners.

### Google Takeout Alternative

Business owners can download all reviews from their GBP as JSON via Google Takeout (free, official).

Source: [Business Profile API — Review Data](https://developers.google.com/my-business/content/review-data)

# Reverse-Engineered Internal Endpoints

Protobuf APIs, tbm=map, APP\_INITIALIZATION\_STATE, pagination

# Protobuf Endpoints & Internal APIs

## Google Maps Internal Protobuf API

Google Maps communicates with its backend using **Protocol Buffer (protobuf) encoding** over HTTP. Several internal endpoints have been documented.

### tbm=map Search Endpoint

Adding `tbm=map` to a Google search returns protobuf-over-JSON instead of HTML. Single HTTP request, no browser rendering needed.

```
https://www.google.com/search?tbm=map&hl=en&q=restaurants+in+berlin&tch=1&ech=1
```

Returns: nested arrays parseable with JSON indexing — business names, ratings, review counts, categories, addresses, coordinates, thumbnails.

### /maps/preview/place — Place Details

Returns protobuf-over-JSON place details via a `pb` parameter with feature ID embedded. More stable than HTML scraping — follows internal schema, not frontend layout.

### /maps/vt/pb — Tile Endpoint

Map tile requests containing ~730 fields across ~125 protobuf messages. Uses `!`-separated text-based protobuf with type characters (s, i, d, f, j, u, v, x, y, g, h, n, o, e, z, B, b, m).

### window.APP\_INITIALIZATION\_STATE

Google Maps embeds data in `window.APP_INITIALIZATION_STATE` in the HTML response. No headless browser needed:

```
JSON.parse(window.APP_INITIALIZATION_STATE[3][2].split("'\n")[1])
```

*Source: r/webscraping*

### Protobuf Pagination Details

- **PSI parameter**: stored in `window.APP_OPTIONS[11]`, changes after each page reload — no static URL construction possible
- **Altitude formula**: `altitude = (27.3611 * 6371010 * 768 * cos(lat)) / (2^zoom * 256)`
- **Pagination**: `!7i20` = 20 results/page, `!8i[offset]` = offset (increments of 20)
- **Responses**: served through `f.txt` endpoint with "XHR1" signature

### Data Available

Potentially *everything* visible in the Maps UI: full review text with timestamps, all photos, Q&amp;A, popular times histograms, wait times, related places, owner responses — far exceeding the official API's 5-review limit.

### Fragility Warning

Google's cryptographic constants rotate continuously. SearchGuard makes "reverse-engineered bypasses obsolete within minutes." One Reddit user reported successfully building a pure HTTP/protobuf scraper that reduced costs from $50K/mo to $1K/mo — but maintenance is constant.

# Protobuf Tools & Decoders

## Protobuf Tools

<table id="bkmrk-toollanguagepurposel"><tr><th>Tool</th><th>Language</th><th>Purpose</th><th>Link</th></tr><tr><td>**pbtk**</td><td>Python</td><td>Extract and fuzz protobuf structures from Chrome</td><td>[GitHub](https://github.com/marin-m/pbtk)</td></tr><tr><td>**google-maps-pb-decoder**</td><td>Ruby</td><td>Decode pb URL params to JSON</td><td>[GitHub](https://github.com/serpapi/google-maps-pb-decoder)</td></tr><tr><td>**deproto**</td><td>Python</td><td>Decode, manipulate, re-encode protobuf strings (round-trip conversion)</td><td>[GitHub](https://github.com/MrDebugger/deproto)</td></tr></table>

### XHR/Network Interception

Intercept browser XHR requests during Google Maps navigation; responses contain protobuf-encoded data with "XHR1" signature. Use CDP `Network.requestWillBeSent` event + `history.replaceState()` hooks. Supported by Puppeteer request interception and Playwright route handlers.

### Sources

- [SerpAPI — Reverse Engineering Maps Pagination](https://serpapi.com/blog/how-we-reverse-engineered-google-maps-pagination/)
- [$5K Google Maps XSS via Protobuf](https://medium.com/@marin_m/how-i-found-a-5-000-google-maps-xss-by-fiddling-with-protobuf-963ee0d9caff)
- [Scrape.do — Maps Scraping Guide](https://scrape.do/blog/google-maps-scraping/)

# Browser Automation & DIY Techniques

Playwright, Puppeteer, Selenium, community tricks from Reddit

# Headless Browser Automation (Playwright, Puppeteer, Selenium)

## Browser Automation Frameworks

The foundation technique used by most scrapers. A browser renders Maps, executes JS, and extracts from the DOM.

### Playwright (Most Popular)

Microsoft's library. Used by gosom/google-maps-scraper, HasData, many commercial tools. Supports Chromium, Firefox, WebKit.

- Languages: Python, Node.js, Java, .NET
- Anti-detect: stealth plugins available
- Parallel tabs: 10+ tabs in one browser, ~1.7s/URL
- Codegen: record browser interactions, auto-generate scraper code

### Puppeteer (Node.js)

Google's Node.js browser automation. `puppeteer-extra-plugin-stealth` provides 17 evasion modules.

- Best stealth ecosystem (17 modules)
- XHR interception via `Network.requestWillBeSent`
- Caveat: anti-bot companies study the stealth package

### Selenium (Legacy)

Original framework. `undetected-chromedriver` patches for detection evasion.

- Languages: Python, Java, C#, Ruby, JS
- Larger fingerprint, easier to detect
- Still used by HasData and Zubdata scrapers

### Extraction Strategies

<table id="bkmrk-strategytoken-costwh"><tr><th>Strategy</th><th>Token Cost</th><th>When to Use</th></tr><tr><td>CSS selectors (`querySelectorAll`)</td><td>~52/item</td><td>Known structure — default choice</td></tr><tr><td>`aria-label` attributes</td><td>~52/item</td><td>More resilient — accessibility attrs are stabler than CSS classes</td></tr><tr><td>`body.innerText`</td><td>~5K/page</td><td>Discovery — learn structure once, then switch</td></tr><tr><td>Network/XHR interception</td><td>Minimal</td><td>Capture protobuf responses directly — best approach</td></tr><tr><td>Accessibility tree (filtered)</td><td>~28K/page</td><td>Find buttons, forms, interactive elements</td></tr><tr><td>Screenshot</td><td>~132K</td><td>CAPTCHA solving, visual debugging only</td></tr></table>

# DIY Scraping Techniques (Reddit & Community)

## Community-Sourced Techniques

Practical techniques from Reddit, HN, and forums — the stuff not in vendor blog posts.

### Grid-Scanning / Map Splitting (Essential)

Overcome the **120-result limit** per search by dividing areas into smaller grid cells. Auto-adjust zoom to ~16 per cell. Can use QGIS + Python to generate coordinate grids. Tune tightness to urban density.

```
https://www.google.com/maps/search/{query}/@{lat},{long},16z
```

Used by every serious scraper (gosom, Apify actors, Octoparse). Hexagonal grid sampling is the academic version.

### "Search in This Area" Automation

Moving the map and clicking "search in this area" reveals different/more results than initial search. Automate by systematically panning across coordinates.

### HTTP-Only / No Browser Approach (50x Cheaper)

Replicate Google Maps' internal protobuf HTTP calls directly — no headless browser. One HN user reduced costs from **$50K/mo to $1K/mo**. "Built entirely with cURL, avoiding headless browsers since they're really slow." Google rarely updates their map API structure.

### Dual-Architecture Engine

Use high-performance HTTP extraction for bulk data, only spin up headless browsers for dynamic elements. Extracts Booking URL, FID, CID from metadata. Faster than pure Playwright/Puppeteer.

### Place ID Pre-Extraction

Get Place IDs first (cheap/fast), then pipe them for direct detail extraction without browser search overhead — data comes back "almost instantly."

### CID-Based Direct Access

CID (Customer ID) is a 64-bit decimal that **never changes**, even through rebrand/relocation. More permanent than Place ID (which expires after 12 months).

```
https://www.google.com/maps/place/?cid=<CID_NUMBER>
```

Find CID: URL `?cid=` parameter, or inspect Knowledge Panel for "ludocid".

Reference: [Scrap.io CID Guide](https://scrap.io/place-id-google-id-cid-complete-guide), [CID Converter](https://daltonluka.com/blog/cid-converter)

### LLM-Powered Query Expansion

Use LLMs to generate search term synonyms to overcome per-query result limits. "dentist" becomes "dental clinic", "oral surgeon", "dental practice", "orthodontist" etc. Multiplies coverage without geographic splitting.

### Other Community Tricks

- **Ctrl+S page saving**: Bot performs search, saves entire page, parses offline later
- **Google Search local pack mining**: Harvest Maps data from regular Google SERPs (lower detection risk)
- **`udm=1` parameter**: Returns Google Places tab results — but needs browser context for location
- **Geocoding API grid trick**: Grid area, geocode lat/lng to addresses, dedupe. 80%+ coverage
- **"No website" filter**: Gold mine for web dev agencies — scrape businesses without websites

### Sources

- [r/webscraping — Scraping GMaps at Scale](https://www.reddit.com/r/webscraping/comments/1fgcgrm/)
- [r/SaaS — Dual-Architecture GMaps Scraper](https://www.reddit.com/r/SaaS/comments/1p1tqmg/)
- [r/webscraping — Google Maps Data Extraction](https://www.reddit.com/r/webscraping/comments/13ew520/)

# Commercial Platforms & Search API Proxies

Outscraper, Apify, Bright Data, SerpAPI, Serper.dev, etc.

# Commercial Scraping Platforms

## Commercial Scraping Platforms

### Outscraper (Best Value)

<table id="bkmrk-pricing%241-3%2F1k-recor"><tr><td>Pricing</td><td>**$1-3/1K records** (basic); ~$14/1K full enrichment</td></tr><tr><td>Free Tier</td><td>500 records (first 500 reviews free)</td></tr><tr><td>Fields</td><td>74 fields incl. name, address, phone, hours, rating, reviews, photos, emails</td></tr><tr><td>Reviews</td><td>Full text, not limited to 5</td></tr><tr><td>Real-world</td><td>Reddit user: $50 for 20K listings, ~6,500 usable after dedup</td></tr></table>

### Apify (Marketplace)

<table id="bkmrk-pricing%241.50-4%2F1k-pl"><tr><td>Pricing</td><td>**$1.50-4/1K places** (varies by actor)</td></tr><tr><td>Free</td><td>$5 monthly platform credit</td></tr><tr><td>Fields</td><td>25+ core + enrichment actors for emails/social</td></tr><tr><td>Tips</td><td>Set `maxCrawledPlaces` to 9999999 for all results. Niche searches have 75-80% junk rate</td></tr><tr><td>Actors</td><td>compass/crawler-google-places, beatanalytics/google-maps-reviews-scraper</td></tr></table>

### Bright Data (Enterprise)

<table id="bkmrk-dataset200.7m%2B-pre-s"><tr><td>Dataset</td><td>**200.7M+ pre-scraped records** at $0.0025/record ($250/100K)</td></tr><tr><td>Scraper API</td><td>From $500/mo + proxy costs</td></tr><tr><td>Proxy Network</td><td>72M+ residential IPs — industry's largest</td></tr></table>

### Other Commercial Services

<table id="bkmrk-servicepricingkey-fe"><tr><th>Service</th><th>Pricing</th><th>Key Feature</th></tr><tr><td>Scrap.io</td><td>From EUR 35/mo (10K leads)</td><td>Simplest UX, radius/polygon search, count preview, 200M+ places</td></tr><tr><td>ScrapFly</td><td>~$3.37/1K requests</td><td>General-purpose, credit-based, 99% success rate</td></tr><tr><td>LocalAPI</td><td>Free tier: 50 searches</td><td>Only API exposing Popular Times histograms</td></tr><tr><td>HasData</td><td>API plans</td><td>Cloud-powered, built-in email finder</td></tr><tr><td>Leads-Extractor.com</td><td>Various</td><td>Dedicated Maps scraper</td></tr><tr><td>MapSHunt.com</td><td>Various</td><td>Prioritizes businesses with websites, crawls for emails/social</td></tr><tr><td>LocalProspects</td><td>Various</td><td>Auto-crawls for owner name, emails, mobile phones</td></tr><tr><td>GeoScraper</td><td>Unlimited/mo</td><td>Reviews scraper + email/social extraction</td></tr><tr><td>Minelead</td><td>Various</td><td>Email finder for Maps businesses</td></tr><tr><td>Estrattore Dati</td><td>Various</td><td>Email and phone extraction</td></tr></table>

### Cost Comparison (per 1,000 POI records)

<table id="bkmrk-platformbasic-poiwit"><tr><th>Platform</th><th>Basic POI</th><th>With Reviews</th><th>With Enrichment</th></tr><tr><td>Outscraper</td><td>$1-3</td><td>$5-8</td><td>~$14</td></tr><tr><td>Apify</td><td>$1.50-4</td><td>$3-6</td><td>$5-10</td></tr><tr><td>Bright Data (dataset)</td><td>$2.50</td><td>Included</td><td>Included</td></tr><tr><td>Scrap.io</td><td>~$3.50</td><td>Extra</td><td>Extra</td></tr><tr><td>ScrapFly</td><td>$3.37+</td><td>Same</td><td>Same</td></tr><tr><td>PhantomBuster</td><td>$50-80</td><td>N/A</td><td>N/A</td></tr><tr><td>Google Places API</td><td>$17-35</td><td>Enterprise tier</td><td>Enterprise tier</td></tr></table>

# Search API Proxies (SerpAPI, Serper, etc.)

## Search API Proxies

Services that handle scraping/anti-bot, returning clean JSON from Google Maps queries.

<table id="bkmrk-servicepricingspeedn"><tr><th>Service</th><th>Pricing</th><th>Speed</th><th>Notes</th></tr><tr><td>**SerpAPI**</td><td>$50/5K queries</td><td>Standard</td><td>Market leader. Active DMCA lawsuit from Google (Dec 2025)</td></tr><tr><td>**Serper.dev**</td><td>~$1/1K queries; $0.30/1K at volume</td><td>~2.87s</td><td>2,500 free queries. SERP-based Maps results</td></tr><tr><td>**Scrapingdog**</td><td>$0.33/1K</td><td>3.05s</td><td>100% success rate (benchmarked), fastest</td></tr><tr><td>**Scrape.do**</td><td>$1.16/1K</td><td>1.73s</td><td>AI Overview detection</td></tr><tr><td>**ScraperAPI**</td><td>$50/4K searches</td><td>Standard</td><td>Maps in all plans</td></tr><tr><td>**ScrapeBadger**</td><td>Competitive</td><td>Standard</td><td>Review support</td></tr><tr><td>**DataForSEO**</td><td>Pay-per-task</td><td>Standard</td><td>Maps SERP + reviews endpoints</td></tr><tr><td>**Oxylabs SERP**</td><td>From $49/mo</td><td>Standard</td><td>Enterprise SERP API</td></tr><tr><td>**ValueSERP**</td><td>Various</td><td>~40s (slow)</td><td>Some user complaints</td></tr><tr><td>**Zenserp**</td><td>From $30/mo</td><td>Standard</td><td>Multi-engine support</td></tr></table>

### SerpAPI Details

Accepts standard Google Maps query syntax (`q=restaurants+in+Berlin`), returns structured JSON with: title, address, phone, rating, reviews, hours, service\_options, GPS coordinates, place\_id, data\_cid, price, type, photos, thumbnails.

Separate endpoint for individual place reviews.

**Legal warning:** Google v. SerpAPI (Dec 2025) — active DMCA lawsuit with ruling pending.

# Open-Source Scrapers & Python Libraries

GitHub repos, populartimes, gomaps, review scrapers

# Open-Source GitHub Scrapers

## Open-Source Scrapers

<table id="bkmrk-repositorylanguagest"><tr><th>Repository</th><th>Language</th><th>Stars</th><th>Fields</th><th>Key Feature</th></tr><tr><td>[gosom/google-maps-scraper](https://github.com/gosom/google-maps-scraper)</td><td>Go</td><td>4,200</td><td>33+</td><td>120 places/min, CLI/Web/REST, K8s-ready, email extraction, SOCKS5/HTTP/HTTPS proxy rotation</td></tr><tr><td>[omkarcloud/google-maps-scraper](https://github.com/omkarcloud/google-maps-scraper)</td><td>Python</td><td>2,700+</td><td>50+</td><td>Social profiles (LinkedIn/Twitter/FB/IG), ad spend detection, $28 Pro</td></tr><tr><td>[HasData/google-maps-scraper](https://github.com/HasData/google-maps-scraper)</td><td>Python</td><td>-</td><td>7</td><td>3 backends: Selenium, Playwright stealth, HasData API</td></tr><tr><td>[google-reviews-scraper-pro](https://github.com/georgekhananaev/google-reviews-scraper-pro)</td><td>Python</td><td>-</td><td>Reviews</td><td>Multi-language reviews + images, MongoDB, bypassed Feb 2026 "limited view"</td></tr><tr><td>[conor-is-my-name](https://github.com/conor-is-my-name/google-maps-scraper)</td><td>Docker</td><td>-</td><td>Various</td><td>Designed for n8n + Postgres. Multi-container, 1 req/min/IP = ~144K/day</td></tr><tr><td>[webAutomationLover](https://github.com/webAutomationLover/google-map-scraper)</td><td>Userscript</td><td>-</td><td>Various</td><td>Tampermonkey, auto-scrolls, exports .xlsx. No server needed</td></tr><tr><td>[alltheplaces](https://github.com/alltheplaces/alltheplaces)</td><td>Python/Scrapy</td><td>-</td><td>POI</td><td>20M+ POIs from 4,100+ spiders. CC-0 license, weekly updates</td></tr><tr><td>[tripadvisor-scraper](https://github.com/omkarcloud/tripadvisor-scraper)</td><td>Python</td><td>-</td><td>Reviews</td><td>Alternative review source via TripAdvisor GraphQL</td></tr></table>

### Feb 2026 "Limited View" Lockdown

Google introduced a "limited view" restriction on review pages. **google-reviews-scraper-pro** bypassed it via search-based navigation (no login needed). Review pagination uses offset increments of 10, supports 4 sort modes (relevant/newest/highest/lowest).

# Python Libraries & Popular Times Tools

## Python Libraries

<table id="bkmrk-librarystatusapi-key"><tr><th>Library</th><th>Status</th><th>API Key?</th><th>Fields</th><th>Notes</th></tr><tr><td>`googlemaps` (official)</td><td>Active</td><td>Yes</td><td>50+ (API)</td><td>Official wrapper. Same pricing/limits as API</td></tr><tr><td>`gomaps`</td><td>Dormant (Sep 2023)</td><td>No</td><td>9</td><td>Name, URL, address, coords, website, phone, rating, hours, Popular Times. Likely broken</td></tr></table>

## Popular Times &amp; Foot Traffic Tools

**Popular Times is NOT available via any official Google API.** Must be scraped or obtained from third-party services. Historical data is also inaccessible.

### populartimes (m-wrzr) — 900 Stars

```
pip install --upgrade git+https://github.com/m-wrzr/populartimes
```

Returns: weekly hourly popularity (0-100 scale), wait times, time spent, current popularity. Requires API key with billing. MIT license. Unstable as Maps updates.

### LivePopularTimes (GrocerCheck)

Extension adding live busyness data to populartimes. Functions: `get_populartimes_by_address` (no API call), `get_populartimes_by_PlaceID` (API + scrape), `get_places_by_search`.

### BestTime.app (Commercial)

<table id="bkmrk-endpointsforecasts-%28"><tr><td>Endpoints</td><td>Forecasts (hourly 0-100%), Live Busyness, Venue Filter (by traffic/day/hour/ratings/type), Venue Search</td></tr><tr><td>Coverage</td><td>150+ countries</td></tr><tr><td>Unique</td><td>Dwell time analysis, surge detection, filter by foot traffic intensity</td></tr><tr><td>Free Tier</td><td>Test account with limited credits</td></tr></table>

Website: [besttime.app](https://besttime.app/)

### LocalAPI

REST API returning 20+ fields per business in 2-3 seconds including Popular Times histograms (peak hours by day of week). Claims to be the only API exposing Popular Times via endpoint. Free tier: 50 searches. [local-api.com](https://local-api.com)

### Workarounds for the 5-Review API Limit

<table id="bkmrk-methodreviews-availa"><tr><th>Method</th><th>Reviews Available</th><th>Cost</th></tr><tr><td>Official Places API</td><td>5 max</td><td>Enterprise tier</td></tr><tr><td>Google Business Profile API (own locations)</td><td>All</td><td>Free</td></tr><tr><td>Google Takeout (own GBP)</td><td>All</td><td>Free</td></tr><tr><td>Outscraper</td><td>All</td><td>First 500 free</td></tr><tr><td>Apify reviews actors</td><td>All</td><td>$0.25-0.40/1K</td></tr><tr><td>google-reviews-scraper-pro</td><td>All</td><td>Free (+ proxies)</td></tr><tr><td>Tampermonkey userscript</td><td>All (manual)</td><td>Free</td></tr><tr><td>DIY Playwright/Puppeteer scroll</td><td>All</td><td>Free (+ proxies)</td></tr><tr><td>SerpAPI reviews endpoint</td><td>All</td><td>$50+/mo</td></tr></table>

# No-Code, Extensions & Automation Workflows

Octoparse, browser extensions, userscripts, n8n, Make.com

# No-Code Platforms

## No-Code / Low-Code Platforms

<table id="bkmrk-platformpricingmaps-"><tr><th>Platform</th><th>Pricing</th><th>Maps Feature</th><th>Notes</th></tr><tr><td>**Octoparse**</td><td>Free + $69/mo</td><td>Auto search splitting to overcome 120-result limit</td><td>20K results/hour. Best no-code option</td></tr><tr><td>**ParseHub**</td><td>Free (5 projects) / $189/mo / $599/mo</td><td>JS rendering handles Maps SPA well</td><td>Steep price jump from free</td></tr><tr><td>**WebAutomation.io**</td><td>$99-999/mo or $1/1K PAYG</td><td>Pre-built Google Maps extractor</td><td>14-day unlimited trial</td></tr><tr><td>**PhantomBuster**</td><td>$69-439/mo</td><td>Maps phantoms available</td><td>$50-80/1K leads — 15-50x more expensive. NOT recommended for Maps</td></tr></table>

# Browser Extensions & Userscripts

## Browser Extensions &amp; Userscripts

<table id="bkmrk-tooltypepricenotes-d"><tr><th>Tool</th><th>Type</th><th>Price</th><th>Notes</th></tr><tr><td>**DataMiner**</td><td>Chrome ext.</td><td>Free (500 pages/mo) to $200/mo</td><td>Custom recipes, pagination, scheduled runs. No email extraction</td></tr><tr><td>**Instant Data Scraper**</td><td>Chrome ext.</td><td>Free</td><td>One-click, ~120 results cap. Unmaintained</td></tr><tr><td>**Web Scraper (webscraper.io)**</td><td>Chrome ext.</td><td>Free + cloud $50/mo</td><td>No pre-built Maps template</td></tr><tr><td>**GMaps Extractor**</td><td>Chrome ext.</td><td>Free/Freemium</td><td>gmapsextractor.com. No coding needed</td></tr><tr><td>**G Maps Extractor**</td><td>Chrome ext.</td><td>Freemium</td><td>"Probably the cheapest" per Reddit</td></tr><tr><td>**AI Web Scraper**</td><td>Chrome ext.</td><td>Various</td><td>Multi-purpose: Reddit, Maps, LinkedIn, Amazon</td></tr><tr><td>**Tampermonkey Reviews Exporter**</td><td>Userscript</td><td>Free</td><td>[Greasyfork](https://greasyfork.org/en/scripts/478310). Adds "Scrape Reviews" button, auto-expands, exports JSON</td></tr><tr><td>**webAutomationLover**</td><td>Userscript</td><td>Free</td><td>Tampermonkey. Accumulates results as you browse, exports .xlsx</td></tr><tr><td>**Firefox GPX Exporter**</td><td>Firefox addon</td><td>Free</td><td>Export saved Maps lists as GPX with lat/lon</td></tr></table>

**120-Result UI Limit:** All browser extensions are capped by Google Maps' sidebar pagination (~120 results per search). Must split searches into smaller areas for more.

# Automation Workflows (n8n, Make, Zapier)

## Automation Workflows

### n8n (Most Flexible)

- Official **Outscraper node** available
- Templates: Google Maps scraper, lead gen with Google Sheets export, email scraping
- **conor-is-my-name/google-maps-scraper**: Docker-based, designed for n8n + Postgres. Multi-container, IP rotation, 1 req/min/IP = ~144K/day
- **Gemini AI + n8n pipeline**: Use Google AI Studio to vibe-code scraping, pipe via webhook to Sheets
- Example pipeline: Apify scrape + Anymail Finder emails + Airtable storage
- Also works with official Google Maps API via HTTP Request node

### Make.com

Scrap.io integration (200M businesses). Visual workflow builder, 3,000+ connectors. Automated lead gen tutorials available.

### Zapier

Outscraper integration available. Simpler but less flexible than Make.com.

### Clay

Data enrichment platform. Pull basic Maps data then enrich with Clearbit/Dropcontact. Filter by review count/recency for active businesses.

### Google Sheets &amp; Apps Script

- **Apps Script Maps Service**: built-in geocoding/reverse-geocoding without API keys. Cannot do Places search
- **IMPORTFROMWEB add-on**: handles dynamic JS pages in Sheets (IMPORTXML fails on Maps)
- **Full cold outreach pipeline** (Apps Script v3.0): AI email writing, website discovery, CEO identification, Firecrawl scraping, email enrichment, dedup — all in one sheet

# AI-Powered Scrapers & Alternative POI Sources

ScrapeGraphAI, Crawl4AI, Overture Maps, AllThePlaces, OSM

# AI/LLM-Powered Scrapers

## AI/LLM-Powered Scrapers

### ScrapeGraphAI (MIT / Free)

Describe what you want in plain English, it extracts structured JSON without CSS/XPath selectors. Auto-adapts to layout changes. Supports GPT, Gemini, Groq, Azure, Hugging Face, local Ollama models.

[GitHub](https://github.com/ScrapeGraphAI/Scrapegraph-ai)

### Crawl4AI (58K Stars, Apache 2.0)

Open-source LLM-friendly web crawler. Outputs clean Markdown for RAG/agents. Heuristic noise filtering, CSS/XPath/LLM extraction. Local-first (no API costs).

[GitHub](https://github.com/unclecode/crawl4ai)

### Firecrawl

Developer API that outputs clean Markdown from any URL, optimized for LLM ingestion. Used in enrichment pipelines alongside Maps scrapers.

[firecrawl.dev](https://www.firecrawl.dev/)

### LLM Query Expansion

Not a scraper per se, but a technique: use LLMs to generate category synonyms and related search terms to multiply coverage per geographic area. "dentist" becomes "dental clinic", "oral surgeon", "dental practice", etc. Combined with any scraper for 3-5x more results.

# Alternative POI Data Sources (No Scraping)

## Alternative POI Data Sources

Free or commercial POI databases that don't require scraping Google Maps.

### Overture Maps Foundation (64.8M POIs Free)

Backed by Meta, Microsoft, Amazon, TomTom, Foursquare. The strongest free alternative to Google Maps data.

<table id="bkmrk-size64.8m-places-%E2%80%94-m"><tr><td>Size</td><td>**64.8M places** — Meta (~59.2M), Foursquare (~6.7M), Microsoft (~7.4M), AllThePlaces (~1.7M)</td></tr><tr><td>Fields</td><td>Names, categories (64+), phones, emails, websites, socials, addresses, brand, operating\_status, confidence score, coordinates</td></tr><tr><td>Format</td><td>GeoParquet on S3 and Azure Blob. Python CLI, DuckDB SQL, browser Explorer</td></tr><tr><td>License</td><td>CDLA-Permissive-2.0 / ODbL (commercial use OK)</td></tr><tr><td>Limits</td><td>Monthly updates (not real-time). No reviews/photos. Thinner outside Western countries</td></tr></table>

**Warning:** Reddit reports Places layer stopped updating as of Sept 2024 release. Verify current state.

[Overture Places Guide](https://docs.overturemaps.org/guides/places/) | [Downloads](https://overturemaps.org/download/)

#### Overture-Based API (Community-Built, 200x Cheaper)

A developer built a Places API using Overture data + Rust/Axum + PostGIS. Free 5K/mo, $10/100K, $30/500K, $80/2M — vs Google's ~$1,700 for 100K.

### Other Alternative Sources

<table id="bkmrk-sourcepoisfree-tierk"><tr><th>Source</th><th>POIs</th><th>Free Tier</th><th>Key Strength</th><th>Reviews?</th></tr><tr><td>**OpenStreetMap (Overpass API)**</td><td>Varies</td><td>Unlimited, no key</td><td>Free, query any tag combo. [Overpass Turbo](https://overpass-turbo.eu/)</td><td>No</td></tr><tr><td>**Foursquare Places**</td><td>100M+</td><td>Commercial</td><td>Richest venue data, behavioral insights, check-ins</td><td>Tips only</td></tr><tr><td>**HERE Technologies**</td><td>Global, 400+ cats</td><td>250K tx/mo</td><td>TripAdvisor ratings, EV/fuel data, chain ID</td><td>Via TripAdvisor</td></tr><tr><td>**TomTom**</td><td>~100M, 180+ countries</td><td>50K daily tx</td><td>Navigation-optimized, relevance scoring</td><td>No</td></tr><tr><td>**Mapbox**</td><td>Global</td><td>100K req/mo</td><td>Polished SDKs</td><td>No</td></tr><tr><td>**Geoapify**</td><td>OSM-based, 400+ cats</td><td>3K credits/day</td><td>Transparent pricing, can cache/store</td><td>No</td></tr><tr><td>**Yelp Fusion API**</td><td>Millions</td><td>5K calls/day</td><td>3 reviews max via API. Open Dataset: 8.6M reviews (academic)</td><td>3 (API), 8.6M (dataset)</td></tr><tr><td>**AllThePlaces**</td><td>20M+</td><td>Unlimited (CC-0)</td><td>4,100+ Scrapy spiders, weekly updates</td><td>No</td></tr><tr><td>**MapQuest**</td><td>Various</td><td>Limited</td><td>Search API v5: radius/rect/polygon/corridor</td><td>No</td></tr><tr><td>**Nominatim**</td><td>OSM geocoding</td><td>Free</td><td>Forward/reverse geocoding</td><td>No</td></tr><tr><td>**Photon (Komoot)**</td><td>OSM geocoding</td><td>Free</td><td>Typo-tolerant, multilingual</td><td>No</td></tr></table>

**OSM Reality Check (from Reddit):** OpenStreetMap is poor for business/POI data. Business coverage is ~75% at best, biased toward bigger/popular locations.

### Data Providers &amp; Marketplaces

<table id="bkmrk-providerdatasetprici"><tr><th>Provider</th><th>Dataset</th><th>Pricing</th><th>Google Maps?</th></tr><tr><td>Bright Data</td><td>200.7M+ records</td><td>$0.0025/record</td><td>Yes</td></tr><tr><td>Datarade</td><td>60M+ US (varies)</td><td>By provider</td><td>Yes</td></tr><tr><td>Veridion</td><td>134M+ businesses</td><td>~$99/user/mo</td><td>Partial</td></tr><tr><td>SafeGraph</td><td>52M+ POIs</td><td>Commercial</td><td>Partial (foot traffic)</td></tr><tr><td>Dataplor</td><td>Various</td><td>Commercial</td><td>Partial (LatAm strong)</td></tr><tr><td>Xtract.io</td><td>6M+ locations</td><td>Commercial</td><td>Partial</td></tr><tr><td>Coresignal</td><td>N/A</td><td>N/A</td><td>No (employee data only)</td></tr><tr><td>Data.world</td><td>N/A</td><td>N/A</td><td>No (data governance)</td></tr></table>

### Export &amp; Data Liberation Tools

- **Google Takeout**: Export saved/starred places (CSV/JSON, no coordinates — needs geocoding)
- [Takeout Tools](https://www.takeout-tools.com/): Adds coordinates, converts to GeoJSON/KML/GPX
- [json2kml](https://github.com/dmsza/json2kml): Python converter for saved places to KML
- [Export-Google-Maps-Saved-Places](https://github.com/Yeshey/Export-Google-Maps-Saved-Places)
- **Firefox GPX Exporter**: Export saved lists as GPX with lat/lon

# Anti-Bot Countermeasures & Legal Landscape

BotGuard/SearchGuard, proxy strategies, Google v. SerpAPI, GDPR

# Google's Anti-Bot Countermeasures (2025-2026)

## Anti-Bot Countermeasures

Google Maps difficulty score: **90/100** — one of the toughest platforms to scrape.

### BotGuard / SearchGuard Architecture

Built on **BotGuard** (internally "Web Application Attestation"), deployed across YouTube, reCAPTCHA v3, and Maps. **SearchGuard** (January 2025) is the Search-specific evolution — "tens of thousands of person hours and millions of dollars."

### Detection: Behavioral Analysis (4 Signal Categories)

<table id="bkmrk-signalbot-thresholdh"><tr><th>Signal</th><th>Bot Threshold</th><th>Human Range</th></tr><tr><td>Mouse movement (trajectory, velocity, acceleration, micro-tremors)</td><td>Velocity variance &lt;10</td><td>50-500</td></tr><tr><td>Keyboard rhythm (inter-key intervals, duration, errors)</td><td>Variance &lt;5ms</td><td>20-50ms</td></tr><tr><td>Scroll behavior (amplitude, direction, timing)</td><td>Delta variance &lt;5px</td><td>20-100px</td></tr><tr><td>Timing jitter (Welford's algorithm)</td><td>&gt;200 events/sec</td><td>10-50</td></tr></table>

### Detection: Browser Fingerprinting (100+ Signals)

Navigator, screen, performance metrics, WebRTC leaks, TLS fingerprinting. Explicit checks for `navigator.webdriver`, ChromeDriver, Puppeteer, Selenium, PhantomJS.

### reCAPTCHA v3 (Invisible)

No visible challenge — assigns 0.0-1.0 score based on session behavior. On Maps, appears **inconsistently**. Only bypass: never trigger it.

### Cryptographic Protection

ARX cipher (similar to NSA's Speck). Magic constants rotate per script update. Scripts served with integrity hashes. **Bypasses become obsolete within minutes.**

### Blocking Behavior

<table id="bkmrk-triggerrisk-datacent"><tr><th>Trigger</th><th>Risk</th></tr><tr><td>Datacenter IPs</td><td>Blocked immediately — non-viable</td></tr><tr><td>Uniform request timing</td><td>High — humans pause, bots don't</td></tr><tr><td>Direct navigation to data pages</td><td>Medium — humans wander first</td></tr><tr><td>Default/missing headers</td><td>Medium</td></tr></table>

**Stealth detection:** Google returns **poisoned/incomplete data** to detected scrapers rather than blocking outright. Soft bans aren't clean HTTP codes — "some weird JSON response or just incomplete page loads." DOM class names change every few months.

### Proxy Effectiveness

<table id="bkmrk-typeeffectivenesscos"><tr><th>Type</th><th>Effectiveness</th><th>Cost</th><th>Notes</th></tr><tr><td>Datacenter</td><td>Very Low</td><td>$</td><td>Non-viable for Maps</td></tr><tr><td>Residential</td><td>Good</td><td>$$</td><td>~30-50 searches/hour/IP before CAPTCHAs</td></tr><tr><td>Mobile (4G/5G)</td><td>Best</td><td>$$$</td><td>Most reliable for large-scale</td></tr><tr><td>ISP</td><td>OK (low volume)</td><td>$$</td><td>Burns fast. Once flagged, stays flagged for days</td></tr><tr><td>Hybrid</td><td>Cost-optimized</td><td>$$</td><td>Datacenter for non-Maps, mobile for Maps. Saves 40-60%</td></tr></table>

Practical rate limit: **max 1 req/min/IP** = ~144K results/day per IP.

### Anti-Detection Toolkit

- `playwright-stealth` / `puppeteer-extra-plugin-stealth` (17 evasion modules) — near-essential
- `undetected-chromedriver` for Selenium
- CapMonster Cloud for automated CAPTCHA solving
- FlareProx — Cloudflare Workers proxy for IP masking (100K free daily requests)
- Cookie banner handling: `document.querySelector('#sp-cc-accept')?.click()`
- CAPTCHA detection: `document.querySelector('form[action*="validateCaptcha"]')`
- Image/font blocking via `Network.setBlockedURLs`
- Search-based navigation to bypass Feb 2026 "limited view" lockdown

# Legal & TOS Landscape

## Legal &amp; TOS Landscape

### Google Maps TOS

**"Customer will not export, extract, or otherwise scrape Google Maps Content for use outside the Services."**

This is a contractual prohibition, not criminal statute. Breach of contract, not a crime.

### Google v. SerpAPI (Dec 2025 — Ruling Pending)

**Filed:** December 19, 2025, N.D. California (Case No. 4:25-cv-10826)

#### Google's DMCA Claims

1. **Access circumvention** (17 U.S.C. 1201(a)(1)(A)): SerpAPI circumvented SearchGuard "on billions of separate occasions." $200-$2,500 per violation.
2. **Trafficking in circumvention tools** (17 U.S.C. 1201(a)(2)): Marketing services to bypass SearchGuard.

SerpAPI's requests increased "25,000%" over two years — hundreds of millions daily.

#### SerpAPI's Defense (Motion to Dismiss, Feb 2026)

- Google doesn't own copyright to third-party search content
- SearchGuard protects business model, not copyrighted works
- "Google's entire business began with a web crawler that copied the content"

Hearing: May 19, 2026 before Judge Yvonne Gonzalez Rogers — **ruling not yet published**.

**Industry impact:** If Google prevails, rank tracking, competitive intelligence, and SEO analytics could become legally untenable.

### Key Legal Precedents

<table id="bkmrk-caseyearimpact-van-b"><tr><th>Case</th><th>Year</th><th>Impact</th></tr><tr><td>Van Buren v. US</td><td>2021</td><td>CFAA limited to insiders. ToS violations are not computer crime</td></tr><tr><td>hiQ v. LinkedIn</td><td>2022</td><td>Public data scraping doesn't violate CFAA (Ninth Circuit, reaffirmed)</td></tr><tr><td>X Corp v. Bright Data</td><td>2023</td><td>Platforms can't claim copyright on user-generated content</td></tr><tr><td>Meta v. Bright Data</td><td>2024</td><td>Logged-out users haven't accepted ToS — no contract breach</td></tr></table>

**Key shift:** Google abandoned CFAA arguments (neutered for public data) for **DMCA anti-circumvention claims** — targeting SearchGuard bypass specifically.

### US vs. EU

#### United States

- Public data scraping generally legal (CFAA precedent)
- ToS violations = contract, not criminal
- CAN-SPAM for outreach from scraped data

#### European Union

- GDPR: public availability does NOT equal lawful basis (Article 6)
- Names, phones, reviewer profiles = personal data
- Need legitimate interest (Art. 6(1)(f)) for B2B
- Must provide opt-out, honor right to be forgotten
- Penalties: up to 20M EUR or 4% global turnover
- EU AI Act enforcement: August 2026

### Risk by Method

<table id="bkmrk-methodlegal-risktos-"><tr><th>Method</th><th>Legal Risk</th><th>TOS Violation</th><th>DMCA Exposure</th></tr><tr><td>Official Places API</td><td>None</td><td>No</td><td>No</td></tr><tr><td>Data marketplace purchase</td><td>Low</td><td>No (you didn't scrape)</td><td>No</td></tr><tr><td>Commercial platforms</td><td>Medium</td><td>Yes</td><td>Indirect</td></tr><tr><td>Open-source scrapers</td><td>Medium</td><td>Yes</td><td>Low</td></tr><tr><td>SERP API proxies</td><td>High</td><td>Yes</td><td>Active lawsuit</td></tr><tr><td>Reverse-engineered APIs</td><td>Highest</td><td>Yes</td><td>Circumvention</td></tr></table>

### Enforcement Reality

Survey of 40-50 agencies scraping Maps at scale: **zero cease-and-desist letters**. Google relies on technical countermeasures for most scrapers, reserving legal action for large commercial operations (SerpAPI).

### Sources

- [IPWatchdog — Google Sues SerpAPI](https://ipwatchdog.com/2025/12/26/google-sues-serpapi-parasitic-scraping-circumvention-protection-measures/)
- [SerpAPI Motion to Dismiss](https://searchengineland.com/serpapi-motion-dismiss-google-scraping-lawsuit-469889)
- [Is Scraping Google Maps Legal?](https://scrap.io/scrape-google-gaps-legal)