Google Maps Leads Scraper avatar

Google Maps Leads Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Google Maps Leads Scraper

Google Maps Leads Scraper

A fast, high-performance scraper built for lead generation, competitor analysis, and business intelligence. Extracts detailed business profiles, including name, contact details, emails, phone numbers, location, ratings, and reviews from Google. Supports custom search URLs, proxy rotation, and pag...

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Share

Extract source-backed business leads from Google Maps search results. The actor prioritizes Google Maps data responses and uses the current result feed only as a business-scoped fallback.

What it returns

Every record has a business name plus meaningful evidence such as a place ID/CID, address, contact detail, website, or coordinate pair. Fields are omitted when Google did not supply them; the actor does not emit nulls, empty values, invented descriptions, fabricated URLs, or default closure flags.

Depending on source availability, output can include:

  • business name, category/categories, full and split address
  • phone, website, and normalized website domain
  • rating, review count, price level, and sourced opening status
  • permanent closure only when explicitly true in the source
  • Place ID, CID, Google entity ID, coordinates, timezone, and country
  • source-backed thumbnail/photo URLs
  • Maps search source URL, exact or canonical business Maps URL, search/rank/global-position provenance
  • fingerprint, actual proxy-session strategy, extraction method, and timestamp

Input

FieldTypeDefaultDescription
searchTermsstring[]required1–50 unique, nonempty searches
maxLeadsinteger20Exact upper bound per term, from 1 to 500
languagestringenMaps language, such as en or pt-BR
countrystringUSTwo-letter localization code, sent as Maps gl
fingerprintProfilestringchrome-windowschrome-windows or chrome-macos
proxySessionIdstringblankOptional fixed-session label; _, ., and ~ are allowed
proxyConfigurationobjectApify ResidentialApify/custom proxy configuration, or direct mode

Direct mode:

{
"searchTerms": ["dentists in New York"],
"maxLeads": 20,
"language": "en",
"country": "US",
"proxyConfiguration": {
"useApifyProxy": false
}
}

maxLeads applies to each term. Results are deduplicated globally by Place ID/CID and then normalized business/address identity. Consequently a later term may emit fewer than its limit when it overlaps an earlier term. resultRank is the source-result rank attempted for that term; position is contiguous across all emitted records. Concurrency is fixed at one to keep those values deterministic.

Proxy and browser provenance

The default is Apify Residential proxy. proxySessionStrategy is based on the crawler’s actual request proxy information: direct when no proxy was used, fixed when the resolved proxy has a session ID, and rotating otherwise. It is not inferred from a requested label alone.

Each browser profile applies one consistent Chrome 152 desktop user agent, platform, viewport, locale, Accept-Language, and country-derived timezone. The actor uses the stealth plugin but does not globally spoof Sec-Fetch-* headers.

extractionMethod is maps-api for API-only data, dom-fallback for a feed-link identity record, and maps-api+dom when rich API fields were merged with an exact captured /maps/place/ URL. mapsUrl always identifies a specific business; the Maps search page remains separate in sourceUrl.

Example output

{
"businessName": "Example Dental",
"category": "Dentist",
"categories": ["Dentist", "Dental clinic"],
"address": "1435 Broadway, New York, NY 10018, United States",
"street": "1435 Broadway",
"city": "New York",
"state": "NY",
"postalCode": "10018",
"countryCode": "US",
"phone": "+1 212-555-0100",
"website": "https://example.com/",
"domain": "example.com",
"rating": 4.8,
"placeId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
"latitude": 40.753,
"longitude": -73.987,
"mapsUrl": "https://www.google.com/maps/place/?q=place_id%3AChIJN1t_tDeuEmsRUsoyG83frY4",
"sourceUrl": "https://www.google.com/maps/search/dentists%20in%20New%20York?hl=en&gl=us",
"searchTerm": "dentists in New York",
"searchTermIndex": 1,
"resultRank": 1,
"position": 1,
"scrapedAt": "2026-07-29T10:30:00.000Z",
"fingerprintProfile": "chrome-windows",
"proxySessionStrategy": "rotating",
"extractionMethod": "maps-api"
}

The example illustrates the shape; output is always obtained from the live source. The actor fails the run when all attempted terms yield zero usable records. CAPTCHA, consent, and unusual-traffic pages are treated as blocks instead of successful empty results.

Local checks

npm run lint
npm test
npm run validate

OUTPUT records requested and attempted search-term counts, the per-term limit, total leads, data availability, proxy mode, and finish time. npm run lint uses ESLint 10 and its flat configuration. npm run validate intentionally exits nonzero when no dataset JSON files exist. It rejects null/blank/empty values, undeclared fields, wrong types, search URLs used as business URLs, invalid URL paths/ranges/enums, orphan metric pairs, duplicate identities, and noncontiguous global positions.

USA Beauty & Spa compatibility mode

This maintained Google Maps implementation is also the local public-source equivalent for the inventory entry USA Beauty & Spa Extractor. It accepts that entry's categories, sourceCategories, matchType, and limit aliases. Categories become bounded public Google Maps searches such as beauty salons in United States; results add name, source_category, source_platform, and target_match_type aliases while retaining the richer Maps fields. The public equivalent does not claim that Google Maps is the proprietary registry/index described by the Store listing, and it does not invent email addresses when the public listing does not expose one. Direct requests are used when this compatibility input omits proxyConfiguration; no Apify proxy or credential is required for the compatibility smoke test.