Google Maps Scraper [Advance] avatar

Google Maps Scraper [Advance]

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Google Maps Scraper [Advance]

Google Maps Scraper [Advance]

Scrape Google Maps business data—names, phones, websites, emails, reviews (up to 5,000), photos, and GPS—to CSV or JSON. No Google Places API key. Up to 500 places per run. Search by keyword + location, Maps URL, Place ID, GeoJSON area, or map explore. Built for lead gen and local SEO.

Pricing

from $2.00 / 1,000 results

Rating

5.0

(4)

Developer

Shop Intel

Shop Intel

Maintained by Community

Actor stats

3

Bookmarked

35

Total users

15

Monthly active users

2 days ago

Last modified

Share

Google Maps Scraper — Extract Business Leads, Emails, Reviews & Phone Numbers from Google Maps

The most advanced Google Maps scraper, Google location scraper, and Google Places data extractor on Apify. Scrape Google Maps search results at scale — export business names, phone numbers, email addresses, websites, star ratings, full review text, photos, GPS coordinates, and social media profiles to CSV, JSON, or Excel in minutes. No Google Maps API key required.


Run the Google Maps Scraper free on Apify | API Docs | ScrapeIO on Apify


What does this Google Maps Scraper do?

This Google Maps scraper (also called a Google Maps crawler, Google Maps data extractor, or Google location scraper) automates the Google Maps interface to collect structured business data from any Maps search. It is purpose-built for:

  • Google Maps lead generation — build B2B and B2C prospect lists with emails, phones, and social links.
  • Google Maps data extraction — export business listings, ratings, and addresses by keyword and location.
  • Google Maps review scraping — extract up to 5,000 reviews per place including star ratings, reviewer names, and full text.
  • Google Maps email scraping — crawl each business website to find email addresses, phone numbers, and social profiles.
  • Google Maps photo extraction — download up to 200 high-resolution photos per business.
  • Google Maps coordinate extraction — get precise GPS lat/lng for every listing.

Whether you call it a Google Maps scraper, Google business scraper, Google Places scraper, Maps data extractor, local business scraper, or Google location data scraper — this Actor covers it.

Google Maps Scraper vs. Google Places API

CapabilityGoogle Places APIThis Google Maps Scraper
SetupGoogle Cloud project, billing, OAuth keysNone — runs on Apify
PricingPer-request charges, strict quotasPredictable Apify compute credits
Reviews per placeCapped at 5Up to 5,000
Photos per placePhoto reference ID onlyUp to 200 direct image URLs
Emails & social profilesNot availableWebsite crawl extracts emails, phones, Facebook, Instagram, LinkedIn, YouTube, TikTok, X
Search modesText search + nearbyKeyword + location, Google Maps URLs, Place IDs, GeoJSON Polygon/Point, map explore by coordinates
Anti-blockingStrict per-project quotaApify residential & datacenter proxy rotation with automatic retries
Output formatsJSON onlyCSV, JSON, Excel, XML, HTML
Scheduling & webhooksBuild your ownBuilt-in Apify scheduler, webhooks, API, SDKs

Key Features

  • Scrape Google Maps search results — extract business name, address, phone, website, rating, review count, and Google Maps link from any keyword + location search.
  • Multiple search modes — search by keyword, Google Maps URLs, Google Place IDs, GeoJSON areas (Point, Polygon, MultiPolygon), or map-explore mode at any lat/lng coordinates.
  • Scrape Google Maps reviews — extract up to 5,000 reviews per place with author name, star rating, full review text, and date. Sort by newest, most relevant, highest, or lowest rating.
  • Scrape Google Maps photos — download up to 200 photos per business with optional author/alt-text metadata.
  • Extract emails from Google Maps businesses — after scraping, automatically crawl each business website to find email addresses, phone numbers, and social media profile URLs (Facebook, Instagram, YouTube, TikTok, X/Twitter, LinkedIn).
  • Google Maps to CSV/Excel — built-in CSV export with UTF-8 BOM (opens correctly in Excel). Also saves RESULTS_JSON and RESULTS_CSV to the key-value store.
  • Filter Google Maps results — filter by minimum star rating, open/closed status, website availability, and keyword-in-name matching.
  • Up to 500 unique places per run with automatic deduplication across search terms and URLs.
  • No Google Maps API key and no Google Cloud billing — uses the public Maps interface directly.
  • Apify proxy integration — residential and datacenter proxies with automatic rotation for reliable, large-scale Google Maps scraping.
  • Schedule & automate — use Apify scheduler, webhooks, REST API, and SDKs (JavaScript, Python) for hands-free Google Maps data pipelines.

Use Cases for Google Maps Scraping

Local Lead Generation

Build targeted prospect lists from Google Maps — e.g., scrape all "dental clinics in Houston" with phone, email, website, and rating. Push results directly into HubSpot, Salesforce, or Google Sheets via Apify integrations.

Competitor Analysis & Market Intelligence

Track competitor Google Maps listings, star ratings, review sentiment, and business hours across multiple cities. Benchmark your position against local competitors with structured data exports.

Local SEO & Google Business Profile Audits

Export Google Business Profile data at scale for NAP consistency audits, review velocity tracking, and category coverage analysis. Essential for local SEO agencies managing multi-location campaigns.

Market Research & Expansion Planning

Map the density of specific business types (restaurants, gyms, clinics, salons) in target neighborhoods. Use GeoJSON Polygon or map-explore mode to cover geographic areas systematically.

Review Monitoring & Sentiment Analysis

Extract full Google Maps review text, star ratings, and reviewer metadata for brand reputation monitoring, sentiment analysis, customer feedback mining, or AI/ML training datasets.

Real Estate & Franchise Site Selection

Identify retail clusters, anchor tenants, and whitespace opportunities by scraping businesses around specific coordinates. Combine with the GeoJSON area mode for systematic coverage.

Data Enrichment & CRM Pipelines

Enrich existing business databases with fresh Google Maps data — add missing phone numbers, websites, email addresses, GPS coordinates, and social profiles to your CRM records.


Input Parameters — How to Configure the Google Maps Scraper

You must provide at least one data source per run. All other settings are optional.

Data Sources (provide at least one)

ParameterTypeDescriptionExample
querystringKeyword to search on Google Maps."dentist"
searchTermsstring[]Additional search queries (each runs as a separate Maps search).["bakery", "cafe"]
locationstringCity, region, or country appended to keyword searches."Austin, TX, USA"
startUrlsstring[]Direct Google Maps search or place URLs.["https://www.google.com/maps/search/pizza/@40.7,-74.0,12z"]
placeIdsstring[]Google Place IDs (strings starting with ChIJ…).["ChIJN1t_tDeuEmsRUsoyG83frY4"]
customGeolocationobjectGeoJSON Point (+ radiusKm), Polygon, or MultiPolygon for area coverage.{ "type": "Point", "coordinates": [-74, 40.7], "radiusKm": 5 }
exploreMapInsteadOfSearchbooleanEnable map-explore mode — scroll visible listings at the coordinates below (no keyword needed).true
mapCenterobjectCenter point for explore mode.{ "lat": 40.7128, "lng": -74.006, "zoom": 14 }

Run Settings

ParameterTypeDefaultDescription
maxResultsinteger100Maximum unique places to collect per run (1–500).
languageCodestring"en"Google Maps UI language code (e.g. en, de, es, fr, ja).

Filters (applied after scraping)

ParameterTypeDefaultDescription
minRatingnumberDrop places below this star rating (0–5).
skipClosedPlacesbooleanfalseRemove permanently or temporarily closed businesses.
searchMatchingstring"all""all" = no name filter; "only_includes" = place name must contain a search keyword.
websitestring"allPlaces""withWebsite" or "withoutWebsite" to filter by website presence. Automatically enables detail scraping.
categoriesstring[]Post-filter: keep rows whose name/snippet mentions one of these keywords.

Place Detail & Reviews

ParameterTypeDefaultDescription
scrapePlaceDetailPagebooleanfalseOpen each place page for phone, website, address, coordinates. Auto-enabled when reviews, photos, or extras are requested.
maxReviewsinteger0Reviews to collect per place (0 = skip, max 5,000).
reviewsSortstring"newest"Sort order: newest, mostRelevant, highestRanking, lowestRanking.
reviewsFilterStringstringOnly keep reviews containing this phrase.
maxImagesinteger0Photos per place (0 = skip, max 200).
maxQuestionsintegerQ&A pairs to extract (include this key to enable).

Website & Social Enrichment

ParameterTypeDefaultDescription
enrichContactsFromWebsitebooleanfalseCrawl each business website for emails, phones, and social links.
enrichSocialFacebookbooleanfalseLoad public Facebook page preview for discovered URLs.
enrichSocialInstagrambooleanfalseLoad public Instagram profile preview.
enrichSocialYoutubebooleanfalseLoad public YouTube channel preview.
enrichSocialTiktokbooleanfalseLoad public TikTok profile preview.
enrichSocialTwitterbooleanfalseLoad public X/Twitter profile preview.

Minimal Input Example

{
"query": "coffee shop",
"location": "San Francisco, CA",
"maxResults": 50
}

Full Input Example (with details, reviews, and contact enrichment)

{
"query": "marketing agency",
"location": "New York, NY",
"maxResults": 100,
"scrapePlaceDetailPage": true,
"maxReviews": 10,
"reviewsSort": "newest",
"maxImages": 5,
"enrichContactsFromWebsite": true,
"enrichSocialFacebook": true,
"enrichSocialInstagram": true,
"minRating": 4.0,
"skipClosedPlaces": true,
"languageCode": "en"
}

Output Format — What Data Does the Google Maps Scraper Return?

Every scraped business is one row in the Apify Dataset. Export to CSV, JSON, Excel, XML, or HTML from the Dataset tab or via the API.

Output JSON Example

{
"position": 1,
"query": "coffee shop",
"displayName": "Blue Bottle Coffee",
"title": "Blue Bottle Coffee",
"googleMapsUri": "https://www.google.com/maps/place/Blue+Bottle+Coffee/data=!4m7!3m6!...",
"rating": 4.5,
"userRatingCount": 1842,
"reviewsCount": 1842,
"businessStatus": "OPERATIONAL",
"formattedAddress": "66 Mint St, San Francisco, CA 94103, USA",
"nationalPhoneNumber": "(510) 653-3394",
"websiteUri": "https://bluebottlecoffee.com",
"location": { "lat": 37.7817, "lng": -122.4085 },
"listSnippet": "Blue Bottle Coffee\n4.5\nCoffee shop · 66 Mint St\nOpen · Closes 6 pm",
"emails": "hello@bluebottlecoffee.com",
"phonesFromWebsite": "+1-510-653-3394",
"facebookProfiles": "https://facebook.com/bluebottlecoffee",
"instagramProfiles": "https://instagram.com/bluebottle",
"reviews": [
{
"reviewId": "ChdDSUhN...",
"stars": 5,
"text": "Best pour-over in the city. Friendly staff and beautiful space.",
"reviewerName": "Jane D."
}
],
"images": [
"https://lh5.googleusercontent.com/p/..."
]
}

Output Field Reference

FieldTypeSourceDescription
positionintegerAlways1-based rank in this run.
querystringAlwaysSearch term or URL used for this row.
displayNamestringAlwaysBusiness name as shown on Google Maps.
titlestringAlwaysSame as displayName (compatibility alias).
googleMapsUristringAlwaysDirect Google Maps URL to the place.
ratingnumberList cardAverage star rating (1.0–5.0).
userRatingCountintegerList cardTotal number of Google reviews.
reviewsCountintegerList cardSame as userRatingCount (alias).
businessStatusstringList cardOPERATIONAL, CLOSED_TEMPORARILY, or CLOSED_PERMANENTLY.
listSnippetstringList cardRaw text from the Google Maps list card (category, address, hours).
cidstringList cardGoogle Maps CID (internal identifier).
formattedAddressstringDetail pageFull postal address.
nationalPhoneNumberstringDetail pagePhone number in local format.
websiteUristringDetail pageBusiness website URL.
locationobjectDetail page{ "lat": number, "lng": number } GPS coordinates.
reviewsarrayDetail pageReview objects: reviewId, stars, text, reviewerName.
reviewsDistributionobjectDetail pageStar distribution when available.
imagesarrayDetail pageDirect photo URLs from the place page.
questionsAndAnswersarrayDetail pageQ&A pairs when the tab is present.
emailsstringEnrichmentComma-separated emails found on the business website.
phonesFromWebsitestringEnrichmentComma-separated phones found on the website.
facebookProfilesstringEnrichmentFacebook page URLs found.
instagramProfilesstringEnrichmentInstagram profile URLs found.
linkedinProfilesstringEnrichmentLinkedIn page URLs found.
youtubeProfilesstringEnrichmentYouTube channel URLs found.
tiktokProfilesstringEnrichmentTikTok profile URLs found.
twitterProfilesstringEnrichmentX/Twitter profile URLs found.

Key-Value Store Outputs

KeyFormatDescription
OUTPUTJSONRun summary: ok, returnedCount, meta, outputValidation, places.
RESULTS_JSONJSONFull results as a JSON string.
RESULTS_CSVCSVExcel-compatible CSV (UTF-8 BOM).
OUTPUT_VALIDATIONJSONRow-level data quality checks.
REVIEWS_ROWSJSONFlat review list (when includeReviewsDatasetView is enabled).

How to Use the Google Maps Scraper

1. Run on Apify Console (no code)

  1. Go to the Google Maps Scraper Actor page.
  2. Click Try for free.
  3. Enter a search query (e.g., "coffee shop"), location (e.g., "Seattle, WA"), and max results.
  4. Click Start.
  5. Download your data from the Dataset tab as CSV, JSON, or Excel.

2. Run via Apify API (JavaScript)

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('scrapeio/google-maps-scraper-advance').call({
query: 'marketing agency',
location: 'San Francisco, CA',
maxResults: 100,
scrapePlaceDetailPage: true,
enrichContactsFromWebsite: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Scraped ${items.length} businesses from Google Maps`);
console.log(items[0]);

3. Run via Apify API (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("scrapeio/google-maps-scraper-advance").call(run_input={
"query": "dentist",
"location": "Boston, MA",
"maxResults": 50,
"scrapePlaceDetailPage": True,
"enrichContactsFromWebsite": True,
})
dataset = client.dataset(run["defaultDatasetId"]).list_items().items
print(f"Scraped {len(dataset)} businesses from Google Maps")
for place in dataset[:3]:
print(place["displayName"], place.get("websiteUri"), place.get("emails"))

4. Run via Apify CLI

apify call scrapeio/google-maps-scraper-advance \
--input='{"query":"restaurant","location":"Chicago, IL","maxResults":200,"scrapePlaceDetailPage":true}'

Why Choose This Google Maps Scraper?

  • No API Key Required — skip Google Cloud setup, OAuth, and per-request billing. This Google Maps scraper uses the public Maps interface, so there is no Google Places API key to manage.
  • Richest Data Extraction — the only Google Maps scraper that combines listing data, place-page details, review scraping, photo harvesting, and website contact crawling (emails + social profiles) in a single run.
  • Scale & Reliability — built-in Apify proxy rotation, automatic retries, consent-dialog handling, and deduplication keep large Google Maps scraping runs (up to 500 places) stable and repeatable.
  • Developer-Friendly — REST API, JavaScript SDK, Python SDK, webhooks, scheduler, and CLI. Wire Google Maps data into your CRM, data warehouse, or BI dashboard with zero custom infrastructure.
  • SEO-Grade Output — preserves ranking order, Google categories, structured addresses, and GPS coordinates. Ideal for local SEO reporting, GBP audits, and competitive intelligence.
  • Flexible Search Modes — keyword search, direct URLs, Place IDs, GeoJSON geographic coverage, and coordinate-based explore mode. No other Google Maps scraper offers this many input paths.

Frequently Asked Questions about Google Maps Scraping

Q: Is it legal to scrape Google Maps? Google Maps search results are publicly accessible. Many businesses and agencies scrape Google Maps for lawful purposes including lead generation, market research, and SEO auditing. You are responsible for complying with Google's Terms of Service and applicable data-privacy laws (GDPR, CCPA). Do not scrape or store personal data without a lawful basis.

Q: Do I need a Google Places API key to use this scraper? No. This Google Maps scraper does not call Google's billed Places API endpoints. It automates the consumer-facing Google Maps interface, so no API key, Google Cloud project, or billing account is needed.

Q: What proxies should I use for Google Maps scraping? The Actor integrates with Apify Proxy (residential and datacenter pools). Residential proxies are recommended for large runs (100+ places) or strict geo-targeted searches.

Q: Can I scrape Google Maps reviews? Yes. Set maxReviews (up to 5,000) and enable scrapePlaceDetailPage. You can also choose the sort order (newest, mostRelevant, highestRanking, lowestRanking) and filter reviews by keyword.

Q: Can I extract emails and phone numbers from Google Maps businesses? Yes. Enable enrichContactsFromWebsite. After the scraper finds a business website on the Google Maps place page, it crawls that website to extract email addresses, phone numbers, and social media profile URLs.

Q: What output formats does this Google Maps scraper support? The Apify Dataset exports to CSV, JSON, Excel (XLSX), XML, and HTML. The Actor also saves RESULTS_CSV (Excel-friendly with UTF-8 BOM) and RESULTS_JSON directly to the key-value store.

Q: How many businesses can I scrape from Google Maps per run? Up to 500 unique places per run. For larger jobs, use the Apify scheduler to batch runs across multiple locations or keywords.

Q: Can I scrape Google Maps without a keyword (explore mode)? Yes. Enable exploreMapInsteadOfSearch and provide mapCenter with lat, lng, and zoom. The scraper opens the map at those coordinates and collects every visible listing.

Q: Does this scraper handle Google consent dialogs and CAPTCHAs? Yes. The Actor automatically dismisses Google consent dialogs in multiple languages (English, French, German, Spanish) and uses proxy rotation plus randomized user agents to minimize blocking.

Q: Can I search a geographic area on Google Maps using GeoJSON? Yes. Pass a GeoJSON Point (with radiusKm), Polygon, or MultiPolygon in customGeolocation. The Actor generates a grid of map-search URLs inside the shape for systematic area coverage.


Chain these Apify Actors together for end-to-end data extraction and enrichment pipelines:


Start Scraping Google Maps Now

Run the Google Maps Scraper on Apify — turn any Google Maps search into a clean, structured dataset of local business leads with emails, phone numbers, reviews, and coordinates. No API key. No code. Export to CSV, JSON, or Excel in minutes.


Built by ScrapeIO | FastAd — automation & growth tooling.