Google Maps Scraper [Advance]
Pricing
from $2.00 / 1,000 results
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
Actor stats
3
Bookmarked
35
Total users
15
Monthly active users
2 days ago
Last modified
Categories
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
| Capability | Google Places API | This Google Maps Scraper |
|---|---|---|
| Setup | Google Cloud project, billing, OAuth keys | None — runs on Apify |
| Pricing | Per-request charges, strict quotas | Predictable Apify compute credits |
| Reviews per place | Capped at 5 | Up to 5,000 |
| Photos per place | Photo reference ID only | Up to 200 direct image URLs |
| Emails & social profiles | Not available | Website crawl extracts emails, phones, Facebook, Instagram, LinkedIn, YouTube, TikTok, X |
| Search modes | Text search + nearby | Keyword + location, Google Maps URLs, Place IDs, GeoJSON Polygon/Point, map explore by coordinates |
| Anti-blocking | Strict per-project quota | Apify residential & datacenter proxy rotation with automatic retries |
| Output formats | JSON only | CSV, JSON, Excel, XML, HTML |
| Scheduling & webhooks | Build your own | Built-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_JSONandRESULTS_CSVto 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)
| Parameter | Type | Description | Example |
|---|---|---|---|
query | string | Keyword to search on Google Maps. | "dentist" |
searchTerms | string[] | Additional search queries (each runs as a separate Maps search). | ["bakery", "cafe"] |
location | string | City, region, or country appended to keyword searches. | "Austin, TX, USA" |
startUrls | string[] | Direct Google Maps search or place URLs. | ["https://www.google.com/maps/search/pizza/@40.7,-74.0,12z"] |
placeIds | string[] | Google Place IDs (strings starting with ChIJ…). | ["ChIJN1t_tDeuEmsRUsoyG83frY4"] |
customGeolocation | object | GeoJSON Point (+ radiusKm), Polygon, or MultiPolygon for area coverage. | { "type": "Point", "coordinates": [-74, 40.7], "radiusKm": 5 } |
exploreMapInsteadOfSearch | boolean | Enable map-explore mode — scroll visible listings at the coordinates below (no keyword needed). | true |
mapCenter | object | Center point for explore mode. | { "lat": 40.7128, "lng": -74.006, "zoom": 14 } |
Run Settings
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 100 | Maximum unique places to collect per run (1–500). |
languageCode | string | "en" | Google Maps UI language code (e.g. en, de, es, fr, ja). |
Filters (applied after scraping)
| Parameter | Type | Default | Description |
|---|---|---|---|
minRating | number | — | Drop places below this star rating (0–5). |
skipClosedPlaces | boolean | false | Remove permanently or temporarily closed businesses. |
searchMatching | string | "all" | "all" = no name filter; "only_includes" = place name must contain a search keyword. |
website | string | "allPlaces" | "withWebsite" or "withoutWebsite" to filter by website presence. Automatically enables detail scraping. |
categories | string[] | — | Post-filter: keep rows whose name/snippet mentions one of these keywords. |
Place Detail & Reviews
| Parameter | Type | Default | Description |
|---|---|---|---|
scrapePlaceDetailPage | boolean | false | Open each place page for phone, website, address, coordinates. Auto-enabled when reviews, photos, or extras are requested. |
maxReviews | integer | 0 | Reviews to collect per place (0 = skip, max 5,000). |
reviewsSort | string | "newest" | Sort order: newest, mostRelevant, highestRanking, lowestRanking. |
reviewsFilterString | string | — | Only keep reviews containing this phrase. |
maxImages | integer | 0 | Photos per place (0 = skip, max 200). |
maxQuestions | integer | — | Q&A pairs to extract (include this key to enable). |
Website & Social Enrichment
| Parameter | Type | Default | Description |
|---|---|---|---|
enrichContactsFromWebsite | boolean | false | Crawl each business website for emails, phones, and social links. |
enrichSocialFacebook | boolean | false | Load public Facebook page preview for discovered URLs. |
enrichSocialInstagram | boolean | false | Load public Instagram profile preview. |
enrichSocialYoutube | boolean | false | Load public YouTube channel preview. |
enrichSocialTiktok | boolean | false | Load public TikTok profile preview. |
enrichSocialTwitter | boolean | false | Load 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
| Field | Type | Source | Description |
|---|---|---|---|
position | integer | Always | 1-based rank in this run. |
query | string | Always | Search term or URL used for this row. |
displayName | string | Always | Business name as shown on Google Maps. |
title | string | Always | Same as displayName (compatibility alias). |
googleMapsUri | string | Always | Direct Google Maps URL to the place. |
rating | number | List card | Average star rating (1.0–5.0). |
userRatingCount | integer | List card | Total number of Google reviews. |
reviewsCount | integer | List card | Same as userRatingCount (alias). |
businessStatus | string | List card | OPERATIONAL, CLOSED_TEMPORARILY, or CLOSED_PERMANENTLY. |
listSnippet | string | List card | Raw text from the Google Maps list card (category, address, hours). |
cid | string | List card | Google Maps CID (internal identifier). |
formattedAddress | string | Detail page | Full postal address. |
nationalPhoneNumber | string | Detail page | Phone number in local format. |
websiteUri | string | Detail page | Business website URL. |
location | object | Detail page | { "lat": number, "lng": number } GPS coordinates. |
reviews | array | Detail page | Review objects: reviewId, stars, text, reviewerName. |
reviewsDistribution | object | Detail page | Star distribution when available. |
images | array | Detail page | Direct photo URLs from the place page. |
questionsAndAnswers | array | Detail page | Q&A pairs when the tab is present. |
emails | string | Enrichment | Comma-separated emails found on the business website. |
phonesFromWebsite | string | Enrichment | Comma-separated phones found on the website. |
facebookProfiles | string | Enrichment | Facebook page URLs found. |
instagramProfiles | string | Enrichment | Instagram profile URLs found. |
linkedinProfiles | string | Enrichment | LinkedIn page URLs found. |
youtubeProfiles | string | Enrichment | YouTube channel URLs found. |
tiktokProfiles | string | Enrichment | TikTok profile URLs found. |
twitterProfiles | string | Enrichment | X/Twitter profile URLs found. |
Key-Value Store Outputs
| Key | Format | Description |
|---|---|---|
OUTPUT | JSON | Run summary: ok, returnedCount, meta, outputValidation, places. |
RESULTS_JSON | JSON | Full results as a JSON string. |
RESULTS_CSV | CSV | Excel-compatible CSV (UTF-8 BOM). |
OUTPUT_VALIDATION | JSON | Row-level data quality checks. |
REVIEWS_ROWS | JSON | Flat review list (when includeReviewsDatasetView is enabled). |
How to Use the Google Maps Scraper
1. Run on Apify Console (no code)
- Go to the Google Maps Scraper Actor page.
- Click Try for free.
- Enter a search query (e.g.,
"coffee shop"), location (e.g.,"Seattle, WA"), and max results. - Click Start.
- 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 ApifyClientclient = 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().itemsprint(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.
Related Google Scrapers & Data Tools by ScrapeIO
Chain these Apify Actors together for end-to-end data extraction and enrichment pipelines:
- Amazon Multi-Marketplace Scraper — scrape Amazon ASINs, prices, reviews, and search rankings across 23 international marketplaces.
- Google News Scraper — extract Google News headlines, publication sources, dates, and article links by keyword.
- Facebook Ad Library Scraper — scrape Meta/Facebook ads by keyword, Page ID, or Ad Library URL with full creative and spend data.
- Instagram Ads Scraper — extract Instagram ads with creative assets, targeting details, and performance metrics.
- WhatsApp Ads Scraper — collect Click-to-WhatsApp ad intelligence from Meta platforms.
- Facebook Ad Library Brand Finder — resolve brand names and advertiser names to verified Facebook Page IDs.
- YouTube Video Downloader — download YouTube videos or audio tracks to cloud storage.
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.

