fast-google-maps-scraper
Pricing
from $1.50 / 1,000 results
fast-google-maps-scraper
Extract B2B leads from Google Maps at lightning speed. Scrape business names, phone numbers, addresses, websites, and reviews. Ultra-fast network interception. Pay only for successful results. Perfect for cold outreach and lead generation.
Pricing
from $1.50 / 1,000 results
Rating
5.0
(2)
Developer
NodeFlow
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
🚀 Google Maps Fast & Cheap Lead Scraper
The ultimate Fast & Cheap solution for B2B Lead Generation on Google Maps!
Stop paying for slow, expensive DOM scrapers. This ultra-fast Google Maps B2B Lead Extractor intercepts network traffic directly, bypassing the need to render complex HTML. It delivers clean, accurate, and high-volume business data at a fraction of the cost and time, ensuring your scraping operations are both Fast & Cheap.
If you are building B2B cold outreach campaigns, local SEO lists, or market research databases, this scraper is designed to provide you with reliable data instantly, giving you a competitive edge.
Extract Google Maps business leads at high speed without reading result cards or other page HTML. The Actor listens to the same background XHR/fetch responses used by Google Maps, parses business records in memory, and writes every unique result directly to the Apify dataset.
Features
- No DOM scraping — business data is never read from HTML elements or CSS selectors.
- Ultra-fast network interception — captures Google Maps search and place payloads as they arrive.
- Low memory usage — blocks images, media, and fonts and streams records directly to the dataset.
- B2B lead generation ready — exports company names, phones, websites, addresses, ratings, and review counts.
- Pay-per-event ready — every stored business emits the
business-resultcharge event. - Duplicate protection — de-duplicates places before storing and charging for them.
- Zero API keys — no Google Maps API key is required.
How it works
- The Actor opens a Google Maps search with Crawlee and Playwright.
- A response listener captures relevant Google Maps XHR/fetch traffic before navigation begins.
- The parser handles XSSI-prefixed JSON, nested batched responses, compact Maps arrays, and length-delimited protobuf payloads.
- If Google presents a regional consent dialog, the Actor accepts it and waits for the results feed. These selectors are used only for page control, never for extracting business data.
- The Actor scrolls
div[role="feed"]to trigger additional network requests. - Each unique business is immediately stored with
Actor.pushData().
Google Maps is an evolving third-party service. Network payload formats, availability, and result counts can change. Use this Actor responsibly and make sure your use complies with applicable laws and Google’s terms.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
searchQuery | string | Yes | Web design agencies in London | A Google Maps search phrase, such as Restaurants in London or Plumbers in Berlin. |
maxItems | integer | No | 20 | Maximum unique businesses to store. Accepted range: 1–500. |
Input example
{"searchQuery": "Dentists in Manchester","maxItems": 50}
Output example
Results are available in the run’s default dataset and can be seamlessly downloaded as JSON, CSV, Excel, XML, or RSS for your CRM and outreach tools.
{"companyName": "Manchester Dental Professionals","phone": "+44 20 1234 5678","website": "https://manchesterdentalpros.co.uk/","address": "10 High Street, Manchester, M1 1PT, UK","category": "Dental Clinic","rating": 4.8,"reviewCount": 247,"googleMapsUrl": "https://goo.gl/maps/exampleID"}
Unavailable optional values are returned as null, preserving a stable output shape for integrations.
Run locally
Node.js 20 or newer is required.
npm installnpm start
Local input is read from storage/key_value_stores/default/INPUT.json. Local results are written under storage/datasets/default/.
Deploy from GitHub
- Push this complete repository to GitHub.
- In Apify Console, create an Actor and choose Git repository as its source.
- Connect the repository and build the
latestversion. The included manifest, schemas, and Dockerfile require no source-code changes. - For pay-per-event monetization, select that pricing model and define
business-resultas the primary recurring event. Choose the price per saved business in Apify Console.
The code checks the run’s charge limit through Actor.pushData(record, 'business-result'); when the customer’s limit is reached, it stops storing additional results.
Run diagnostics
Every run emits concise diagnostic markers in the Apify log:
[CONSENT]— reports whether a Google consent screen was detected and dismissed.[NETWORK]— confirms that a Google Maps XHR/fetch data response was intercepted.[PARSER]— reports payload size, parsed record count, and each extracted company name.[DATASET]— confirms the item was written to the default dataset while emitting thebusiness-resultevent.[SCROLL]— reports loading and scroll progress fordiv[role="feed"].
A run that extracts no businesses now fails with captured-response and parser counters instead of silently finishing with an empty output.
Data quality notes
- Phone numbers and websites are returned only when Google includes them in intercepted payloads.
- Google may return fewer places than requested for narrow searches or small geographic areas.
- Broad queries with a city or region generally produce the most consistent results.
- Proxy availability and Google rate limits can affect runs. On Apify, the Actor automatically uses the account’s default proxy configuration when available.