Google Maps Business Leads Scraper — Email, Phone & Socials
Pricing
from $3.50 / 1,000 results
Google Maps Business Leads Scraper — Email, Phone & Socials
Scrape Google Maps businesses by search query and enrich into leads: name, phone, website, rating, address, category, coordinates + email and social profiles from each website. Local B2B lead-gen. Independent tool, not affiliated with or endorsed by Google.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
18 hours ago
Last modified
Categories
Features
Share
📍 Google Maps Business Leads Scraper — Email, Phone & Socials
Turn Google Maps searches into structured, outreach-ready B2B sales lead lists. Extract local business listings across any industry and geographic territory — capturing verified company names, primary categories, Google star ratings, total review counts, formatted physical addresses, GPS coordinates, local and international phone numbers, and website URLs.
When contact enrichment is enabled, the actor automatically navigates to each business's website and extracts direct email addresses (including mailto links and contact page crawling) alongside verified social media profiles across Facebook, Instagram, LinkedIn, Twitter/X, and YouTube.
Export directly to JSON, CSV, Excel, or API — or feed real-time prospect data directly into your CRM, cold outreach workflows, Google Sheets, Zapier, or Make.
⚡ At a glance
| Feature | Specification |
|---|---|
| Data Source | Google Maps Local Business Directory & Live Company Websites |
| Search Syntax | Standard search queries ("<category> in <city, state/country>") |
| Pagination Model | Deep pagination per query (20 places/page, set 0 for auto/unlimited) |
| Contact Enrichment | In-depth website crawling for verified email addresses & social media profiles |
| Supported Socials | LinkedIn, Facebook, Instagram, Twitter / X, YouTube |
| Throughput Speed | ~40–60 enriched leads per minute (~15–30s on prefill runs) |
| Deduplication | Automatic deduplication by Google Place ID (0% duplicates) |
| Export Formats | Dataset (JSON, CSV, XML, Excel) & Key-Value Store OUTPUT mirror |
| Proxy Requirement | Apify Proxy Datacenter (enabled by default, fully supported) |
| Default Sample Run | Automatic dual-market sample (Miami & Seattle) when run with {} |
🔎 Why scrape Google Maps for business leads?
Google Maps is the world's most expansive, continuously updated directory of local commerce. Every brick-and-mortar store, professional service firm, contractor, clinic, and independent agency maintains a verified presence with hours, phone numbers, and operational websites.
However, a standard Google Maps listing alone is insufficient for scalable B2B outbound campaigns:
- Missing Direct Email Contacts: Google Maps displays phone numbers and physical locations, but hides direct emails.
- Missing Social Media Profiles: Sales teams require LinkedIn company profiles and Instagram handles to multi-thread outreach across channels.
- Manual Data Entry Bottleneck: Visiting hundreds of individual websites, parsing footers, and copying contact info manually takes dozens of rep hours per campaign.
This scraper solves the entire lead generation pipeline in a single automated step: it queries Google Maps, extracts every business record, and visits each corresponding website in parallel to harvest verified emails and social channels.
Primary Use Cases:
- High-Velocity Cold Email & Calling: Generate hyper-targeted lists of local contractors, dental clinics, accountants, or restaurants with validated phone numbers and email addresses.
- Agency Client Acquisition: Discover local businesses with subpar review counts, missing social links, or incomplete websites to pitch web design, SEO, and reputation management services.
- Territory Planning & Market Penetration: Map competitive density and service saturation across target cities or metropolitan areas.
- CRM Enrichment & Hygiene: Cleanse and update existing client accounts with verified geographic coordinates, active domains, and refreshed phone numbers.
- Local Marketplace Seeding: Populate vertical directories and local discovery platforms with structured, categorized business data.
✨ Key features
- 🎯 Natural Language Query Flexibility: Search in any natural format (
"plumbers in Austin TX","coffee shops in Seattle","law firms in London"). Run multiple queries concurrently in a single batch. - ⚡ Deep Multi-Page Pagination (1,000+ Results): Automatically paginates through consecutive 20-listing result sets without hitting arbitrary stopping limits.
- 📧 Automated Multi-Source Email Extraction: Scrapes direct
mailto:links, scans full homepage HTML, and intelligently crawls secondary/contactand/aboutsubpages if the homepage lacks an email. - 📱 Multi-Platform Social Profile Harvesting: Detects and verifies profile links across LinkedIn (company & personal pages), Facebook, Instagram, Twitter/X, and YouTube.
- 🧹 Robust Deduplication Engine: In-memory caching by Google Place ID prevents duplicate records even when executing overlapping geographic or category searches.
- 🌍 Global Coverage: Operates across all international Google Maps locales, languages, and country domains.
- 🚀 Parallel HTTP Architecture: Concurrently crawls up to 6 websites simultaneously, maintaining rapid execution speeds while adhering to proxy rotation standards.
📥 Input parameters
The actor features user-friendly, sensible defaults. All properties can be customized via the web console or JSON API payload.
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | array | ["dentists in Miami FL", "coffee shops in Seattle WA"] | Search terms in <what> in <where> format. Each query is processed independently. |
includeEmails | boolean | true | When true, crawls each business website to extract emails and social media profiles. |
maxPagesPerQuery | integer | 0 | Maximum pages to paginate per query (20 businesses/page). Set 0 for auto/unlimited governed by maxItems. |
maxItems | integer | 0 | Total maximum businesses to scrape across all queries (0 = no limit; prefilled to 50 for fast validation). |
proxyConfiguration | object | { "useApifyProxy": true } | Proxy configuration. Apify Datacenter proxies are enabled by default. |
📊 Data fields & output structure
Every record represents a unique local business enriched with both Google Maps directory metadata and website contact intelligence.
🏢 Core Directory Data (from Google Maps)
| Field | Type | Coverage | Description |
|---|---|---|---|
placeId | string | 🟢 High (100%) | Unique Google Place ID identifier |
name | string | 🟢 High (100%) | Official registered business name |
category | string | 🟢 High (>98%) | Primary business classification category |
categories | string | 🟢 High (>95%) | Full array of secondary industry categories |
rating | string | 🟢 High (>90%) | Google Maps average star rating (1.0–5.0) |
reviewCount | string | 🟢 High (>90%) | Total number of published customer reviews |
phone | string | 🟢 High (>95%) | Local formatted telephone number |
phoneIntl | string | 🟢 High (>95%) | International formatted telephone number with country code |
website | string | 🟢 High (>85%) | Clean destination website URL |
websiteDomain | string | 🟢 High (>85%) | Extracted root domain name |
address | string | 🟢 High (100%) | Complete street address, city, state, and postal code |
latitude | string | 🟢 High (100%) | WGS84 geographic latitude coordinate |
longitude | string | 🟢 High (100%) | WGS84 geographic longitude coordinate |
googleMapsUrl | string | 🟢 High (100%) | Direct permalink to Google Maps place page |
query | string | 🟢 High (100%) | Originating search query term |
scrapedAt | string | 🟢 High (100%) | ISO 8601 scrape timestamp |
✉️ Contact & Social Media Intelligence (from Website Enrichment)
| Field | Type | Coverage | Description |
|---|---|---|---|
email | string | 🟡 Conditional (~50–70%) | Primary detected email address for outreach |
emails | string | 🟡 Conditional (~50–70%) | Array of all verified unique email addresses discovered |
facebook | string | 🟡 Conditional (~40–60%) | Extracted Facebook company page handle or URL |
instagram | string | 🟡 Conditional (~40–60%) | Extracted Instagram business profile handle |
linkedin | string | 🟡 Conditional (~30–50%) | Extracted LinkedIn company page or professional profile |
twitter | string | 🟡 Conditional (~20–40%) | Extracted Twitter / X handle |
youtube | string | 🟡 Conditional (~15–30%) | Extracted YouTube channel link |
💡 Example output record
{"placeId": "ChIJN1t_tDeuEmsRUsoyG83frY4","name": "Biscayne Dental Center","category": "Dentist","categories": ["Dentist","Cosmetic Dentist","Dental Clinic","Emergency Dental Service"],"rating": 4.9,"reviewCount": 482,"phone": "(305) 555-0142","phoneIntl": "+1 305-555-0142","website": "https://www.biscaynedentalcenter.com","websiteDomain": "biscaynedentalcenter.com","address": "14400 Biscayne Blvd, North Miami, FL 33181, United States","latitude": 25.9084,"longitude": -80.1542,"email": "info@biscaynedentalcenter.com","emails": ["info@biscaynedentalcenter.com","appointments@biscaynedentalcenter.com"],"facebook": "biscaynedental","instagram": "biscaynedentalmiami","linkedin": "company/biscayne-dental-center","twitter": "biscaynedental","googleMapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJN1t_tDeuEmsRUsoyG83frY4","query": "dentists in Miami FL","scrapedAt": "2026-11-10T16:42:00.000Z"}
🎯 Practical input recipes
Recipe 1: Local Contractor Outreach Campaign
Extract plumbers across multiple metropolitan areas with email enrichment:
{"searchQueries": ["plumbers in Dallas TX","plumbing contractors in Fort Worth TX","commercial plumbing in Arlington TX"],"includeEmails": true,"maxItems": 300}
Recipe 2: High-Speed Directory Extraction (Without Enrichment)
Extract high-volume directory listings at maximum speed without visiting websites:
{"searchQueries": ["coffee shops in Brooklyn NY","bakeries in Manhattan NY","cafes in Queens NY"],"includeEmails": false,"maxPagesPerQuery": 0,"maxItems": 1000}
Recipe 3: Niche B2B Legal & Professional Services
Audit law firms with direct partners and practice leads:
{"searchQueries": ["corporate law firms in Chicago IL","intellectual property attorneys in Chicago IL"],"includeEmails": true,"maxItems": 150}
Recipe 4: International Real Estate Agencies
Map real estate brokerages in major European capitals:
{"searchQueries": ["real estate agencies in London UK","immobilier in Paris France","agencias inmobiliarias in Madrid Spain"],"includeEmails": true,"maxItems": 250}
Recipe 5: High-Density Hospitality & Restaurants
Harvest restaurant leads across target neighborhoods:
{"searchQueries": ["italian restaurants in Brooklyn NY","french bistros in Manhattan NY"],"includeEmails": true,"maxPagesPerQuery": 0,"maxItems": 200}
Recipe 6: Local Fitness & Wellness Studios
Generate prospects for gym and wellness equipment sales:
{"searchQueries": ["yoga studios in Los Angeles CA","crossfit gyms in San Diego CA"],"includeEmails": true,"maxItems": 150}
💡 Optimization & best practices
- Query Structuring: Format queries as
"<industry/trade> in <city, state/country>". For large metropolitan regions, break queries down by borough, neighborhood, or postal code to uncover long-tail listings. - Speed vs. Depth Trade-Off: If you only require business phone numbers, addresses, and ratings, set
includeEmails: false. This boosts scraping throughput to several hundred listings per minute. - Managing High-Volume Leads: When targeting 1,000+ businesses across a state, pass 10–20 specific city queries and keep
maxPagesPerQuery: 0so the engine auto-exhausts each locality before moving to the next. - Filtering by Review Thresholds: Use post-processing filters in CSV or Python to isolate established businesses (e.g.,
rating >= 4.0andreviewCount >= 50) or target struggling businesses for reputation management pitches (rating < 4.0). - Enrichment Coverage Expectations: Expect phone numbers and physical addresses on >95% of listings. Email and social coverage typically reaches 50–70% of listings with active domains, as some businesses do not publish public email addresses on their websites.
🚀 How to use & integrate
- Configure Search Scope: Input your desired search queries into the console.
- Toggle Enrichment: Keep
includeEmails: truefor full contact intelligence, or disable for raw directory records. - Execute Run: Launch directly via Apify Console or trigger via API:
curl --request POST \--url "https://api.apify.com/v2/acts/haketa~google-maps-contacts-scraper/runs?token=YOUR_API_TOKEN" \--header 'Content-Type: application/json' \--data '{"searchQueries": ["dentists in Miami FL"], "includeEmails": true, "maxItems": 50}'
- Export & Automate:
- Sales Engagement: Import CSV directly into Apollo, Lemlist, Instantly, or HubSpot.
- Spreadsheets: Automatically sync new leads to Google Sheets via Apify integration.
- Webhooks: Trigger instant webhook notifications to your backend whenever a batch finishes.
❓ Frequently asked questions
Is scraping Google Maps legal?
Yes. The actor extracts publicly available commercial directory information and public website data displayed openly by businesses for discovery. Ensure your outreach complies with applicable communications regulations (such as CAN-SPAM, GDPR, and CASL).
Do I need a Google Cloud API key?
No. You do not need a Google Cloud account, billing setup, or Google Places API key. The actor operates completely independently.
How many leads can I extract in a single run?
You can extract hundreds to thousands of leads. By supplying multiple neighborhood or city queries, you can scale to 10,000+ records seamlessly.
Why do some businesses lack an email address?
Emails are extracted directly from the business's public website. If a business does not have a website, or uses a contact form exclusively without displaying a plain-text email or mailto: link, the email field remains blank while preserving all phone and address data.
How does deduplication work?
The scraper tracks Google Place IDs across all search queries in a run. If the same business appears under multiple related searches, it is stored only once in the dataset.
Can I target businesses in non-English speaking countries?
Yes. You can write search queries in any language (e.g., "restaurantes en Madrid", "coiffeur à Paris", "zahnarzt in Berlin"). Google Maps returns local listings matching the target language and geography.
How fast does website enrichment run?
Website crawling executes concurrently across 6 parallel threads. Enriching 50 businesses typically completes in approximately 20–45 seconds.
What phone number formats are returned?
The actor extracts both the standard local display format in phone (e.g. (305) 555-0142) and the international E.164 standardized telephone format in phoneIntl (e.g. +1 305-555-0142), allowing direct integration with VoIP dialers and SMS automation platforms.
How does the scraper avoid false-positive email addresses?
The email parser filters out image asset names (e.g., .png, .jpg), web font assets, tracking pixels, platform CDN addresses (such as wixpress.com, sentry.io), and generic placeholder addresses (example.com).
What happens if a target website is slow or down?
Each website fetch has a strict 15-second timeout and 2 retries. If a website fails to load or times out, the business listing is preserved intact with all directory fields populated, and the actor proceeds immediately to the next record without halting the run.
Can I schedule recurring lead generation runs?
Yes. You can use Apify's built-in Scheduler to automatically run fresh searches weekly or monthly, piping newly opened businesses directly into your CRM or Google Sheet.
What export formats are supported?
You can download your lead dataset in JSON, CSV, Excel (XLSX), XML, or HTML table format directly from the Apify Console. You can also query the dataset via the Apify REST API in real time.
🛠️ Step-by-step code integration examples
Python Integration with Apify Client
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")# Run Google Maps Leads Scraperrun = client.actor("haketa/google-maps-contacts-scraper").call(run_input={"searchQueries": ["dentists in Miami FL"],"includeEmails": True,"maxItems": 50,})# Fetch results from datasetdataset_items = client.dataset(run["defaultDatasetId"]).list_items().itemsfor item in dataset_items:print(f"Business: {item.get('name')} | Phone: {item.get('phone')} | Email: {item.get('email')}")
Node.js / JavaScript Integration
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/google-maps-contacts-scraper').call({searchQueries: ['dentists in Miami FL'],includeEmails: true,maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Extracted ${items.length} enriched business leads.`);
🔗 Related lead generation scrapers
- Bing Maps Business Leads Scraper — Extract business leads with emails from Bing Maps.
- EPA ECHO Compliance Scraper — Extract US industrial facilities, compliance status, and penalties.
- ProPublica Nonprofit Scraper — IRS Form 990 nonprofit leads, executive compensation, and grants.
- Google News Scraper — Live news search, headlines, and sentiment tracking.
📋 Changelog
v1.2 (2026-11)
- Deep Pagination Unlocked: Fully unlocked continuous multi-page pagination for 1,000+ businesses;
maxPagesPerQuery: 0now executes as unlimited pagination governed bymaxItems. - Fast Prefill Optimization: Adjusted prefill limits to 50 records for rapid sub-30s sample verification with full email enrichment.
- Default Fallback Robustness: Added safe fallback defaults (Miami dentists, Seattle coffee) ensuring runs with empty input payloads execute reliably with ~50 sample leads.
- Enhanced Contact Parsing: Upgraded regex patterns to improve email extraction from contact and about subpages while filtering tracking pixels and asset URLs.
v1.1 (2026-10)
- Multi-Query Support: Added concurrent multi-query processing with unified dataset aggregation.
- Place ID Deduplication: Introduced in-memory place ID indexing to eliminate duplicate business records across overlapping queries.
v1.0 (2026-09)
- Initial release featuring Google Maps directory parsing and multi-channel email/social enrichment.