Google Maps Scraper
Pricing
from $1.20 / 1,000 results
Google Maps Scraper
Extract comprehensive business data from Google Maps, including ratings, emails, social media profiles, photos, and operational details. Perfect for market research and lead generation.
Pricing
from $1.20 / 1,000 results
Rating
4.9
(14)
Developer
API ninja
Maintained by CommunityActor stats
29
Bookmarked
599
Total users
109
Monthly active users
13 days ago
Last modified
Categories
Share
Google Maps Scraper is an Apify Actor designed to extract Google Maps business and location data at scale through the Local Business Data API. It uses a grid-based quadtree search to discover businesses across large or dense areas.
📍 Search by location & query (e.g., 'dentists in Berlin') 🔍 Deep grid search to bypass 120‑result limit 🧾 Export to JSON, CSV, Excel, HTML
Who is this for?
Perfect for marketing professionals, researchers, and developers who need large-scale local business data for lead generation or market analysis, without needing to write code.
💡 Need Reviews?
This Actor focuses on discovering places and their details. To parse detailed reviews (text, author, dates, stars) for these places, use our companion tool:
👉 Google Maps Reviews Scraper
Table of contents
- What does this Google Maps scraper do?
- What data can you extract from Google Maps?
- How to scrape Reviews
- Use cases: Google Maps data for leads & local SEO
- How to scrape Google Maps business data
- Tips: performance & accuracy
- Limitations & Notes
- Is it legal to scrape Google Maps?
- Input
- Output
- Integrations and API
- Pricing
- FAQ
- Support
- License
- Acknowledgments
What does this Google Maps scraper do?
Google Maps Scraper extracts structured data from Google Maps based on your location and optional search query. It supports both:
- Text Search: Find specific businesses (e.g., "coffee shops in Berlin", "Tesla chargers").
- Area Search: Search around coordinates or recursively within an exact bounding box.
Key Feature: Deep Search
Standard Google Maps searches often limit results to the top ~120 places. This Actor subdivides the search area into smaller "tiles" (quadtree), recursively querying each one to uncover all available places in the region, regardless of the display limits.[GMaps grids & zoom]
Note on coverage:
Because the Actor relies on Google’s viewport tiles, results may sometimes extend slightly outside the exact requested bounds or vary based on Google's data density. This is normal behavior for "search by area".
What data can you extract from Google Maps?
You can extract the following fields for each place (availability depends on the specific business):
| Category | Data points | Example field in output |
|---|---|---|
| Basic info | Name, business categories, Place ID | name, subtypes, place_id |
| Location | Address, city, country, coordinates | full_address, latitude, longitude |
| Contact | Phone, website, Google Maps URL | phone_number, website, place_link |
| Contact enrichment (optional) | Emails and social/contact links from the business web presence | emails_and_contacts |
| Performance | Rating, review count, price level | rating, review_count, price_level |
| Metadata | Business status and hours | business_status, working_hours |
You can download the dataset in JSON, CSV, Excel, or HTML table formats from the Storage tab.
How to scrape Reviews
This Actor is optimized for Place Discovery. If your goal is to analyze customer sentiment, extract review text, or monitor feedback, you should use the extracted Place IDs or URLs from this run as input for our specialized reviews scraper.
Workflow:
- Run Google Maps Scraper (this Actor) to find businesses.
- Copy the
place_linkorplace_idfrom the results. - Run the Google Maps Reviews Scraper using those IDs/URLs.
Use cases: Google Maps data for leads & local SEO
- Generate Leads: Build lists of local businesses with phone numbers and websites (e.g., "Plumbers in New York").
- Market Research: Analyze competitor density and ratings across different neighborhoods.
- Site Selection: Evaluate potential locations for new stores based on existing amenities.
- Data Enrichment: Verify or update your existing business database with fresh Google Maps data.
Why run this scraper on Apify?
Running this Actor on the Apify platform gives you advantages over local scripts:
- Scheduling: Schedule recurring scrapes (daily/weekly) to keep your local business data fresh.
- Proxies: Uses built‑in proxy rotation for reliable scraping without getting blocked.
- Integrations: Connect results directly to CRMs, Google Sheets, or Slack via Zapier/Make.
- Monitoring: Track run history, logs, and errors in a single dashboard.
How to scrape Google Maps business data
How to scrape Google Maps data without coding
- Open the Actor in the Apify Console.
- Go to the Input tab.
- Enter a Query and Location: e.g.,
coffee shopsandLondon, UK. For precise coverage, provide center coordinates and a radius or all four bounding-box coordinates. - Choose the Area: The Actor uses an exact bounding box first, then center coordinates and radius, then geocodes
location. Initial business results are used for area inference only as a fallback. - (Optional) Set Filters: Filter by Local Business Data subtype, verification, or business status.
- (Optional) Enable
includeContacts: Adds deeper contact enrichment (emails_and_contacts) per place. This takes longer and applies an additional per-result Actor charge. - Start the Run: Click Start.
- Download Results: Once finished, go to the Dataset tab to export your data.
Tips: performance & accuracy
To get the most out of your runs and optimize Compute Units (CUs):
- Use smaller locations: For exhaustive scrapes, targeting specific districts or ZIP codes (e.g., "Manhattan, NY" instead of "New York") often yields better coverage and performance than broad city searches.
- Validate first: Start with a small
maxResultCount(e.g., 50) to verify your search queries and filters are returning the expected data before launching a large run. - Deep search control: Uncheck
scrapeAllPlacesif you only need the top-ranking results. Enable it only when you need comprehensive coverage of an entire area. - Contact enrichment cost/performance: Enable
includeContactsonly when needed. Seed results can include contacts directly; recursive area results are deduplicated first and then enriched in batches. An additional Actor event charge applies to each enriched output record.
Limitations & Notes
- Density Limits: In extremely dense urban areas (e.g., Manhattan), Google might not return every single small business in one pass. For 100% coverage, split your search into smaller sub-districts or use ZIP codes.
- Viewport Overlap: Results may occasionally include places slightly outside your requested bounds if they fall within the overlapping map tiles used for searching.
- Language Bias: The results' language and formatting can be influenced by the
languageCodeandregionCodeinput parameters.
Is it legal to scrape Google Maps?
This Actor extracts publicly available business information. However, you must comply with:
- Regulations: GDPR, CCPA, and other data protection laws (especially regarding personal data in reviews, though this Actor primarily targets business info).
- Terms of Service: Google's terms regarding crawling and data use. See Google Maps Platform Terms of Service.
Input
The input configuration allows you to define the search area, query, and filters. Below are the primary fields:
| Field | Type | Description |
|---|---|---|
location | string | Optional city, address, or area (e.g., "Paris", "NYC"). Either this or textQuery is required. |
textQuery | string | Business type or keyword (e.g., "pizza"). Either this or location is required. |
latitude, longitude | number | Optional center coordinates. Both must be supplied together. |
radiusMeters | number | Radius around center coordinates; defaults to 25,000 meters. |
north, south, east, west | number | Optional exact bounding box. All four values must be supplied. |
maxResultCount | number | Approximate target number of places to return. |
scrapeAllPlaces | boolean | Enable deep grid search for full coverage (slower, more results). |
includeContacts | boolean | If true, enriches places with emails_and_contacts (emails/social/contact links when available). Slower and billed as an additional per-result Actor event. |
languageCode | string | Language for results (e.g., en, de, es). |
Note: See full configuration options including Place Types, Price Levels, and EV Charging filters in the Input tab of the Actor.
Output
Results are stored in the default Apify dataset. You can download the dataset in JSON, CSV, Excel, or HTML table formats from the Storage or Dataset tab. The full output schema is also available for review in the Dataset tab.
If includeContacts is enabled, records may include an additional emails_and_contacts object. This field can be null when no contacts are found.
Example JSON Object:
{"business_id": "0x89c2589a018531e3:0xb9df1f7387a94119","place_id": "ChIJ4zGFAZpYwokRGUGph3Mf37k","name": "Example Pizza","subtypes": ["Pizza restaurant", "Italian restaurant"],"full_address": "123 Example St, New York, NY 10001","latitude": 40.7501,"longitude": -73.9972,"rating": 4.8,"review_count": 523,"phone_number": "+12125550123","website": "https://example.com","emails_and_contacts": {"emails": ["hello@example.com"],"socials": ["https://www.instagram.com/example"]},"place_link": "https://www.google.com/maps/place/...","business_status": "OPEN"}
Integrations and API
You can programmatically trigger this Actor using the Apify API or Apify Client for Python/JS.
Python Example:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"location": "San Francisco, CA","textQuery": "coffee shops","maxResultCount": 100}run = client.actor("api-ninja/google-maps-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['name']} - {item['rating']} stars")
Pricing
This Actor is efficient, but costs depend on the volume of data and platform usage (Compute Units).
- Free Plan: You can test this Actor using your free monthly credits.
- Paid Plans: For large-scale extraction, a paid Apify plan is recommended.
- Contact enrichment:
includeContactsincreases runtime and is billed as an additional Actor event per enriched output record.
Check the Apify Pricing Page for current rates.
FAQ
Q: Is this a Google Maps API alternative?
A: Yes, this actor provides an alternative way to access Google Maps data without the constraints of the official API's rigorous rate limits, specifically useful for bulk data collection.
Q: Do I need proxies to scrape Google Maps?
A: No, you don't need to configure proxies manually. The Apify platform handles proxy rotation and management automatically to ensure reliable extraction.
Q: Can I use this with no coding via the UI?
A: Absolutely. The Actor is designed to be used directly from the Apify Console with a user-friendly interface. No coding skills are required.
Q: The Actor returned fewer results than I expected – what can I do?
A: Try enabling scrapeAllPlaces to force a deeper grid search, or break your location down into smaller areas (e.g., search by ZIP code instead of the whole city). Also, ensure maxResultCount is high enough.
Q: My run is timing out or using too many CUs – how do I optimize?
A: Reduce the size of your search area or use more specific keywords. If you are scraping a huge area, consider splitting it into multiple runs.
Q: Can I get email addresses?
A: Yes, if you enable includeContacts. Unique businesses are enriched with emails/social/contact links in emails_and_contacts. Availability is not guaranteed for every place.
Support
If you encounter any issues or have feature requests:
- Issues: Please use the Issues tab on the Actor page to report bugs or request new features.
- Email: apify@dziura.online
License
Apache License 2.0