Google Maps Leads & Domain Intelligence
Pricing
from $1.00 / 1,000 lead pusheds
Google Maps Leads & Domain Intelligence
Discover business leads from Google Maps using geographic grid search — captures every business in an area, not just top results. Each lead is enriched with domain intelligence: DNS services detected, WHOIS domain age, SSL status, and server geolocation.
Pricing
from $1.00 / 1,000 lead pusheds
Rating
5.0
(2)
Developer
Expandí tu Marca
Actor stats
3
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract structured business leads from Google Maps using geographic grid search. Each lead includes full Maps data plus optional domain intelligence — DNS services, WHOIS age, SSL status, and server geolocation.
What it does
This Actor searches Google Maps for businesses matching your niche in a given city or region. It divides the target area into a geographic grid and navigates each cell, capturing structured business data directly from Google Maps. No DOM scraping, no result caps from scrolling.
After discovery, an optional enrichment phase runs:
- Domain Enrichment: runs in parallel with discovery. For each lead with a real website, it performs DNS TXT lookup (detects Google Workspace, Microsoft 365, HubSpot, Shopify, and 18 other services), WHOIS lookup (domain age and registrar), SSL certificate check (validity, expiry, issuer), and server IP geolocation — without opening a browser.
For image extraction from Google Maps listings, use the companion Google Maps Image Extractor actor.
Key features
- Geographic grid search with automatic refinement for dense areas
- Captures full business data directly from Google Maps
- Grid auto-expands when the target lead count has not been reached
- Deduplication by unique Google Maps identifiers — no duplicate businesses across grid cells
- Domain Intelligence: DNS services, WHOIS domain age, SSL status, server country
- Economy Mode: stops discovery automatically when the area is nearly exhausted
- Smart Categories Mode: when discovery stagnates, discovers related business types from collected leads and uses them as new search terms
- Sub-Location Discovery: samples the city area before discovery to find neighborhoods, then searches each neighborhood individually for denser coverage
- All Businesses Mode: ignores the niche field and searches 12 universal terms to capture every business type in an area
- Pay-per-event pricing (PPE): charges only for results delivered
How it works
1. Grid initialization
The Actor resolves the geographic bounding box for your location. It divides the area into a grid of sub-areas and adapts coverage based on business density — denser zones receive finer coverage automatically.
2. Discovery
For each grid sub-area, the Actor navigates to Google Maps and captures structured business data: name, address, phone, category, rating, review count, price level, opening hours, coordinates, thumbnail URL, booking links, and website.
3. Deduplication and expansion
Businesses are deduplicated by their unique Google Maps identifier — no business appears twice even when grid sub-areas overlap. Areas that return many results are split into smaller sub-areas for deeper coverage. The grid expands until the target lead count is reached.
4. Enrichment
Domain Enrichment runs in parallel with discovery. For each lead with a real business website, performs DNS, WHOIS, SSL, and geolocation lookups without requiring an additional browser.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
location | string | — | Required. Geographic area to search. Examples: Miami, FL, New York, NY, Buenos Aires. |
niche | string | coffee shops | Type of business to search. Use commas for multiple niches: coffee shops, bakeries, gyms. Each term is searched separately with balanced quota distribution. Required unless allBusinesses is enabled. |
country | string | — | Country name to disambiguate location and normalize phone numbers. Recommended when using a proxy. Examples: United States, Argentina, España. |
language | string | (default) | Interface language for Google Maps results. Affects category names and labels. Accepts BCP 47 codes: en, es, pt-BR, fr, de, etc. |
targetLeads | integer | 50 | Number of unique leads to find. Range: 5–5000. |
timeoutMinutes | integer | 10 | Maximum run time in minutes. The Actor stops gracefully and exports all found leads when the timeout is reached. Range: 2–120. |
enableDomainIntel | boolean | false | Analyze each lead's website domain: DNS services (Google Workspace, M365, HubSpot, etc.), WHOIS domain age and registrar, SSL certificate validity and expiry, server country via IP geolocation. |
enableEconomy | boolean | false | Stop discovery automatically when the new-lead rate consistently drops below the minimum threshold. Useful for capping cost when an area is nearly exhausted. |
onlyWithWebsite | boolean | false | Exclude leads that have no website or whose website is a social media profile (Instagram, Facebook, etc.). |
minRating | number | — | Skip businesses with a Google Maps rating below this value. Examples: 3.5, 4.0, 4.5. Range: 1–5. |
allBusinesses | boolean | false | Ignore the niche field and search 12 universal terms (restaurant, hotel, shop, store, service, salon, clinic, school, museum, bank, parking, gas station) to capture every business type in the area. |
useCategories | boolean | false | When the primary search stagnates before reaching the target, automatically discover related business categories from already-collected leads and use them as additional search terms. |
useSubLocations | boolean | false | Before discovery starts, sample the city area to discover neighborhood names. Searches each neighborhood first, then falls back to the full city grid. Adds approximately 10 seconds of setup time. |
Output
Each item in the output dataset represents one unique business.
| Field | Type | Description |
|---|---|---|
thumbnailUrl | string | URL of the business's primary Google Maps thumbnail photo. Empty string if unavailable. |
placeId | string | Google Maps Place ID (format: ChIJ...). Empty string if unavailable. |
title | string | Business name as it appears on Google Maps. |
address | string | Full address string from Google Maps. Empty string if unavailable. |
description | string | Business description or "about" text from Maps. Empty string if unavailable. |
category | string | Primary business category as labeled by Google Maps. |
website | string | Business website URL as listed on Google Maps. For businesses whose listed URL is a social media profile, this field is empty and the URL appears in socialMedia instead. |
socialMedia | array of strings | Social media profile URLs detected from the Maps listing (Instagram, Facebook, LinkedIn, etc.). Empty array when none detected. |
domainIntel | object or null | Domain intelligence for leads with a real website. null if enableDomainIntel is disabled, the lead has no website, or all lookups failed. See the domainIntel object section below. |
phone | string | Phone number as listed on Google Maps. Empty string if unavailable. |
priceLevel | string | Price level indicator: $, $$, $$$, or $$$$. Empty string if unavailable. |
openingHours | array of strings | Opening hours as a list of strings. When the full weekly schedule is available, each entry is formatted as Day: Hours (e.g., Monday: 9 AM–5 PM). When only today's schedule is available, the array contains a single entry. Empty array if unavailable. |
rating | number or string | Google Maps star rating (1.0–5.0). Empty string if the business has no rating. |
reviewCount | number or string | Number of Google Maps reviews. Empty string if unavailable. |
bookingLinks | array of strings | Booking or reservation link if listed on the Maps panel. Empty array if unavailable. |
googleMapsIds | object | Google Maps identifiers. Contains cid (decimal CID) and fid (raw hex CID). |
position | integer | Discovery sequence number of this lead within the run (1-based). |
discoveredBy | string | The search term that produced this lead. |
searchOrigin | string | How this lead was discovered: direct (user-specified niche), sub-location (neighborhood search), or categories (Smart Categories expansion). |
latitude | number or string | Latitude coordinate from Google Maps. Empty string if unavailable. |
longitude | number or string | Longitude coordinate from Google Maps. Empty string if unavailable. |
googleMapsUrl | string | Direct URL to the business's Google Maps listing. |
domainIntel object
Present on leads that have a real company website when enableDomainIntel is true.
| Field | Type | Description |
|---|---|---|
services | array of strings | Business services detected via DNS TXT records. Examples: Google Workspace, Microsoft 365, HubSpot, Shopify, Mailchimp, Zendesk. Empty array if none detected. |
whoisAgedays | integer or null | Domain age in days from WHOIS registration date to today. null if WHOIS lookup failed or returned no creation date. |
whoisCreated | string or null | Domain registration date in YYYY-MM-DD format. null if unavailable. |
registrar | string or null | Domain registrar name from WHOIS. null if unavailable. |
serverCountry | string | ISO 3166-1 alpha-2 country code of the server hosting the website, resolved via IP geolocation. Empty string if lookup failed. |
sslValid | boolean | Whether the SSL certificate is valid and not expired at the time of the run. |
sslDaysRemaining | integer | Number of days until SSL certificate expiry. 0 if the certificate is expired or not present. |
sslExpiry | string | SSL certificate expiry date in YYYY-MM-DD format. Empty string if unavailable. |
sslIssuer | string | SSL certificate issuer organization name (e.g., Let's Encrypt, DigiCert Inc, Sectigo). Empty string if unavailable. |
Detected services
The following services are identified from DNS TXT and SPF records:
Google Workspace, Microsoft 365, Zoho Mail, Mailgun, SendGrid, Mailchimp, Mandrill, HubSpot, Salesforce, Shopify, Stripe, Atlassian, DocuSign, Amazon SES, Postmark, Intercom, Zendesk, Freshdesk, Wix, Squarespace, Tiendanube.
Search modes
Standard (default)
Searches the specified niche across the entire location grid. Multiple niches (comma-separated) are searched in sequence, each with a proportional quota of the target lead count. After each term reaches its quota, the next term begins.
Smart Categories (useCategories: true)
After the standard search stagnates, the Actor identifies the most common business categories in the already-discovered leads and uses them as additional search terms. For example, a search for "restaurants" might expand to "sushi restaurant", "pizza restaurant", and "steakhouse" based on what was found.
Sub-Location Discovery (useSubLocations: true)
Before discovery starts, the Actor uses OpenStreetMap geocoding to discover neighborhood names within the target city. It then prepends neighborhood names to each search term — for example, "coffee shops Wynwood" and "coffee shops Little Havana" instead of "coffee shops Miami". Neighborhood-specific searches are processed first; the original city-wide search serves as a fallback. Adds approximately 10 seconds of setup time before discovery begins.
All Businesses (allBusinesses: true)
Ignores the niche field entirely. Searches 12 universal English-language terms that resolve on Google Maps in any locale: restaurant, hotel, shop, store, service, salon, clinic, school, museum, bank, parking, gas station. Useful for broad market surveys of a geographic area.
Economy Mode
When enableEconomy: true, the Actor monitors the new-lead rate during discovery. If the rate consistently drops below the minimum threshold, discovery stops automatically. Domain Enrichment and Image Extraction continue for all already-discovered leads.
Economy Mode is useful when searching dense areas where the Actor may have collected the vast majority of available leads and the remaining grid areas yield heavily duplicated results. It prevents extended run time and unnecessary charges in areas that are effectively exhausted.
Image Extraction
For extracting business photos from Google Maps listings, use the companion Google Maps Image Extractor actor. It accepts a list of Google Maps CIDs or URLs and returns photo URLs for each business.
Performance and limits
| Parameter | Value |
|---|---|
| Default memory | 1024 MB |
| Minimum memory | 1024 MB |
| Maximum memory | 4096 MB |
| Default timeout | 10 minutes |
| Maximum timeout | 120 minutes |
| Maximum target leads | 5000 per run |
For runs targeting more than 500 leads, consider increasing timeoutMinutes to 30 or more and maxMemoryMbytes to 2048.
Pricing
This Actor uses Pay-Per-Event (PPE) pricing. You are charged only for results delivered, not for compute time.
| Event | Description |
|---|---|
lead-pushed | Charged per unique lead pushed to the output dataset. |
domain-validated | Charged per domain processed by Domain Intel (only when enableDomainIntel: true). |
zone-explored | Charged per geographic grid cell searched during discovery. |
The Actor respects your PPE budget limit. When the charge limit is reached, discovery stops and all leads collected so far are exported cleanly.