Google Maps Scraper - Emails, Phones, Reviews & Leads avatar

Google Maps Scraper - Emails, Phones, Reviews & Leads

Pricing

from $1.00 / 1,000 place scrapeds

Go to Apify Store
Google Maps Scraper - Emails, Phones, Reviews & Leads

Google Maps Scraper - Emails, Phones, Reviews & Leads

Scrape Google Maps by search phrase, URL or place ID. Get emails, phones, websites, social profiles, ratings, reviews, opening hours, photos, search rank and lead scores - in clean, export-ready columns, with a visual run report.

Pricing

from $1.00 / 1,000 place scrapeds

Rating

0.0

(0)

Developer

Shadow Extractor

Shadow Extractor

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Categories

Share

๐Ÿ—บ Google Maps Scraper โ€” Leads, Emails, Phones & Reviews

Turn any Google Maps search, URL or place ID into clean, export-ready business data.

Paste what you want, press Start, get a spreadsheet you can actually use: business name, category, rating, review count, phone, website, public email addresses, social profiles, address broken into fields, coordinates, opening hours, photos, search rank and ready-made lead scores.

No Playwright, no browser, no captchas to solve โ€” the actor talks to Google Maps' own data endpoints, so it is fast and cheap.


โœจ What makes this one different

One smart input boxSearch phrases, Maps URLs, place IDs and data IDs all go into the same field. The actor detects each type automatically.
Three depth levelsโšก Quick, ๐Ÿ“‡ Contacts, ๐Ÿ”Ž Full โ€” one switch, no fiddling with ten checkboxes.
Column presetsโœจ Essentials, ๐Ÿ“‡ Leads, โญ Reviews, ๐Ÿ—‚ Everything. Your CSV is readable the moment it downloads, with stable headers in a fixed order.
๐Ÿ“Š Visual run reportEvery run writes an HTML dashboard to the key-value store: coverage %, pipeline health, top categories and per-search-term results. Open it straight from the run's Output tab.
Smart deduplicationBeyond place ID: collapse chains by domain or phone number so you get one row per company.
Real filtersRating, review count, include/exclude keywords, website presence, "must have a phone or email", open-now, closed businesses.
Handy deep linkswhatsappLink, directionsUrl, reviewsUrl โ€” generated for every row.
Flat text columnsemailsText, phonesText, categoriesText, photoUrlsText โ€” no more JSON arrays inside your spreadsheet cells.

๐Ÿš€ Quick start

  1. Put your targets into ๐Ÿ” What do you want to scrape?
    coffee shops in New York, NY
    dentists in Austin, TX
    https://www.google.com/maps/place/Blue+Bottle+Coffee/...
    ChIJN1t_tDeuEmsRUsoyG83frY4
  2. Leave everything else on its default and press Start.
  3. Download the dataset as CSV / Excel / JSON, and open the ๐Ÿ“Š Run report for a summary.

Need emails? Switch โš™๏ธ How deep should we go? to ๐Ÿ“‡ Contacts and set ๐Ÿ“Š Which columns to ๐Ÿ“‡ Leads.


โš™๏ธ Data depth

ModeWhat you getSpeed
โšก QuickPlaces, categories, ratings, Google-published phone, address, coordinates, website, photos, opening state, search rankFastest, cheapest
๐Ÿ“‡ ContactsEverything above + public emails and social profiles crawled from each business website (up to 3 pages, hard time budget)Medium
๐Ÿ”Ž FullEverything above + place detail page + Google reviews with aggregated review statisticsSlowest, richest

๐ŸŽš Filters

All optional, all combined with AND, all applied before the row is saved:

  • โญ Minimum Google rating and ๐Ÿ’ฌ minimum number of reviews
  • โœ… Keep only these categories โ€” keyword match on category and title
  • ๐Ÿšซ Drop places matching these words โ€” cut chains, franchises, noise
  • ๐ŸŒ Website presence โ€” with / without a website (the classic agency lead list)
  • ๐Ÿ“‡ Contact requirement โ€” must have a phone, an email, either, or both
  • โ›” Skip closed businesses and ๐ŸŸข only places open right now

๐Ÿ“Š Output columns

Pick a preset in ๐Ÿ“Š Which columns do you want?

PresetColumnsBest for
โœจ Essentials23A clean CSV to eyeball or hand to someone
๐Ÿ“‡ Leads39Cold outreach: emails, phones, socials, WhatsApp links, lead scores
โญ Reviews37Reputation monitoring: star split, owner-reply rate, review recency
๐Ÿ—‚ Everything~150Analysis and pipelines โ€” nothing is dropped

Fixed presets always emit the same columns in the same order, even when a value is missing, so appended CSV exports line up across runs.

Scores the actor computes for you

FieldMeaning
leadScore0โ€“100 โ€” how usable this row is as a sales lead
contactCompletenessScore0โ€“100 โ€” how much contact data was found
digitalPresenceScore0โ€“100 โ€” website, email, socials, description, photos
reputationScore0โ€“100 โ€” rating, review volume, owner responsiveness
outreachOpportunityScore / outreachPriority0โ€“100 + high/medium/low, with outreachReasons explaining why
intelligenceConfidenceHow much to trust an absence of contact data (high / medium / partial)

๐Ÿงน Deduplication

Places are always de-duplicated by Google place ID. Choose a stricter rule when you want one row per company:

  • ๐ŸŒ โ€ฆplus website domain โ€” collapses every branch that shares a site
  • โ˜Ž๏ธ โ€ฆplus phone number โ€” collapses shared phone lines
  • ๐ŸŒโ˜Ž๏ธ โ€ฆplus domain or phone โ€” strictest

๐Ÿš€ Speed & cost

SettingParallel searchesUse when
๐Ÿข GentlelowYou see blocked requests, or you're on a weak proxy
โš–๏ธ BalancedmediumDefault โ€” good for almost everything
๐Ÿš€ TurbohighLarge keyword lists on residential proxies

Use ๐Ÿ›‘ Stop after this many places to put a hard cap on a run, and ๐Ÿ”ข Max places per search term to control per-keyword depth.

Proxies: residential proxies are strongly recommended. Google Maps blocks datacenter IPs quickly.


๐Ÿ“ค Output records

RecordWhat it is
DatasetOne row per business, shaped by your column preset
REPORT (key-value store)๐Ÿ“Š Visual HTML run report โ€” coverage, pipeline health, per-term results
OUTPUT (key-value store)๐Ÿงพ JSON summary โ€” counters, timings, warnings, dataset link

Sample row (โœจ Essentials)

{
"title": "Blue Bottle Coffee",
"categoryName": "Coffee shop",
"rating": 4.4,
"reviewsCount": 1837,
"priceLevel": "$$",
"phone": "(510) 653-3394",
"website": "https://bluebottlecoffee.com/",
"email": "hello@bluebottlecoffee.com",
"address": "300 Webster St, Oakland, CA 94607",
"city": "Oakland",
"state": "CA",
"postalCode": "94607",
"countryCode": "US",
"latitude": 37.8007,
"longitude": -122.2758,
"businessStatus": "open",
"openingHoursToday": "7 AMโ€“5 PM",
"imageUrl": "https://lh5.googleusercontent.com/...",
"searchQuery": "coffee shops in Oakland, CA",
"searchRank": 3,
"placeId": "ChIJ...",
"googleMapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJ...",
"scrapedAt": "2026-09-03T10:21:44Z"
}

๐Ÿ›Ÿ Mistakes are explained, not crashed on

A wrong setting never kills the run. The actor repairs what it can, keeps scraping, and tells you exactly what it did โ€” in the run log, in the Input check section of the ๐Ÿ“Š run report, and in OUTPUT.inputIssues.

You do thisWhat happens
Paste a Yelp or Facebook linkThat entry is skipped: "is a link, but not a Google Maps link" โ€” the rest of your list still runs
Require an email in โšก Quick modeWarning: "Quick mode never collects emails โ€” switch to ๐Ÿ“‡ Contacts or ๐Ÿ”Ž Full, otherwise every place will be filtered out"
Require an email and only places without a websiteWarning: emails come from websites, so this combination returns nothing
Put the same word in both keep and drop listsWarning: exclusions win
Send a number where a list was expected, an unknown option, or an out-of-range valueRepaired to a sane value, with the valid options listed
Turn the proxy offWarning: Google blocks datacenter IPs quickly

When a run saves nothing, the run status message says why โ€” it repeats the specific problem instead of a generic "nothing found".


โ“ FAQ

Does it scrape emails from Google Maps? Google Maps does not publish emails. In ๐Ÿ“‡ Contacts and ๐Ÿ”Ž Full modes the actor visits the business's own website and collects the email addresses published there.

Why did I get fewer places than my limit? Google returns a finite result set per search โ€” a narrow query in a small town simply has fewer businesses. Broaden the phrase, drop the location, or add more search terms.

Can I re-enrich a list I already have? Yes. Paste your Google Maps URLs, place IDs or data IDs into the same input field and pick a deeper mode.

Is this legal? The actor only collects publicly visible information. You are responsible for how you use it โ€” in particular for complying with GDPR/CCPA and anti-spam rules when contacting businesses.


๐Ÿ›  Local development

pip install -r requirements.txt
python -m pytest tests -q # unit tests, no network
apify run # run locally with ./storage/key_value_stores/default/INPUT.json
apify push # deploy