Google Maps Scraper — Places, Leads & Contact Data avatar

Google Maps Scraper — Places, Leads & Contact Data

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Google Maps Scraper — Places, Leads & Contact Data

Google Maps Scraper — Places, Leads & Contact Data

Scrape Google Maps places by search query. Returns name, full address, latitude/longitude, phone, website, rating, review count, category, price level, neighborhood, timezone, place ID and CID. HTTP-only — no browser, fast and cheap.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

yossef Nagy

yossef Nagy

Maintained by Community

Actor stats

0

Bookmarked

83

Total users

45

Monthly active users

15 minutes ago

Last modified

Share

Google Maps Scraper

Extract business data from Google Maps at scale. Get names, addresses, phone numbers, websites, ratings, reviews, opening hours, and more for any type of business in any location.

What does Google Maps Scraper do?

This Actor searches Google Maps for businesses matching your query and extracts structured data for each result. It uses grid-based search for comprehensive coverage, finding businesses that don't appear in standard search results.

No browser required — uses Google Maps' internal APIs directly for fast, efficient extraction.

Features

  • Comprehensive data: name, address, phone, website, rating, reviews, hours, categories, coordinates, and more
  • Grid-based search: covers entire areas systematically, not just the first page of results
  • Scale: extract hundreds or thousands of businesses per run
  • Place details: optionally fetch full business details including opening hours and amenities
  • Reviews: optionally extract customer reviews for each business
  • Lead enrichment (experimental): optionally find emails and social-media profiles from each business's own website — off by default, billed separately, never changes the base scrape
  • People / contacts (experimental): optionally extract the people who work at each business — name, title, their own email / phone / LinkedIn — from the business's own website
  • Ad intelligence (experimental): optionally detect which businesses are actively running ads on Meta (Facebook / Instagram) and Google (Search / YouTube / Display) — a strong buy signal for agencies

Input

FieldTypeRequiredDefaultDescription
querystringYesSearch query including location, e.g. "restaurants in New York"
maxResultsintegerNo100Maximum businesses to extract (0 = unlimited)
languagestringNo"en"Language code for results
zoomintegerNo13Google Maps zoom level (1-21)
includeDetailsbooleanNotrueFetch detailed place info (hours, phone, website)
includeReviewsbooleanNofalseFetch customer reviews
reviewsLimitintegerNo5Max reviews per business
proxyConfigurationobjectNoApify ResidentialProxy settings — the default (Apify Residential) is recommended; leave as-is
proxyUrlstringNoAdvanced: a single custom HTTP proxy URL used INSTEAD of proxyConfiguration

Optional add-on fields (all off by default; see the sections below): includeEmails, includeSocials, emailOnly, socialOnly, onlyWithWebsite, onlyWithoutWebsite, includePersonnel, maxContactsPerBusiness, personnelMinConfidence, onlyWithPersonnel, includeMetaAds, includeGoogleAds, onlyRunningAds, adCountry.

Output

Each business in the dataset contains:

{
"name": "Joe's Pizza",
"address": "7 Carmine St, New York, NY 10014",
"phone": "+1 212-366-1182",
"website": "https://www.joespizzanyc.com",
"rating": 4.5,
"reviews_count": 12847,
"category": "Pizza restaurant",
"categories": ["Pizza restaurant", "Italian restaurant"],
"latitude": 40.7304,
"longitude": -74.0022,
"place_id": "ChIJr3k0v6VZwokRPCxBJnIcdTA",
"google_maps_url": "https://www.google.com/maps/place/?q=place_id:ChIJr3k0v6VZwokRPCxBJnIcdTA",
"hours": {
"monday": "10:00 AM - 2:00 AM",
"tuesday": "10:00 AM - 2:00 AM"
},
"price_level": 1
}

Lead enrichment (experimental add-on)

Experimental / beta. This add-on is new and under active testing. It is off by default and does not change the base scraper's behavior, output, or cost when left off. Turn it on only if you want extra contact data and are comfortable with a feature that is still being refined.

When enabled, the scraper visits each business's own website (plus its contact / about / imprint pages) and extracts:

  • Emails (includeEmails) — deduplicated and syntax-checked, and the domain must actually accept mail (MX-validated) before an email counts.
  • Social profiles (includeSocials) — Facebook, Instagram, LinkedIn, X/Twitter, YouTube, TikTok, WhatsApp.

You can also filter which businesses are kept:

FieldTypeDefaultDescription
includeEmailsbooleanfalseFind email addresses on each business website
includeSocialsbooleanfalseFind social-media profile links
emailOnlybooleanfalseOnly keep businesses for which an email was found (implies includeEmails)
socialOnlybooleanfalseOnly keep businesses for which a social profile was found (implies includeSocials)
onlyWithWebsitebooleanfalseOnly keep businesses that have a real website
onlyWithoutWebsitebooleanfalseOnly keep businesses WITHOUT a website (prospects for web/design agencies)

Enrichment adds these fields to each output record (all are null when nothing is found, or when the add-on is off):

{
"email": "hello@business.com",
"emails": ["hello@business.com", "sales@business.com"],
"facebook": "https://facebook.com/business",
"instagram": "https://instagram.com/business",
"linkedin": null,
"twitter": null,
"youtube": null,
"tiktok": null,
"whatsapp": null,
"website_reachable": true
}

Enrichment runs over HTTP only (no browser), tries cheap datacenter proxies first and only escalates to residential when a site blocks it. It is billed separately, per enriched lead — a lead counts only when at least one email or social profile is actually found on the business's website.

People / contacts (experimental add-on)

Experimental / beta. Off by default; never changes the base scrape.

When includePersonnel is enabled, the scraper extracts the people who work at each business from its own website (team / about / contact pages): name, title, and their own email / phone / LinkedIn where published. Each record gains:

  • business_lead — an org-level contact summary (best email, all emails, phone, socials)
  • contacts — the people found, highest-confidence first, each with name, title, email, phone, linkedin, socials, confidence, tier and the source_urls they were found on

Control it with maxContactsPerBusiness (default 10), personnelMinConfidence (low keeps everything; raise to medium / high for precision), and the onlyWithPersonnel filter (only keep businesses where at least one contact was found).

Ad intelligence (experimental add-on)

Experimental / beta. Off by default; never changes the base scrape. Billed separately, per matched advertiser.

Detect which businesses are actively running ads — a strong buy signal for marketing agencies:

  • includeMetaAds — checks the public Meta Ad Library and reports whether the business runs Facebook / Instagram ads, with meta_ads_running, the matched page, active-ad count, platforms, and the ads themselves as sample creatives — headline (title), ad copy (body_snippet), call-to-action, landing link, an image/video preview URL and a Meta Ad Library link per sample (meta_ads_* columns). To find the business's Facebook page for exact matching, the actor also peeks at the business website's homepage. Matching is conservative (exact Facebook page id or page URL, name, or an ad that lands on the business's own website) so unrelated advertisers are never attributed.
  • includeGoogleAds — checks the Google Ads Transparency Center by the business's own website domain and reports google_ads_running, the advertiser, ad counts, first/last shown dates, formats, and sample creatives with a preview image and an official Transparency Center link that renders each ad (google_ads_* columns). Note: the Transparency Center does not expose the text of search ads — the per-ad link shows the rendered creative instead. Lookups retry over fresh proxies automatically when Google blocks an IP.
  • onlyRunningAds — filter: only keep businesses currently advertising on an enabled source (if neither source is selected, both are checked).
  • adCountry — two-letter country code for where the ads are shown (default US). Applies to both sources: the Meta Ad Library search and the Google Ads Transparency Center region — set it to the business's country for accurate results outside the US (e.g. GB, DE, FR).

Usage examples

Basic search:

restaurants in New York

Specific business type:

dentists in Los Angeles, CA

International search:

hotels near Paris, France

Tips

  • Include a location in your query. "plumbers in Chicago" works best, but plain phrases like "plumbers Chicago" or "coffee shops 90210" also work — the location is detected automatically. Avoid a bare category with no place ("plumbers")
  • Use a proxy for reliable extraction — Google blocks datacenter IPs
  • Start with a small maxResults to test, then scale up
  • Enable includeDetails to get phone numbers, websites, and opening hours (slightly slower)
  • Adjust zoom level: lower zoom (10-12) covers larger areas, higher zoom (14-17) finds more businesses in small areas

Proxy

Google Maps blocks requests from datacenter IPs. The default proxyConfiguration (Apify Residential proxy) handles this — leave it as-is for reliable extraction. Only set proxyUrl if you want to route everything through your own single HTTP proxy instead.

Limitations

  • Results depend on what Google Maps returns for your query and location
  • Some businesses may have incomplete data (missing phone, website, or hours)
  • Rate limiting may apply for very large extractions