Google Maps Scraper - Business Leads, Emails & Phone Numbers avatar

Google Maps Scraper - Business Leads, Emails & Phone Numbers

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Google Maps Scraper - Business Leads, Emails & Phone Numbers

Google Maps Scraper - Business Leads, Emails & Phone Numbers

Extract business leads from Google Maps with emails, phones, websites, ratings, reviews & addresses. Search by category+city, business name, or landmark. Visits websites for emails. Perfect for local SEO, lead gen & cold outreach.

Pricing

from $5.00 / 1,000 results

Rating

5.0

(2)

Developer

Hitman studio

Hitman studio

Maintained by Community

Actor stats

2

Bookmarked

98

Total users

8

Monthly active users

6 days ago

Last modified

Security

Limited permissions

Share

πŸ—ΊοΈ Google Maps Scraper β€” Business Leads, Emails & Phone Numbers

Scrape Google Maps business listings into clean leads β€” name, full address (city / state / ZIP), phone, email, website, domain, rating, reviews, category, hours, lat/lng, place ID, plus code & Google Maps URL. Plus email extraction from the business website. No Google API key, no SerpAPI β€” clean JSON/CSV.

Goes past the ~120-place cap most Google Maps scrapers hit per search β€” this one pages up to 500 results per query (searchStringsArray supports bulk queries too, so you're not limited to one search at a time).

Keywords: google maps scraper Β· google maps leads Β· business leads scraper Β· email scraper Β· local business data Β· google maps email extractor Β· phone number scraper Β· b2b leads Β· lead generation Β· google places scraper Β· maps business extractor Β· local SEO leads Β· google my business scraper Β· find emails Β· sales prospecting Β· CRM enrichment.

✨ 30+ fields per business

  • Contact: name, phone, email, all_emails, website, domain, contact_page
  • Location: address, city, state, postal_code, country, lat, lng, plus_code
  • Profile: category, categories, rating, reviews, opening_hours, image_url, place_id, google_maps_url
  • Lead quality: has_email, has_phone, has_website, is_permanently_closed, confidence_score

🎯 Use cases

  • B2B lead generation β€” find businesses by niche + city, with email & phone
  • Local SEO / agencies β€” prospect local businesses
  • Sales / cold outreach lists β€” niche + location β†’ CSV with contacts
  • Market research β€” competitors, ratings, density by area

πŸ”§ Input

{ "searchStringsArray": ["dentist in Austin", "coffee shop in Seattle"], "max_results": 50, "extract_emails": true }
  • searchStringsArray β€” "
  • max_results β€” per query
  • extract_emails β€” visit each website to pull emails (recommended for lead-gen)
  • min_rating β€” optional quality filter

πŸ“€ Output (per business)

{
"name": "Piedmont CafΓ©", "address": "...Seattle, WA 98101, USA",
"city": "Seattle", "state": "WA", "postal_code": "98101",
"phone": "+1 206-659-9899", "email": "hello@...", "website": "...", "domain": "moorecoffeeshop.com",
"rating": 4.6, "reviews": 812, "category": "Coffee shop",
"opening_hours": [{ "day": "Monday", "hours": "7 AM–6 PM" }, { "day": "Tuesday", "hours": "7 AM–6 PM" }, "..."],
"lat": 47.6, "lng": -122.3, "place_id": "...", "has_email": true, "confidence_score": 90
}

Export to CSV, Excel, JSON or API.

πŸš€ How to use

  1. Open the Actor and enter one or more "
  2. Turn on extract_emails if you want each business's own website visited for a public email.
  3. Set max_results and an optional min_rating filter, then click Start.
  4. Export to CSV/Excel/JSON, or pull via API straight into your CRM.

βœ… Why it's reliable

  • Built on Google's own internal Maps endpoint (not a headless browser scraping the visual page), so it isn't thrown off by UI changes the way screen-scrapers are.
  • Pages past the ~120-result cap most scrapers silently hit β€” up to 500 per query, with real pagination, not estimation.
  • Each business's email check is a separate step from the listing fetch β€” a business with no public email just gets has_email: false, never a guessed address.

πŸ’° Cost

Pay-per-result, split into two charges: one for the business listing, one only when an email is actually found on the business's website. No email found = no email charge. Tip: turn extract_emails off for a first quick pass to scope the market, then re-run with it on only for the businesses you actually want contact data for.

πŸ”Œ Integrations

  • Zapier / Make / n8n β€” push new local leads straight into your CRM or outreach sequence.
  • API β€” call this Actor directly from your backend with the Apify API client or plain REST.
  • Google Sheets β€” export results to a connected sheet for a shareable prospect list.

πŸ‘€ About the developer

Built and maintained by an indie developer focused on public-data scrapers and lead-generation tools. Need a different field, city-list bulk mode, or a new data source added? Reach out β€” custom builds are welcome.

βš–οΈ Notes

Scrapes public Google Maps business listings & public website emails (the contact info businesses publish for customers). Use responsibly and per applicable laws for outreach.

❓ FAQ

How is this different from the official Google Places API? The official API typically caps out around 120 results per search and charges per request whether or not you find what you need. This actor pages up to 500 results per query and only charges for results actually returned, plus a separate charge only when an email is successfully found β€” no charge for a business with no public email.

Do I need a Google API key? No. No Google Cloud account, no SerpAPI key, no billing setup on Google's side.

Will it re-scrape the same business twice if I run it again? Each run is independent β€” dedupe against your own CRM/previous exports if you're running the same search repeatedly.

Is the email extraction guaranteed? No β€” it only reports an email if one is publicly published on the business's own website. has_email / confidence_score tell you upfront which rows are usable for outreach vs. which need manual follow-up.

Can I filter by rating or exclude closed businesses? Yes β€” min_rating filters by rating, and is_permanently_closed is returned per row so you can filter dead listings out before outreach.