Google Maps Scraper
Pricing
from $2.50 / 1,000 record scrapeds
Google Maps Scraper
This scraper deploys an automated spatial grid matrix to break past the standard 120-listing limit, capturing every hidden business. Delivers clean, non duplicate B2B leads instantly filtered by phone, website, and an intelligent 0–100 quality score.
Pricing
from $2.50 / 1,000 record scrapeds
Rating
0.0
(0)
Developer
Mohsen S
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Primelabs Google Maps Lead Extractor
A high-performance geocoding and spatial automation scraper built to harvest enriched commercial leads from Google Maps. By slicing target regions into an automated coordinate matrix and utilizing strict server-side tracking token extraction, this tool bypasses standard platform viewport limits and delivers full geographic market coverage while keeping your compute costs under control.
Why Use This Scraper
Full Market Coverage Standard scrapers search a city name and scroll. Google Maps caps that view at around 120 listings, which means most of the real market data never shows up. This actor splits the target area into a coordinate grid and runs independent searches across each cell, surfacing businesses in outer neighborhoods and suburbs that get missed entirely.
Strict Production Coordinate Accuracy
Unlike public scrapers that capture drifted camera viewports or broad city centroids, this engine enforces a strict structural parsing pipeline. It extracts exact physical business coordinates directly from Google's canonical server-side !3d and !4d tracking tokens, preserving 100% data integrity.
Clean, Parameter-Isolated Deduplication
Every profile undergoes structural isolation. The engine strips tracking arguments and query strings down to the unique !16s alphanumeric place_key. Duplicate listings across overlapping grid cells are intercepted and dropped before they can contaminate your CRM database.
Use Cases
Lead Generation Build prospecting lists for sales teams with verified phone numbers, addresses, and websites for any niche and location.
Local SEO and Web Design Outreach Use the built-in lead scoring system to find businesses with no website or a weak review profile, ideal targets for agency outreach.
Market and Competitor Mapping See how saturated a market is across an entire metro area, not just the downtown core, and benchmark businesses by rating, review volume, and online presence.
How the Grid Scan Works
The actor runs through three phases for every search.
Phase 1: GeocodingLook up the target city and get its real boundary boxPhase 2: Grid GenerationBuild an evenly spaced grid of coordinates across that boundary[ Cell 1 ] [ Cell 2 ] [ Cell 3 ][ Cell 4 ] [ Cell 5 ] [ Cell 6 ][ Cell 7 ] [ Cell 8 ] [ Cell 9 ]Phase 3: ExtractionVisit each cell at zoom level 16 and collect every visible listing
Searching each cell independently instead of running one broad city search is what allows the actor to reach suburbs and outer neighborhoods that normally never appear in results.
Production Lead Scoring
Every business that comes through gets a quality score from 0 to 100, calculated via a balanced multi-variable algorithmic formula:
| Signal Matrix | Maximum Point Weight | Calculation Engine |
|---|---|---|
| Phone number present | 25 Points | Binary confirmation check |
| Website present | 25 Points | Link verification lookahead |
| Review Volume | 25 Points | Volume calculation (reviews / 10.0, capped at 25) |
| Star Rating | 25 Points | Direct scale multiplication (rating * 5.0, capped at 25) |
90 to 100, Enterprise Tier Established business with verified contact details and strong review activity.
60 to 89, Growth Tier Active business with a clear gap, usually a missing website or low review count, good for outreach.
Output Schema
Each item in the dataset includes:
| Field | Type | Description |
|---|---|---|
| record_id | String | Deterministic SHA-1 hash unique to the business identifier |
| place_key | String | Clean, parameter-stripped unique Google feature routing key |
| name | String | Business name as listed on Google Maps |
| business_status | String | Operating status, for example "operational" or "permanently_closed" |
| matched_keyword | String | The search term that returned this result |
| address | String | Full normalized street address with line-break stripping |
| phone | String | Cleaned, international format phone number |
| website | String | Cleaned destination URL listed on the business profile |
| total_rating | Float | Star rating from 0.0 to 5.0 |
| review_count | Integer | Total number of public reviews |
| latitude | Float | Precision geographic coordinate extracted from server token |
| longitude | Float | Precision geographic coordinate extracted from server token |
| lead_quality_score | Integer | Balanced calculated score from 0 to 100 |
Configuration
Core Inputs
| Field | Type | Required | Description |
|---|---|---|---|
| target_city | String | Yes | City to search, for example "Miami, FL" |
| target_country | String | No | Restricts the search to a country, for example "US" |
| search_query | String | Yes | Niche or keyword to search, for example "Dentist" |
Spatial Settings
scan_mode controls how the grid spreads across the city.
| Value | Behavior |
|---|---|
| city_center | Keeps the grid tight around the downtown core |
| balanced | Spreads the grid across main commercial zones |
| full_coverage | Stretches the grid to the city's outer borders |
scan_depth controls how many points are in the grid.
| Value | Points | Layout |
|---|---|---|
| basic | 1 | Center only |
| standard | 4 | 2 x 2 |
| deep | 9 | 3 x 3 |
| enterprise | 25 | 5 x 5 |
Safety and Filters
| Field | Type | Description |
|---|---|---|
| max_results | Integer | Stops the run once this many unique leads are saved |
| max_search_requests | Integer | Hard cap on total lookups (keywords times grid points). Run stops if exceeded |
| required_fields | Array | Drops leads missing these fields, options are "phone" and "website" |
Performance
This actor is optimized to run efficiently on standard cloud infrastructure.
- Runs cleanly on 2048 MB of memory allocation
- Locked to single concurrency (
max_concurrency=1) to eliminate browser memory leaks and processing spikes - Cost stays predictable because the budget governor checks your configuration requirements before execution
Example Configuration
{"target_city": "Miami, FL","search_query": "Dentist","scan_mode": "balanced","scan_depth": "standard","max_results": 2,"max_search_requests": 3,"required_fields": ["phone", "website"]}
Data Storage on Apify
This actor follows the standard Apify storage model.
Input When a run starts, the configuration object you send is saved as an INPUT record in the run's default Key-Value Store. The scraper reads this record at startup to set the search city, queries, scan settings, and filters.
Output Each validated lead is pushed to the run's default Dataset as it is found. Records are available to query through the Dataset API while the run is still in progress, not only after it finishes.
API Usage
Start a Run
curl -X POST "https://api.apify.com/v2/acts/primelabs~google-maps-scraper/runs?token=YOUR_API_TOKEN&memory=2048" \-H "Content-Type: application/json" \-d '{"target_city": "Miami, FL","target_country": "US","search_query": "Dentist","max_results": 2,"max_search_requests": 3,"scan_depth": "basic","include_lead_scoring": true,"include_row_metadata": false,"output_format": "full","required_fields": ["phone", "website"]}'
Fetch Results
$curl -X GET "https://api.apify.com/v2/datasets/YOUR_DATASET_ID/items?token=YOUR_API_TOKEN"