Google Maps Leads Scraper: Emails, Phones & Socials avatar

Google Maps Leads Scraper: Emails, Phones & Socials

Pricing

from $1.05 / 1,000 lead saveds

Go to Apify Store
Google Maps Leads Scraper: Emails, Phones & Socials

Google Maps Leads Scraper: Emails, Phones & Socials

Find local business leads on Google Maps by keyword and location: name, category, address, phone, website, rating, reviews, plus emails and social profiles from their websites and a lead score that flags no website, broken or slow sites, unclaimed profiles and few reviews.

Pricing

from $1.05 / 1,000 lead saveds

Rating

0.0

(0)

Developer

Northloop Labs

Northloop Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Categories

Share

Find local business leads on Google Maps and get their contact details in one run. Type a business type and a location, such as dentist in Austin, TX, and get every business with its name, category, address, phone, website, rating, review count, opening hours, coordinates and Google Maps link. The Actor then visits each business website to find email addresses, extra phone numbers and social profiles (Facebook, Instagram, LinkedIn, X, TikTok, YouTube, Pinterest).

Each lead also gets a lead opportunity score (0–100) with clear flags such as no-website, website-down, no-https, slow-website, unclaimed-google-profile, few-reviews, low-rating and no-social-links. That way agencies and freelancers can call the businesses that need them most first.

It's built for web design, SEO, local marketing and reputation agencies, freelancers and sales teams who sell to local businesses. You don't need a Google account, an API key or any proxy setup.

What you can use it for

  • Web design leads: use the without-website filter to list businesses with no website, or sort by website-down, no-https and not-mobile-friendly.
  • Local SEO and Google Business Profile services: find businesses with an unclaimed profile, few reviews or a low rating.
  • Social media management: find businesses with no Facebook or Instagram linked on their site.
  • Cold email and calling lists: get the business email, phone and website for every dentist, plumber, gym or restaurant in a city, ready for your CRM or outreach tool.
  • Market research: count and map the competitors in a category, with ratings, reviews, price level and opening hours.
  • New business alerts: turn on Only new places since the last run and schedule it weekly to get only the businesses that appeared since the last check.

What data you get

One row per business:

FieldDescription
name, category, categoriesBusiness name and its Google Maps categories
address, street, city, postalCode, neighborhood, countryCodeAddress (service-area businesses may have no street address)
phone, phoneInternationalPhone number shown on Google Maps
websiteWebsite from the Maps profile (tracking parameters removed)
email, emailsBest email (same domain as the website first) and all emails found on the website
extraPhonesOther phone numbers linked on the website
facebook, instagram, linkedin, x, tiktok, youtube, pinterestSocial profiles linked from the website
rating, reviewCount, priceLevelGoogle rating, number of reviews, price level
isClaimedfalse when the Google Business Profile shows "Claim this business"
businessStatusoperational (closed places are skipped by default)
openingHours, timezoneOpening hours per weekday
latitude, longitude, placeId, cid, googleMapsUrlLocation and IDs, plus a link that opens the place on Google Maps
websiteStatus, websiteHttpStatus, websiteHttps, websiteResponseMs, websiteLoadMs, websiteMobileFriendly, websitePlatform, websiteHasAnalytics, websiteHasFacebookPixel, websiteCopyrightYear, websiteTitleA quick website check: up or down, HTTPS, speed, mobile viewport, platform (WordPress, Wix, Squarespace, Shopify and more), analytics and Facebook pixel, latest © year
leadScore, leadPriority, leadFlagsOpportunity score 0–100, high (50+), medium (25–49) or low, and the reasons
searchTerm, location, rank, scrapedAt, firstSeenAtWhich search found it and when

The dataset has ready-made views: Leads, Contacts only, Website audit and Google Maps details.

How to scrape Google Maps leads

  1. Enter one or more Search terms, e.g. dentist, roofing contractor, italian restaurant.
  2. Enter one or more Locations: a city, region, postcode or country, e.g. Austin, TX, Manchester, UK, 10115 Berlin, Ireland.
  3. Set Max leads per search (default 20, or 0 for as many as possible).
  4. Optional: filter by website, set a Minimum lead opportunity score, or turn on Only new places since the last run.
  5. Click Start, then export the results as CSV, Excel or JSON, or send them to your CRM.

Each search term is run in each location, so 2 terms × 3 cities is 6 searches.

Input example

{
"searchTerms": ["plumber", "electrician"],
"locations": ["Austin, TX", "Denver, CO"],
"maxResultsPerSearch": 200,
"scrapeContacts": true,
"websiteFilter": "any",
"minLeadScore": 0
}

Output example

{
"searchTerm": "dentist",
"location": "Bucharest, Romania",
"rank": 1,
"name": "DentalMed",
"category": "Dentist",
"address": "Calea 13 Septembrie 102, Bl. 48 A Parter, 050727 București, Romania",
"city": "Bucharest",
"countryCode": "RO",
"phone": "+40 372 330 300",
"website": "https://www.dental-med.ro/",
"email": "contact@dental-med.ro",
"emails": ["contact@dental-med.ro", "feedback@dental-med.ro"],
"extraPhones": ["+40214028735", "+40318030170"],
"facebook": "https://www.facebook.com/Dentalmed-Luxury-Dental-Clinic-206776372796108",
"instagram": "https://www.instagram.com/dentalmedluxury",
"tiktok": "https://www.tiktok.com/@dentalmedluxury",
"youtube": "https://www.youtube.com/user/DentalMedClinic",
"rating": 4.9,
"reviewCount": 2901,
"isClaimed": true,
"businessStatus": "operational",
"latitude": 44.425066,
"longitude": 26.0754297,
"placeId": "ChIJSUgYv3r_sUARt8wg7L7EOlU",
"googleMapsUrl": "https://www.google.com/maps/search/?api=1&query=DentalMed&query_place_id=ChIJSUgYv3r_sUARt8wg7L7EOlU",
"openingHours": { "Monday": "9 AM–8:30 PM", "Saturday": "9 AM–2 PM", "Sunday": "Closed" },
"websiteStatus": "ok",
"websiteHttps": true,
"websiteResponseMs": 410,
"websiteMobileFriendly": true,
"websitePlatform": "WordPress",
"websiteHasAnalytics": true,
"leadScore": 0,
"leadPriority": "low",
"leadFlags": [],
"scrapedAt": "2026-10-20T10:02:11.512Z"
}

How the lead opportunity score works

Points are added for each problem an agency could fix, up to 100:

FlagPointsMeaning
no-website40No website on the Google Maps profile
website-down35The website doesn't load (DNS error, timeout, 404 or 5xx)
unclaimed-google-profile20Google shows "Claim this business"
no-https15The website has no HTTPS
slow-website10The homepage takes over 3 seconds to respond
not-mobile-friendly10No mobile viewport tag
few-reviews10Fewer than 20 reviews (you can change this)
low-rating10Rating under 4.0 (you can change this)
no-social-links10No social profile linked on the website
no-facebook-or-instagram5Has socials, but neither Facebook nor Instagram
no-email-on-website5No email address on the website
no-analytics5No Google Analytics, Tag Manager or similar
outdated-website5Latest © year is 2 or more years old
no-rating, no-phone-on-maps5 eachMissing on the Maps profile

leadPriority is high at 50 or more and medium at 25–49. Sites behind bot protection (HTTP 401, 403 or 429) are marked blocked and are not flagged as down.

Only new places since the last run

Turn on Only new places since the last run and add a schedule, for example weekly. The Actor remembers the place IDs each search has already returned in a named key-value store on your account (google-maps-leads-seen by default). Later runs save, and charge for, only places they haven't seen before, which in practice means newly opened or newly listed businesses. The first run sets the baseline and saves everything. Use a different Memory store name for each client or campaign.

How much does it cost?

This Actor uses pay-per-event pricing, so you only pay for leads you get. Platform usage and the residential proxies are included.

  • $0.005 per run (Actor start)
  • $0.0015 per lead saved ($1.50 per 1,000), including the Google Maps details, the website check and the lead score
  • $0.0015 per lead with contacts found ($1.50 per 1,000), only when the website gave at least one email or social profile

Example: 1,000 dentists, about half of them with an email or social profile found, cost about $2.25. With every lead having contacts, it's at most $3.00 per 1,000 leads. Duplicates, closed places, filtered-out places, already-seen places and websites with nothing found are free. Turn off Find emails and social profiles for Maps data only at $1.50 per 1,000. You can cap your spend with the maximum cost per run setting in Apify, and the Actor then stops before it would go over.

Tips

  • More than ~250 results: a single Google Maps list stops at around 250 places. For bigger numbers the Actor scans the area as a grid of map tiles, so restaurant in London, UK can return thousands. Turn off Grid search if you only want the main list.
  • Be specific with places: add the country for small or ambiguous towns (Paris, Texas vs Paris, France). Whole countries work too, but a list of cities gives more even coverage.
  • Local languages: search in the local language (Zahnarzt in Berlin, peluquería in Madrid) and set Language (de, es, fr, ...) for local category names.
  • Speed: about 1 lead per second with contact enrichment at the default 512 MB. Turn off contact enrichment for Maps data only, which is several times faster.

Use with AI agents, MCP, Make, Zapier, n8n and the API

AI agents and the Apify MCP server

Your AI agent can run this Actor as a tool through the Apify MCP server. In Claude, Cursor, VS Code or any other MCP client, add this server URL to load only this Actor:

https://mcp.apify.com?tools=northloop-labs/google-maps-leads-scraper

You sign in to Apify on first connection. Agents that use the default server can also find the Actor with search-actors and run it with call-actor. Pass maxTotalChargeUsd in callOptions to cap what one run may cost. The Actor uses pay-per-event pricing, so it also works with Apify's agentic payments.

Example prompt: "Find 100 roofing contractors in Denver with no website or an unclaimed Google profile, and give me their phone numbers."

Make, Zapier and n8n

Apify has official integrations for Make, Zapier and n8n. Use "Run Actor", pick northloop-labs/google-maps-leads-scraper, paste your input as JSON, and send the leads on to Google Sheets, HubSpot, Pipedrive, Airtable or your email tool. Inside Apify you can also connect Google Sheets or Slack, or add a webhook that fires when a run finishes.

API

Run it and get the results in one call (this endpoint waits up to 5 minutes, which suits up to about 200 leads per run):

curl -X POST "https://api.apify.com/v2/acts/northloop-labs~google-maps-leads-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchTerms": ["dentist"], "locations": ["Austin, TX"], "maxResultsPerSearch": 50}'

Or with the Python client (pip install apify-client). The JavaScript client works the same way:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("northloop-labs/google-maps-leads-scraper").call(run_input={"searchTerms": ["dentist"], "locations": ["Austin, TX"], "maxResultsPerSearch": 50})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["name"], item["phone"], item["email"], item["leadScore"], item["leadFlags"])

Data & privacy

  • The Actor collects business information that businesses publish themselves: their Google Maps listing and the contact details on their own website. Some emails can still name a person (e.g. jane@clinic.com). If you contact leads, follow the rules where you and they are, such as GDPR and ePrivacy in the EU and UK and CAN-SPAM in the US. That means having a lawful basis, identifying yourself, offering an opt-out and honouring it.
  • Results are written only to your own Apify account: the run's dataset and, if you use "only new places", a list of place IDs in a named key-value store. The Actor sends the data nowhere else and keeps no copy.

The Actor reads public Google Maps results and public business websites without logging in, and doesn't bypass any login or paywall. Google's Terms of Service restrict automated access, and data protection laws apply to how you use contact data, so check that your use fits your own legal and compliance requirements. This isn't legal advice.

FAQ

Up to about 250 from the normal Google Maps list, and more with grid search. In our tests, restaurant in London, UK returned 500 of 500 requested and dentist in Sibiu, Romania with no limit returned 317. Very small towns simply have fewer businesses.

How many leads have an email?

It depends on the industry and country. In our tests, 30–95% of businesses with a website had an email (dentists in Bucharest 95%, dentists in Berlin 83%, plumbers in Austin 58%, cafés in Paris 48%, car dealers in Ireland 24%). Social profiles were found for about 40–90%. Many trades businesses use only a phone number and a contact form.

Why is a website marked blocked?

Some sites, often behind Cloudflare, block automated visitors. The Actor retries once through a residential IP. If that still fails, the site is marked blocked with no website-down flag, because the site may work fine in a browser.

Can I get businesses without a website only?

Yes. Set Website filter to "Only businesses without a website". Businesses that are skipped are free.

Does it scrape reviews?

No. It returns the rating and review count, which is what lead scoring needs. Use a dedicated reviews scraper if you need review texts.

Which export formats can I use?

JSON, JSONL, CSV, Excel, XML, HTML or RSS from the run page, or through the API, Make, Zapier, n8n or Google Sheets.

How this Actor was made

This Actor was made with AI. An AI agent wrote and tested the code, this README and the store listing, and a human owns and maintains the Actor. It reads the same JSON responses the Google Maps website loads for its results list, through residential IPs, and visits each business's own website with a normal HTTP client. Locations are looked up with OpenStreetMap Nominatim.

More Actors from Northloop Labs

Feedback

Missing a field, a filter or a country that doesn't work well? Open an issue in the Issues tab and we will look at it.