Google Maps Scraper
by abotapi
Extract business data from Google Maps at scale. Get names, addresses, phone numbers, websites, ratings, reviews, opening hours, popular times, photos...
Opens on Apify.com
About Google Maps Scraper
Extract business data from Google Maps at scale. Get names, addresses, phone numbers, websites, ratings, reviews, opening hours, popular times, photos, and 40+ data points per listing.
What does this actor do?
Google Maps Scraper is a web scraping and automation tool available on the Apify platform. It's designed to help you extract data and automate tasks efficiently in the cloud.
Key Features
- Cloud-based execution - no local setup required
- Scalable infrastructure for large-scale operations
- API access for integration with your applications
- Built-in proxy rotation and anti-blocking measures
- Scheduled runs and webhooks for automation
How to Use
- Click "Try This Actor" to open it on Apify
- Create a free Apify account if you don't have one
- Configure the input parameters as needed
- Run the actor and download your results
Documentation
Google Maps Business Scraper
Extract business data from Google Maps at scale. Get names, addresses, phone numbers, websites, ratings, reviews, opening hours, popular times, photos, and 40+ data points per listing. ## What Data Can You Extract? ### Business Information - Business name, category, subcategories - Full address with street, city, state, postal code, country - Phone number and website URL - Google Place ID and Maps URL ### Ratings & Reviews - Average rating (1-5 stars) - Total review count - Individual reviews with text, rating, date, author - Owner responses to reviews ### Location Data - Latitude and longitude coordinates - Plus Code (Google's location code) - "Located in" parent location (e.g., mall, airport) ### Operational Details - Opening hours (daily schedule) - Popular times (hourly occupancy by day) - Temporarily/permanently closed status - Price level ($, $$, $$$, $$$$) ### Rich Content - Photo URLs (configurable limit) - Menu URL - Order/delivery links (DoorDash, UberEats, etc.) - "People also search" related businesses ### Search Context - Search query that found the business - Rank in search results - Sponsored/advertisement indicator ## Quick Start ### Basic Search json { "searchStringsArray": ["restaurants"], "location": "New York, NY", "maxResultsPerSearch": 100 } ### Search by Coordinates json { "searchStringsArray": ["coffee shops"], "lat": 40.7128, "lng": -74.0060, "zoom": 15, "maxResultsPerSearch": 50 } ### Large Area with Grid Search json { "searchStringsArray": ["hotels"], "customGeolocation": { "type": "Polygon", "coordinates": [[[-122.5, 37.7], [-122.3, 37.7], [-122.3, 37.85], [-122.5, 37.85], [-122.5, 37.7]]] }, "zoom": 16, "maxResultsPerSearch": 200 } ### With Reviews json { "searchStringsArray": ["dentists"], "location": "Chicago, IL", "maxResultsPerSearch": 50, "maxReviews": 20, "reviewsSort": "newest" } ### Direct Place ID Lookup json { "searchStringsArray": ["place_id:ChIJN1t_tDeuEmsRUsoyG83frY4"] } ## Input Parameters ### Search Options | Parameter | Type | Default | Description | |-----------|------|---------|-------------| | searchStringsArray | string[] | ["restaurants"] | Search queries or Place IDs (place_id:ChIJ...) | | startUrls | object[] | [] | Direct Google Maps URLs to scrape | | location | string | "New York, NY" | Location text appended to search | ### Geographic Targeting | Parameter | Type | Default | Description | |-----------|------|---------|-------------| | lat | number | - | Latitude for coordinate search (-90 to 90) | | lng | number | - | Longitude for coordinate search (-180 to 180) | | customGeolocation | object | - | GeoJSON Polygon/MultiPolygon for grid search | | zoom | integer | 14 | Map zoom level (1-21). Higher = smaller grid cells | | country | string | - | Country filter | | state | string | - | State/region filter | | city | string | - | City filter | | postalCode | string | - | Postal/ZIP code filter | ### Extraction Limits | Parameter | Type | Default | Description | |-----------|------|---------|-------------| | maxResultsPerSearch | integer | 5 | Max results per search query (up to 10,000) | | maxReviews | integer | 0 | Max reviews per business (0 = skip reviews) | | maxImages | integer | 10 | Max photo URLs per business | ### Output Options | Parameter | Type | Default | Description | |-----------|------|---------|-------------| | reviewsSort | string | "relevant" | Sort reviews: relevant, newest, highest, lowest | | skipClosedPlaces | boolean | false | Skip closed businesses | | oneReviewPerRow | boolean | false | Output one row per review (for CSV) | | language | string | "en" | Language code for results | ### Performance | Parameter | Type | Default | Description | |-----------|------|---------|-------------| | maxConcurrency | integer | 5 | Parallel browser pages (1-20) | | proxyConfiguration | object | - | Apify proxy settings | ### Resume Options | Parameter | Type | Description | |-----------|------|-------------| | resumeRunId | string | Run ID to resume from (loads previously scraped Place IDs) | ## Output Schema Each business is saved with the following structure: json { "placeId": "ChIJ49sQuK-AhYARM6U646SA12Y", "title": "Blue Bottle Coffee", "url": "https://www.google.com/maps/place/...", "categoryName": "Coffee shop", "address": "315 Linden St, San Francisco, CA 94102", "street": "315 Linden St", "city": "San Francisco", "state": "CA", "postalCode": "94102", "countryCode": "US", "phone": "+1 510-653-3394", "website": "https://bluebottlecoffee.com", "totalScore": 4.5, "reviewsCount": 1842, "priceLevel": "$$", "location": { "lat": 37.7763, "lng": -122.4158 }, "plusCode": "QHFJ+8R Hayes Valley, San Francisco, CA", "openingHours": [ { "day": "Monday", "hours": "7 AM - 6 PM" }, { "day": "Tuesday", "hours": "7 AM - 6 PM" } ], "popularTimes": [ { "day": "Monday", "hours": [ { "hour": 7, "occupancyPercent": 20 }, { "hour": 8, "occupancyPercent": 45 }, { "hour": 9, "occupancyPercent": 65 } ] } ], "imageUrls": ["https://lh3.googleusercontent.com/..."], "peopleAlsoSearch": [ { "title": "Sightglass Coffee", "placeId": "ChIJ...", "url": "..." } ], "menuUrl": "https://bluebottlecoffee.com/menu", "orderLinks": [ { "platform": "DoorDash", "url": "https://..." } ], "temporarilyClosed": false, "permanentlyClosed": false, "searchString": "coffee shops", "rank": 3, "isAdvertisement": false, "scrapedAt": "2025-12-06T10:30:00.000Z", "reviews": [ { "name": "John D.", "text": "Great coffee and atmosphere!", "rating": 5, "date": "2 weeks ago", "responseFromOwner": "Thanks for visiting!" } ] } ## Scaling to Millions of Records Google Maps limits search results to ~120-400 per query. To scrape millions of businesses: ### Strategy 1: Grid Search (Recommended) Use customGeolocation to define a polygon. The scraper auto-generates grid points based on zoom level: | Zoom | Grid Cell Size | Example: California | |------|----------------|---------------------| | 14 | ~6 km | ~2,500 cells | | 15 | ~3 km | ~10,000 cells | | 16 | ~1.5 km | ~40,000 cells | Each cell runs a separate search, so: - 10,000 cells × 200 results/cell = 2 million potential results json { "searchStringsArray": ["restaurants"], "customGeolocation": { "type": "Polygon", "coordinates": [[[...california boundary...]]] }, "zoom": 15, "maxResultsPerSearch": 200 } ### Strategy 2: Multiple Search Terms Different queries return different businesses: json { "searchStringsArray": [ "restaurants", "cafes", "bars", "hotels", "gyms", "dentists", "plumbers", "lawyers" ], "location": "Los Angeles, CA" } ### Strategy 3: Neighborhood Batching Run separate Actor calls per area: bash # Run 1: Downtown {"searchStringsArray": ["restaurants"], "location": "Downtown, Los Angeles"} # Run 2: Hollywood {"searchStringsArray": ["restaurants"], "location": "Hollywood, Los Angeles"} ## Resume & Recovery ### Automatic Protection - Deduplication: Place IDs saved to persistent storage - Incremental saves: Results pushed immediately (never lost) - Migration handling: State saved when Apify migrates servers ### Manual Resume If a run crashes, start a new run with resumeRunId: json { "searchStringsArray": ["restaurants"], "location": "San Francisco, CA", "resumeRunId": "abc123xyz" } The scraper loads Place IDs from the previous run and skips already-scraped businesses. ## Anti-Detection Features Built-in protections for reliable scraping: - Browser fingerprint rotation - Webdriver detection masking - Human-like scrolling with random delays - Rate limiting (30 requests/minute) - CAPTCHA detection with exponential backoff - Automatic retry with session rotation Tip: For high-volume scraping, use residential proxies via proxyConfiguration. ## Performance | Metric | Typical Value | |--------|---------------| | Speed | 800-1,200 listings/hour | | Memory | < 1 GB | | Concurrency | 1-20 parallel pages | | Retry attempts | 3 per failed request | ## Export Formats Download from Apify Dataset: - JSON - Full nested structure - CSV - Flattened for spreadsheets - Excel - .xlsx format - XML - For integrations ## Use Cases - Lead Generation: Build prospect lists with contact info - Market Research: Analyze competitors, pricing, ratings - Local SEO: Track rankings and reviews - Real Estate: Map amenities near properties - Investment: Assess retail density and competition - Data Enrichment: Add location data to existing records
Categories
Common Use Cases
Market Research
Gather competitive intelligence and market data
Lead Generation
Extract contact information for sales outreach
Price Monitoring
Track competitor pricing and product changes
Content Aggregation
Collect and organize content from multiple sources
Ready to Get Started?
Try Google Maps Scraper now on Apify. Free tier available with no credit card required.
Start Free TrialActor Information
- Developer
- abotapi
- Pricing
- Paid
- Total Runs
- 12
- Active Users
- 4
Related Actors
🏯 Tweet Scraper V2 - X / Twitter Scraper
by apidojo
Google Search Results Scraper
by apify
Instagram Profile Scraper
by apify
Tweet Scraper|$0.25/1K Tweets | Pay-Per Result | No Rate Limits
by kaitoeasyapi
Apify provides a cloud platform for web scraping, data extraction, and automation. Build and run web scrapers in the cloud.
Learn more about ApifyNeed Professional Help?
Couldn't solve your problem? Hire a verified specialist on Fiverr to get it done quickly and professionally.
Trusted by millions | Money-back guarantee | 24/7 Support