Google Maps Email Extractor & Lead Finder

Extract emails, phone numbers, and business contacts from Google Maps. Scrape any location or business category with website enrichment and contact page crawling.

Data fields

FieldTypeDescription

Input preview

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Generate Google Maps business leads with public contact details, emails, phone numbers, websites, ratings, and location data for sales and market research.

Google Maps lead generation and business contact data

Google Maps Lead Finder is a Google Maps contact scraper for Google Maps business listings. Search by keyword and location, then export structured business leads with emails, phone numbers, ratings, reviews, and lead scores. Use it as a Google Maps leads scraper for repeatable prospecting workflows. It enriches each business by visiting their website to extract contact emails and social media links — giving you ready-to-use B2B lead lists from any market worldwide.

Why use Google Maps Lead Finder?

  • Complete contact data — extracts phone, website, email, and social links in one run
  • Built-in lead scoring — transparent 0–100 score ranks leads by outreach potential
  • Website enrichment — automatically visits business homepages and contact pages to find emails and social profiles
  • Lead quality filters — filter by minimum rating, require website, or require email to get only high-quality leads
  • Multi-location expansion — combine keywords × locations for city-by-city market scans
  • Smart deduplication — eliminates duplicate businesses across overlapping searches
  • Works worldwide — supports 14 languages and 19 country targets for global prospecting

Who is it for?

  • Sales teams prospecting local businesses for outreach campaigns
  • Marketing agencies building targeted client lists for their verticals
  • Real estate agents finding local service providers and referral partners
  • Researchers studying local business landscapes and market density
  • Recruiters sourcing company contacts and hiring leads in specific cities
  • Entrepreneurs doing competitive analysis and scouting new markets

What data can you extract?

Field Example
name Rescue Plumbing
category Plumber
address 3523 N Spaulding Ave, Chicago, IL 60618
city Chicago
phone +1 773-799-8848
website https://www.rescueplumbing.com
email info@rescueplumbing.com
rating 4.9
reviewsCount 1284
leadScore 45
enrichment.socialLinks { "facebook": "...", "instagram": "..." }
googleMapsUrl Full Google Maps link
scrapedAt 2026-02-28T12:00:00.000Z

Plus: placeId, fid, cid, categories, postalCode, countryCode, location (lat/lng), plusCode, businessStatus, priceLevel, openingHours, isOpen, mainPhotoUrl, searchQuery, searchLocation, dedupeKey, leadScoreBreakdown, emailVerification, and the full enrichment object.

How to scrape Google Maps leads

  1. Click "Start" on the actor page or use the API.
  2. Enter search queries — business keywords like plumber, dentist pediatric, or yoga studio.
  3. Add locations (optional) — cities or regions like Chicago, IL or Berlin, Germany. Each query is combined with each location.
  4. Set max leads — limit results to control cost and run time.
  5. Run and export — download results as JSON, CSV, or Excel, or connect via API.

Example input

{
  "searchQueries": ["plumber"],
  "locations": ["Chicago, IL"],
  "maxLeads": 5,
  "minRating": 4.0,
  "requireWebsite": true,
  "language": "en",
  "countryCode": "US",
  "includeWebsiteEnrichment": true
}

Input recipes

Local service leads: use searchQueries: ["plumber"], locations: ["Chicago, IL"], and maxLeads: 10.

Email-ready prospects: add requireEmail: true and keep includeWebsiteEnrichment: true to return only businesses with a public email found on their website.

Multi-city research: provide several locations; the Actor searches every query/location combination and deduplicates overlapping businesses.

Input parameters

Parameter Type Default Description
searchQueries string[] required Business keywords to search on Google Maps (e.g., "plumber", "dentist Berlin"). Each query becomes a separate Maps search.
locations string[] [] Optional city or region names. When set, each query is combined with each location for comprehensive coverage.
maxLeads integer 100 Maximum number of unique leads to return. Lower values reduce cost and run time.
language string en Language for Google Maps results. Controls the language of returned business names and addresses.
countryCode string US Country targeting for Google search. Helps return results relevant to the selected country.
minRating number Only include businesses with at least this Google rating (1.0–5.0). Leave empty to include all.
requireWebsite boolean false Only include businesses that have a website URL listed on Google Maps.
requireEmail boolean false Only include businesses where an email address was found (requires website enrichment).
includeWebsiteEnrichment boolean true Visit each business website to extract emails and social media links. Disable to speed up runs when you only need basic listing data.
enrichmentTimeoutSecs integer 15 Timeout in seconds when fetching business websites. Increase for slow-loading sites, decrease for faster runs.
verifyEmails boolean false Opt-in email verification. When enabled, adds an emailVerification field with confidence score, MX status, provider detection, and disposable/role/free-provider flags. Free — no extra charge.
verificationLevel string mx How deeply to verify each email. format — syntax only. mx — also checks DNS MX records (recommended). smtp — also attempts SMTP handshake (slowest; catch-all/Gmail/M365 results may be inconclusive).
dedupeStrategy string placeIdAndAddress How to identify duplicate businesses. placeId uses Google's ID only; placeIdAndAddress also compares addresses for stricter matching.
proxyConfiguration object platform default Apify proxy settings. Uses residential proxies by default for best results.
debugMode boolean false Enable verbose logging for troubleshooting. Shows detailed parser diagnostics in the run log.

Output example

{
  "placeId": "ChIJ0a3bMi0tDogRYzgJSKhi8pQ",
  "fid": "0x880e2d2d32db1ad1:0x94f262a4094933063",
  "cid": "10743905823605944419",
  "name": "Rescue Plumbing",
  "category": "Plumber",
  "categories": ["Plumber"],
  "address": "3523 N Spaulding Ave, Chicago, IL 60618",
  "city": "Chicago",
  "postalCode": "60618",
  "countryCode": "US",
  "location": { "lat": 41.9463, "lng": -87.7113 },
  "phone": "+1 773-799-8848",
  "website": "https://www.rescueplumbing.com",
  "rating": 4.9,
  "reviewsCount": 1284,
  "businessStatus": null,
  "priceLevel": null,
  "openingHours": ["Open · Closes 10 PM"],
  "isOpen": true,
  "plusCode": null,
  "mainPhotoUrl": null,
  "emailVerification": null,
  "googleMapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJ0a3bMi0tDogRYzgJSKhi8pQ",
  "searchQuery": "plumber",
  "searchLocation": "Chicago, IL",
  "dedupeKey": "ChIJ0a3bMi0tDogRYzgJSKhi8pQ|3523 n spaulding ave, chicago, il 60618",
  "leadScore": 45,
  "leadScoreBreakdown": {
    "ratingPotential": 5,
    "lowReviewOpportunity": 0,
    "hasWebsite": 0,
    "hasEmail": 20,
    "hasPhone": 10
  },
  "enrichment": {
    "homepageFetched": true,
    "emails": ["info@rescueplumbing.com"],
    "socialLinks": {
      "facebook": "https://www.facebook.com/rescueplumbing",
      "instagram": "https://www.instagram.com/rescueplumbing"
    },
    "contactPageHint": "https://www.rescueplumbing.com/contact"
  },
  "scrapedAt": "2026-02-28T12:00:00.000Z"
}

Email verification (opt-in)

Set verifyEmails: true to add inline email verification to each lead. This is free — no extra charge per event.

When enabled, the output includes an emailVerification object for each lead that has an email:

{
  "emailVerification": {
    "email": "info@rescueplumbing.com",
    "isValidFormat": true,
    "hasMxRecords": true,
    "isVerified": false,
    "confidenceScore": 35,
    "isDisposable": false,
    "isFreeProvider": false,
    "isRoleAccount": true,
    "provider": "google_workspace"
  }
}

Confidence score guide

Score Meaning
0–20 Invalid or very low quality (bad syntax, disposable)
30–44 Valid format, no MX records
45 MX records found — domain accepts mail
60 SMTP accepted but catch-all detected — cannot confirm individual mailbox
95 SMTP confirmed — mailbox exists (non-catch-all)

Note on SMTP level: Gmail and Microsoft 365 often return inconclusive results for catch-all detection. confidenceScore: 60 honestly reflects this ambiguity. Use mx (the default) for fast, reliable domain-level validation.

Tips for best results

  • Use specific queries — "dentist pediatric" works better than just "dentist" for targeted leads.
  • Add locations for city-level targeting — combine queries with city names for cleaner geographic results.
  • Start small — test with 5–10 leads before scaling to hundreds. It's cheaper and faster to iterate.
  • Keep enrichment enabled — website enrichment finds emails and social links that Google Maps doesn't show.
  • Increase enrichment timeout for slow regions — some international sites load slowly; try 25–30 seconds.
  • Use placeIdAndAddress dedup (default) — catches duplicate listings that share a Place ID but have different addresses.
  • Check lead scores — higher scores mean more outreach potential (missing website = opportunity, has email = actionable).
  • Export to CSV for CRM import or use the API for automated pipelines.

Integrations

Connect Google Maps Lead Finder with your existing tools and workflows:

  • Google Sheets — Automatically append new leads to a shared spreadsheet for your sales team
  • Zapier — Send new leads to HubSpot, Salesforce, or Mailchimp when a run completes
  • Make (formerly Integromat) — Build multi-step workflows: scrape leads, enrich emails, then push to your CRM
  • Slack — Get notified when new leads are ready for review
  • Webhooks — Send results directly to your own API endpoint for custom processing

See all integrations for the full list.

API usage

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('fetch_cat/google-maps-lead-finder').call({
  searchQueries: ['plumber'],
  locations: ['Chicago, IL'],
  maxLeads: 50,
  includeWebsiteEnrichment: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient

client = ApifyClient('YOUR_API_TOKEN')

run = client.actor('fetch_cat/google-maps-lead-finder').call(run_input={
    'searchQueries': ['plumber'],
    'locations': ['Chicago, IL'],
    'maxLeads': 50,
    'includeWebsiteEnrichment': True,
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~google-maps-lead-finder/runs?token=YOUR_API_TOKEN&waitForFinish=120" \
  -H "Content-Type: application/json" \
  -d '{
    "searchQueries": ["plumber"],
    "locations": ["Chicago, IL"],
    "maxLeads": 50,
    "includeWebsiteEnrichment": true
  }'

Use with AI agents via MCP

Google Maps Lead Finder is available as a tool for AI assistants that support the Model Context Protocol (MCP).

Setup for Claude Code

claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/google-maps-lead-finder"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com?tools=fetch_cat/google-maps-lead-finder"
        }
    }
}

Example prompts

Once connected, try asking your AI assistant:

  • "Find all dentists in Austin, TX with their phone numbers and websites"
  • "Get all restaurants within 5 miles of Times Square with ratings above 4 stars"
  • "Search Google Maps for plumbers in London and enrich with email addresses"

Learn more in the Apify MCP documentation.

When to use Website Contact Finder

This Actor is the discovery-first option for category × location searches and includes website enrichment. Use Website Contact Finder when you already have a domain list or need a bounded crawl with contact source URLs, crawl diagnostics, and optional MX checks.

Support

Questions or unexpected results? Open an issue from the Actor's Issues tab with your public input and run ID. Do not include private credentials, cookies, or personal data.

Common questions

Questions and answers reused from the canonical actor README.

How can I extract emails from Google Maps businesses?

Enable includeWebsiteEnrichment. The Actor collects each public business website and extracts contact emails from the pages it visits.

Can I export Google Maps leads through an API or MCP?

Yes. Use the Apify API examples or MCP setup above to run searches and consume structured lead data from your application or AI assistant.

How much does Google Maps lead extraction cost?

Pricing is pay per event: a $0.005 run-start charge plus the per-lead tier shown above. Your Apify subscription tier determines the exact lead price.

How many leads can I extract per run?

There's no hard limit. Set maxLeads to control how many unique businesses you get. Typical runs extract 5–500 leads depending on market density.

Does it extract email addresses?

Yes. When includeWebsiteEnrichment is enabled (default), the actor visits each business website and extracts email addresses found on the homepage.