Google Maps Scraper avatar

Google Maps Scraper

Pricing

from $2.50 / 1,000 record scrapeds

Go to Apify Store
Google Maps Scraper

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

Mohsen S

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

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: Geocoding
Look up the target city and get its real boundary box
Phase 2: Grid Generation
Build 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: Extraction
Visit 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 MatrixMaximum Point WeightCalculation Engine
Phone number present25 PointsBinary confirmation check
Website present25 PointsLink verification lookahead
Review Volume25 PointsVolume calculation (reviews / 10.0, capped at 25)
Star Rating25 PointsDirect 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:

FieldTypeDescription
record_idStringDeterministic SHA-1 hash unique to the business identifier
place_keyStringClean, parameter-stripped unique Google feature routing key
nameStringBusiness name as listed on Google Maps
business_statusStringOperating status, for example "operational" or "permanently_closed"
matched_keywordStringThe search term that returned this result
addressStringFull normalized street address with line-break stripping
phoneStringCleaned, international format phone number
websiteStringCleaned destination URL listed on the business profile
total_ratingFloatStar rating from 0.0 to 5.0
review_countIntegerTotal number of public reviews
latitudeFloatPrecision geographic coordinate extracted from server token
longitudeFloatPrecision geographic coordinate extracted from server token
lead_quality_scoreIntegerBalanced calculated score from 0 to 100

Configuration

Core Inputs

FieldTypeRequiredDescription
target_cityStringYesCity to search, for example "Miami, FL"
target_countryStringNoRestricts the search to a country, for example "US"
search_queryStringYesNiche or keyword to search, for example "Dentist"

Spatial Settings

scan_mode controls how the grid spreads across the city.

ValueBehavior
city_centerKeeps the grid tight around the downtown core
balancedSpreads the grid across main commercial zones
full_coverageStretches the grid to the city's outer borders

scan_depth controls how many points are in the grid.

ValuePointsLayout
basic1Center only
standard42 x 2
deep93 x 3
enterprise255 x 5

Safety and Filters

FieldTypeDescription
max_resultsIntegerStops the run once this many unique leads are saved
max_search_requestsIntegerHard cap on total lookups (keywords times grid points). Run stops if exceeded
required_fieldsArrayDrops 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"