Google Maps Leads & Domain Intelligence avatar

Google Maps Leads & Domain Intelligence

Pricing

from $1.00 / 1,000 lead pusheds

Go to Apify Store
Google Maps Leads & Domain Intelligence

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

Expandí tu Marca

Maintained by Community

Actor stats

3

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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

ParameterTypeDefaultDescription
locationstringRequired. Geographic area to search. Examples: Miami, FL, New York, NY, Buenos Aires.
nichestringcoffee shopsType 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.
countrystringCountry name to disambiguate location and normalize phone numbers. Recommended when using a proxy. Examples: United States, Argentina, España.
languagestring(default)Interface language for Google Maps results. Affects category names and labels. Accepts BCP 47 codes: en, es, pt-BR, fr, de, etc.
targetLeadsinteger50Number of unique leads to find. Range: 5–5000.
timeoutMinutesinteger10Maximum run time in minutes. The Actor stops gracefully and exports all found leads when the timeout is reached. Range: 2–120.
enableDomainIntelbooleanfalseAnalyze 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.
enableEconomybooleanfalseStop discovery automatically when the new-lead rate consistently drops below the minimum threshold. Useful for capping cost when an area is nearly exhausted.
onlyWithWebsitebooleanfalseExclude leads that have no website or whose website is a social media profile (Instagram, Facebook, etc.).
minRatingnumberSkip businesses with a Google Maps rating below this value. Examples: 3.5, 4.0, 4.5. Range: 1–5.
allBusinessesbooleanfalseIgnore 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.
useCategoriesbooleanfalseWhen the primary search stagnates before reaching the target, automatically discover related business categories from already-collected leads and use them as additional search terms.
useSubLocationsbooleanfalseBefore 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.

FieldTypeDescription
thumbnailUrlstringURL of the business's primary Google Maps thumbnail photo. Empty string if unavailable.
placeIdstringGoogle Maps Place ID (format: ChIJ...). Empty string if unavailable.
titlestringBusiness name as it appears on Google Maps.
addressstringFull address string from Google Maps. Empty string if unavailable.
descriptionstringBusiness description or "about" text from Maps. Empty string if unavailable.
categorystringPrimary business category as labeled by Google Maps.
websitestringBusiness 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.
socialMediaarray of stringsSocial media profile URLs detected from the Maps listing (Instagram, Facebook, LinkedIn, etc.). Empty array when none detected.
domainIntelobject or nullDomain 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.
phonestringPhone number as listed on Google Maps. Empty string if unavailable.
priceLevelstringPrice level indicator: $, $$, $$$, or $$$$. Empty string if unavailable.
openingHoursarray of stringsOpening 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.
ratingnumber or stringGoogle Maps star rating (1.0–5.0). Empty string if the business has no rating.
reviewCountnumber or stringNumber of Google Maps reviews. Empty string if unavailable.
bookingLinksarray of stringsBooking or reservation link if listed on the Maps panel. Empty array if unavailable.
googleMapsIdsobjectGoogle Maps identifiers. Contains cid (decimal CID) and fid (raw hex CID).
positionintegerDiscovery sequence number of this lead within the run (1-based).
discoveredBystringThe search term that produced this lead.
searchOriginstringHow this lead was discovered: direct (user-specified niche), sub-location (neighborhood search), or categories (Smart Categories expansion).
latitudenumber or stringLatitude coordinate from Google Maps. Empty string if unavailable.
longitudenumber or stringLongitude coordinate from Google Maps. Empty string if unavailable.
googleMapsUrlstringDirect URL to the business's Google Maps listing.

domainIntel object

Present on leads that have a real company website when enableDomainIntel is true.

FieldTypeDescription
servicesarray of stringsBusiness services detected via DNS TXT records. Examples: Google Workspace, Microsoft 365, HubSpot, Shopify, Mailchimp, Zendesk. Empty array if none detected.
whoisAgedaysinteger or nullDomain age in days from WHOIS registration date to today. null if WHOIS lookup failed or returned no creation date.
whoisCreatedstring or nullDomain registration date in YYYY-MM-DD format. null if unavailable.
registrarstring or nullDomain registrar name from WHOIS. null if unavailable.
serverCountrystringISO 3166-1 alpha-2 country code of the server hosting the website, resolved via IP geolocation. Empty string if lookup failed.
sslValidbooleanWhether the SSL certificate is valid and not expired at the time of the run.
sslDaysRemainingintegerNumber of days until SSL certificate expiry. 0 if the certificate is expired or not present.
sslExpirystringSSL certificate expiry date in YYYY-MM-DD format. Empty string if unavailable.
sslIssuerstringSSL 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

ParameterValue
Default memory1024 MB
Minimum memory1024 MB
Maximum memory4096 MB
Default timeout10 minutes
Maximum timeout120 minutes
Maximum target leads5000 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.

EventDescription
lead-pushedCharged per unique lead pushed to the output dataset.
domain-validatedCharged per domain processed by Domain Intel (only when enableDomainIntel: true).
zone-exploredCharged 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.