Google Maps Scraper — Emails, Phones & B2B Leads avatar

Google Maps Scraper — Emails, Phones & B2B Leads

Pricing

from $4.00 / 1,000 place scrapeds

Go to Apify Store
Google Maps Scraper — Emails, Phones & B2B Leads

Google Maps Scraper — Emails, Phones & B2B Leads

Extract B2B leads from Google Maps with emails, phones, ratings, reviews, social links & opening hours. CRM-ready flat output with lead scoring $4.00/1K.

Pricing

from $4.00 / 1,000 place scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

4

Monthly active users

5 days ago

Last modified

Share

Scrape business data from Google Maps and enrich it with email addresses extracted directly from business websites — all in one actor, one run, one flat price. No add-on fees, no login required.

Built for B2B sales teams, marketing agencies, and lead gen professionals who need CRM-ready leads fast.

Features

  • Search by keyword + location — "dentists in Miami", "plumbers in London"
  • Direct URL support — paste Google Maps search or place URLs
  • Email enrichment — visits each business website to find emails and social media links
  • Lead quality scoring — every lead gets a 0-100 score based on completeness
  • CRM-ready output — flat JSON, no nested objects, import directly into HubSpot, Salesforce, or spreadsheets
  • Reviews extraction — optionally extract Google reviews per business
  • Deduplication — automatic duplicate removal across search queries
  • No login required — works without Google account or cookies

Use Cases

  • Sales prospecting — find local businesses by niche and get their contact details for cold outreach
  • Market research — map competitor density, ratings, and reviews across locations
  • Agency lead gen — build targeted lead lists for clients by location and industry
  • CRM enrichment — add emails, phones, and social links to existing business databases
  • Local SEO audits — analyze businesses in a geographic area with ratings and review data

Pricing — Simple and Transparent

Two events only. No hidden fees, no filter charges, no surprise add-ons.

EventWhat triggers itPrice
Place scrapedEvery business extracted from Google Maps$0.004 per place
Email enrichedOnly when an email is actually found on the website$0.006 per email

Key difference from competitors: Email enrichment is charged only when an email is found. No email = no charge. You never pay for failed lookups.

Cost examples

ScenarioPlacesEmails foundTotal cost
Basic scrape (no email)1,000$4.00
With email enrichment (~60% hit rate)1,000600 found$7.60
Small test run107 found$0.082
Large campaign5,0003,000 found$38.00

Compare: the market average for Google Maps scrapers is $73.56 per 1,000 results. You pay a fraction of that.

Input Parameters

Required (at least one)

  • searchQuery — Business type to search for, e.g. "dentists", "restaurants", "plumbers"
  • startUrls — Direct Google Maps URLs (search pages or individual places)

Optional

  • location — City or region, e.g. "Miami, FL" or "London, UK"
  • maxResults — Maximum leads to extract (default: 50)
  • enrichEmails — Visit business websites to find emails (default: true)
  • maxReviews — Reviews per place, 0 = none (default: 0)
  • language — Language for results (default: "en")
  • minRating — Minimum star rating filter (default: 0)

Output

Every record has the exact same flat structure — no nested objects, no varying fields across runs.

{
"business_name": "Miami Dental Care",
"category": "Dentist",
"full_address": "123 Ocean Dr, Miami, FL 33139, USA",
"phone": "+1 305-555-0123",
"website": "https://miamidentalcare.com",
"email": "info@miamidentalcare.com",
"rating": 4.7,
"review_count": 238,
"reviews": [],
"lead_score": 85,
"latitude": 25.7617,
"longitude": -80.1918,
"google_maps_url": "https://www.google.com/maps/place/...",
"place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4",
"opening_hours": {
"Monday": "9:00 AM - 5:00 PM",
"Tuesday": "9:00 AM - 5:00 PM",
"Saturday": "Closed"
},
"facebook": "https://facebook.com/miamidentalcare",
"instagram": "https://instagram.com/miamidentalcare",
"linkedin": null,
"twitter": null,
"scraped_at": "2026-03-31T10:00:00.000Z",
"source_url": "https://www.google.com/maps/search/dentists+in+Miami"
}

Lead Score Breakdown

Every lead gets a quality score (0-100) computed from:

SignalPoints
Email found+30
Has website+20
Has phone+10
Rating ≥ 4.0+15
10+ reviews+15
Has social media+10

Higher score = more complete, higher-quality lead.

Examples

Example 1: Find dentists in Miami with emails

{
"searchQuery": "dentists",
"location": "Miami, FL",
"maxResults": 100,
"enrichEmails": true
}

Example 2: Scrape restaurants without email (cheaper)

{
"searchQuery": "restaurants",
"location": "London, UK",
"maxResults": 200,
"enrichEmails": false
}

Example 3: Direct Google Maps URL

{
"startUrls": [
{ "url": "https://www.google.com/maps/search/plumbers+near+San+Francisco" }
],
"maxResults": 50,
"enrichEmails": true
}

Example 4: High-quality leads only

{
"searchQuery": "lawyers",
"location": "New York, NY",
"maxResults": 100,
"enrichEmails": true,
"minRating": 4.0
}

No Login Required

This actor works entirely through browser automation of public Google Maps pages. No Google account, API key, cookies, or login credentials needed.

Limitations

  • Google Maps typically returns up to ~300 results per search query. For larger datasets, use multiple specific queries (e.g. "dentists in Miami Beach" + "dentists in Coral Gables")
  • Email extraction depends on the business having a website with a visible email address
  • Some business websites may block automated access, resulting in null email fields
  • Rate limiting may slow down large runs. The actor handles this automatically with retries and session rotation

Use cases for Google Maps lead generation

Google Maps is the largest live database of small and mid-market businesses on the internet, and most sales teams still struggle to extract it at scale. This actor solves the most common lead-gen workflows in one run:

  • Cold email outreach — turn a niche + city (e.g. "HVAC contractors in Phoenix") into a CSV of verified emails, names, and phones ready for Instantly, Smartlead, or Lemlist.
  • Agency lead generation — package the output as a list of prospects for SEO, web design, or local marketing agencies, sorted by lead score so reps work the best leads first.
  • CRM enrichment — append missing phones, websites, social profiles, and ratings to existing HubSpot or Salesforce records using the place_id as a stable join key.
  • Local market intelligence — count businesses per category per city, average rating, and review volume to size a local market before launching.
  • Competitor mapping — discover all competitors of a target business within a radius, sorted by rating and review count.
  • Franchise and multi-location audits — pull every location of a brand across a country and check NAP consistency.

What data the scraper extracts

Every record is flat — no nested objects, no varying field shape — so it imports cleanly into spreadsheets, BigQuery, or any CRM.

FieldTypeNotes
business_namestringOfficial Google Maps name
categorystringPrimary Google category (e.g. "Dentist")
full_addressstringStreet, city, state, ZIP, country
phonestringE.164-friendly when possible
websitestringThe business's own site (not the GMB URL)
emailstringFound by crawling the website's contact / about / footer
ratingnumber1–5 stars
review_countintegerTotal Google reviews
reviewsarrayOptional sample of recent reviews (see maxReviews)
lead_scoreinteger0–100 quality score (see breakdown above)
latitude / longitudenumberFor mapping or radius filtering
google_maps_urlstringCanonical GMB place URL
place_idstringStable Google place identifier — best CRM join key
opening_hoursobjectDay → hours string, "Closed" when applicable
facebook / instagram / linkedin / twitterstringDetected from website's HTML
scraped_atISO 8601When the record was scraped
source_urlstringThe Google Maps URL that produced it

How to integrate with Claude and AI agents (MCP)

Every actor in Khadin's portfolio is exposed as a tool via the Apify MCP server, which means Claude, Cursor, ChatGPT, and any MCP-aware client can call this scraper natively. Sample MCP config:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

Then prompt your agent: "Use the google-maps-leads-scraper tool to find 50 plumbers in Austin and return only the ones with rating ≥ 4.5 and a valid email." The agent will pick the actor, fill in the schema, run it, and stream results back.

For non-MCP workflows you can also call the actor via the standard Apify REST or JavaScript / Python client (see API examples below).

Limitations

  • Google Maps typically returns up to ~300 results per search query. For larger datasets, use multiple specific queries (e.g. "dentists in Miami Beach" + "dentists in Coral Gables")
  • Email extraction depends on the business having a website with a visible email address
  • Some business websites may block automated access, resulting in null email fields
  • Rate limiting may slow down large runs. The actor handles this automatically with retries and session rotation

FAQ

How many leads can I scrape with Google Maps Scraper?

You can scrape up to ~300 leads per individual search query (Google Maps' hard cap), and there is no limit on how many queries you can submit per run or how many runs you can do. For larger campaigns split your target by city, niche, or ZIP code — e.g. "dentists in Miami Beach", "dentists in Coral Gables" — and the actor will deduplicate across queries automatically.

Can I integrate Google Maps Scraper with other apps?

Yes. The output is flat JSON, CSV, or XLSX and imports directly into HubSpot, Salesforce, Pipedrive, Airtable, Google Sheets, Notion, Instantly, Smartlead, Lemlist, Clay, and any tool that accepts CSV. You can also pipe results to Zapier, Make.com, or n8n via Apify's built-in integrations.

Can I use Google Maps Scraper with the Apify API?

Yes. Every Apify actor exposes a REST API and official client libraries for JavaScript and Python. Start a run with a POST to https://api.apify.com/v2/acts/khadinakbar~google-maps-leads-scraper/runs and pass your input as JSON. Full code samples are in the Apify docs.

Can I use Google Maps Scraper through an MCP Server?

Yes. Connect Claude Desktop, Cursor, or any MCP client to https://mcp.apify.com with your Apify token and the actor appears as a callable tool. Your agent can then plan a lead-gen workflow and call this scraper directly without you writing any code.

Do I need proxies to scrape Google Maps?

No. The actor uses Apify's built-in proxy pool by default and handles session rotation, retries, and blocking automatically. For very large runs you can opt into the Residential proxy group inside the input form, but most users never need to change the defaults.

Scraping publicly visible business listings is generally permitted in most jurisdictions, but you are responsible for complying with Google's Terms of Service, the GDPR / CCPA, and any local data-protection rules. Do not use this actor to harvest personal data without a lawful basis, and respect opt-out and do-not-contact lists when sending outreach. This actor and Apify are not liable for misuse.

Your feedback

Found a bug, want a new field, or have a feature request? Open an issue on the actor's Issues tab — response time is within 48 hours. Pull requests, edge cases, and screenshots welcome.

Pair Google Maps Scraper with these companion lead-gen and enrichment actors:

Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.