Google Maps Scraper Made Easy
Pricing
Pay per event
Google Maps Scraper Made Easy
Effortlessly extract location data with Google Maps Scraper Made Easy. Boost your business and marketing by quickly gathering contacts, reviews, and addresses. Perfect for lead generation, research, and local SEO success. Simple, fast, and reliable!
Pricing
Pay per event
Rating
0.0
(0)
Developer
DataCach
Actor stats
0
Bookmarked
50
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Google Maps Scraper — Extract Local Business Data by Location
Scrape Google Maps to extract phone numbers, websites, ratings, reviews, opening hours, social links, photos, and more — targeting any area on earth by coordinates and radius. No Google Places API key required.
How it works
This Google Maps scraper uses geo-targeted coordinate sampling to systematically cover an area, bypassing the 60-result cap that limits standard Google Maps searches. Instead of querying a single point, it generates dozens of random points within your defined radius and searches each one — uncovering thousands of businesses per city.
What data does this Google Maps scraper extract?
Each place result includes:
| Field | Description |
|---|---|
name | Business name |
full_address | Street address |
phone_number | Contact phone number |
website | Business website URL |
rating | Google star rating (0–5) |
reviews_count | Total number of reviews |
categories | Business categories (e.g. "Italian restaurant") |
operational_hours | Today's opening hours |
geo | Latitude and longitude |
photos | Array of Google-hosted photo URLs |
plus_code | Google Plus Code |
price_per_person | Estimated price range |
tags | Amenities, atmosphere, service options, payment methods, etc. |
social_links | Facebook, Instagram, TikTok, and other social profiles (optional) |
third_party_services | Delivery links: UberEats, Grubhub, DoorDash, etc. (optional) |
place_id / cid / mid | Google Maps internal identifiers |
google_frontpage_url | Direct Google Maps link for the place |
extraction_datetime | UTC timestamp of when data was collected |
Use cases
Lead generation & sales prospecting Extract business name, phone, website, and social media from any area. Build targeted prospect lists for cold outreach without buying expensive B2B databases.
Competitive intelligence Monitor competitor ratings, review counts, and pricing across a geographic area. Track changes over time by scheduling recurring runs.
Market research & location analysis Measure category density (e.g. "how many dentists are within 5 km of this address?"). Identify gaps and saturation in local markets.
Franchise & retail auditing Verify that your locations appear correctly on Google Maps — hours, address, phone, and category — at scale.
Food delivery & on-demand platform expansion Find restaurants, cafés, and shops not yet onboarded to your platform by scraping an area and filtering by category.
Real estate & investment research Assess the commercial ecosystem around a property: restaurants, gyms, pharmacies, banks, and other amenities within walking distance.
Why use this scraper instead of the Google Places API?
| Google Maps Scraper | Google Places API | |
|---|---|---|
| API key required | No | Yes |
| Cost | Pay-per-result (Apify) | $17–$32 per 1,000 requests |
| Results per area | Thousands (radius sampling) | 60 max per query |
| Social links | Yes (optional) | No |
| Delivery service links | Yes (optional) | No |
| Place photos | Yes | Yes (limited) |
| Setup time | Minutes | Hours (quota, billing, auth) |
Input
| Field | Type | Required | Description |
|---|---|---|---|
search_terms | array<string> | ✅ | Keywords to search on Google Maps (e.g. ["restaurant", "coffee shop"]). |
central_latitude | string | ✅ | Latitude of the center coordinate. |
central_longitude | string | ✅ | Longitude of the center coordinate. |
search_radius_in_km | integer | ✅ | Radius in km around the center to cover. |
number_of_points | integer | ✅ | Number of random sampling points to generate inside the radius. |
zoom | integer (10–20) | ✅ | Google Maps zoom level. 15 recommended for city-level searches. |
dispersion_factor | string (0.1–1.0) | ✅ | Point spread: 0.1 = tight cluster, 1.0 = wide scatter across full radius. |
max_results | integer | ✅ | Hard cap on total places to return. Actor stops when reached. |
country_code | string (ISO-2) | ✅ | Restrict results to this country (e.g. "us", "de", "mx"). |
extract_social_links | boolean | ❌ | Visit each place's Google social page to collect Facebook, Instagram, TikTok, etc. |
extract_related_services | boolean | ❌ | Collect third-party delivery and booking links (UberEats, DoorDash, Grubhub, etc.). |
Example input
{"search_terms": ["restaurant", "pizza"],"central_latitude": "40.66382229790527","central_longitude": "-73.93410730374993","zoom": 15,"search_radius_in_km": 3,"number_of_points": 50,"dispersion_factor": "0.5","max_results": 500,"country_code": "us","extract_social_links": true,"extract_related_services": false}
Output
Each dataset record corresponds to one Google Maps place. Output is available in JSON, CSV, XML, Excel, HTML, RSS, JSONL, or via the Apify API.
{"place_id": "ChIJYQchsYFLwokRyef6-Xp1JWY","cid": "7360418337047373769","name": "Sapori Ristorante","full_address": "3800 Richmond Ave, Staten Island, NY 10312","country_code": "us","phone_number": "+17182100388","website": "http://saporiristorantesi.com/","google_frontpage_url": "https://www.google.com/maps?cid=7360418337047373769","rating": 4.9,"reviews_count": 326,"categories": ["Italian restaurant"],"operational_hours": [{ "day": "Monday", "hours": "3 p.m.–10 p.m." }],"geo": { "lat": 40.545043, "lng": -74.165947 },"price_per_person": [{ "currency": "USD", "price_from": 20.0, "price_to": 30.0 }],"plus_code": "87G7GRWM+2J","photos": ["https://lh3.googleusercontent.com/p/AF1QipOBvdBBg2ca1VSPD9OdYevQqBKVj41GXZ_vqPy0","https://lh3.googleusercontent.com/p/AF1QipM5oX6dX4d_gwSdg-RUps04bzgRFRYevJYSdVUF"],"social_links": ["https://www.facebook.com/p/Sapori-Ristorante-SI-100094523357010/"],"third_party_services": ["https://www.grubhub.com/restaurant/sapori-ristorante-3800-richmond-ave-staten-island/11017944","https://www.doordash.com/store/sapori-ristorante-staten-island-28036724/"],"tags": [{ "group_id": "service_options", "key_title": "Outdoor seating", "value": 1 },{ "group_id": "service_options", "key_title": "Delivery", "value": 1 },{ "group_id": "payments", "key_title": "Credit cards", "value": 1 }],"search_term": "restaurant","maps_url": "https://www.google.com/maps/search/restaurant/@40.589,-74.032,12z","extraction_datetime": "2025-08-16T06:34:39+00:00"}
How to run
From Apify Console
- Open the actor page and click Try for free.
- Paste your JSON input (see example above).
- Click Start — results appear live in the Dataset tab.
From Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("BenjaminFloresV~google-maps-crawler-by-location").call(input={"search_terms": ["pharmacy"],"central_latitude": "48.8566","central_longitude": "2.3522","zoom": 15,"search_radius_in_km": 2,"number_of_points": 30,"dispersion_factor": "0.3","max_results": 300,"country_code": "fr"})for place in client.dataset(run["defaultDatasetId"]).iterate_items():print(place["name"], place["phone_number"], place["website"])
Via REST API (cURL)
curl -X POST \-H 'Content-Type: application/json' \-H 'Authorization: Bearer <YOUR_APIFY_API_TOKEN>' \-d '{"search_terms": ["hotel"],"central_latitude": "51.5072","central_longitude": "-0.1276","zoom": 15,"search_radius_in_km": 4,"number_of_points": 40,"dispersion_factor": "0.4","max_results": 400,"country_code": "gb"}' \'https://api.apify.com/v2/acts/BenjaminFloresV~google-maps-crawler-by-location/runs?waitForFinish=1'
Key features
- Radius-based geo-targeting — define a center coordinate + radius and generate random sampling points to systematically cover the area, bypassing the 60-result cap on standard Google Maps searches.
- Multi-keyword support — supply multiple search terms; the actor runs all combinations across all generated points.
- Residential proxy rotation — built-in residential IP rotation reduces CAPTCHAs and blocks on Google Maps.
- Async & concurrent — powered by Apify Python SDK +
asynciofor high-throughput parallel scraping. - Optional social links — extract Facebook, Instagram, TikTok, and other social profiles for each business.
- Optional delivery links — extract UberEats, DoorDash, Grubhub, Seamless, and similar third-party service URLs.
- Pay-per-event billing — charged only for what you use (
scraped_place,scraped_photos,fetch_social_links,fetch_related_services). - Country filter — restrict results to your target country using ISO-2 codes for cleaner datasets.
- Deduplication — built-in
place_iddeduplication prevents duplicate records across overlapping search points.
Frequently asked questions
Does this scraper require a Google Maps API key? No. This actor scrapes Google Maps directly — no API key, Google Cloud account, or billing setup required on your end.
How many results can it extract per run?
There is no hard platform limit. A typical run with 50 sampling points over a 3 km radius returns 200–800 places depending on business density. Set max_results to control the cap.
Can I scrape multiple cities in one run? One run covers one circular area (center + radius). For multiple cities, start a separate run per city or schedule them using Apify's built-in scheduler.
What is the dispersion_factor parameter?
It controls how spread out the sampling points are within the radius. 0.1 clusters all points near the center; 1.0 distributes them evenly across the full circle. Use 0.5 as a balanced default.
What is the zoom parameter?
It sets the Google Maps zoom level used when generating search URLs. Lower zoom = wider view = fewer but larger-area results. 15 is ideal for city streets; 12 for broader metro coverage.
Can I extract social media profiles?
Yes — enable extract_social_links: true. The actor will visit each place's Google knowledge panel to collect links to Facebook, Instagram, TikTok, YouTube, and other profiles.
What delivery platforms are supported?
With extract_related_services: true, the actor extracts third-party links shown by Google Maps for each place: UberEats, DoorDash, Grubhub, Seamless, Instacart, and others depending on the business.
Is this legal? Web scraping publicly available data from Google Maps is widely practiced for research, lead generation, and business intelligence. Users are responsible for compliance with Google's Terms of Service and applicable laws in their jurisdiction.
Supported countries
| Flag | Country | Flag | Country | |
|---|---|---|---|---|
| 🇺🇸 | United States | 🇩🇪 | Germany | |
| 🇬🇧 | United Kingdom | 🇫🇷 | France | |
| 🇪🇸 | Spain | 🇮🇹 | Italy | |
| 🇲🇽 | Mexico | 🇧🇷 | Brazil | |
| 🇦🇷 | Argentina | 🇨🇴 | Colombia | |
| 🇨🇱 | Chile | 🇵🇪 | Peru | |
| 🇨🇦 | Canada | 🇦🇺 | Australia | |
| 🇳🇿 | New Zealand | 🇯🇵 | Japan | |
| 🇰🇷 | South Korea | 🇳🇱 | Netherlands | |
| 🇧🇪 | Belgium | 🇵🇹 | Portugal | |
| 🇵🇱 | Poland | 🇸🇪 | Sweden | |
| 🇳🇴 | Norway | 🇩🇰 | Denmark | |
| 🇫🇮 | Finland | 🇦🇹 | Austria | |
| 🇨🇭 | Switzerland | 🇬🇷 | Greece | |
| 🇹🇷 | Turkey | 🇷🇺 | Russia | |
| 🇺🇦 | Ukraine | 🇷🇴 | Romania | |
| 🇭🇺 | Hungary | 🇨🇿 | Czech Republic | |
| 🇸🇰 | Slovakia | 🇭🇷 | Croatia | |
| 🇷🇸 | Serbia | 🇧🇬 | Bulgaria | |
| 🇱🇹 | Lithuania | 🇱🇻 | Latvia | |
| 🇪🇪 | Estonia | 🇸🇮 | Slovenia | |
| 🇮🇪 | Ireland | 🇮🇸 | Iceland | |
| 🇨🇾 | Cyprus | 🇲🇹 | Malta | |
| 🇱🇺 | Luxembourg | 🇲🇨 | Monaco | |
| 🇸🇲 | San Marino | 🇻🇦 | Vatican City | |
| 🇦🇩 | Andorra | 🇦🇱 | Albania | |
| 🇦🇲 | Armenia | 🇦🇿 | Azerbaijan | |
| 🇧🇦 | Bosnia and Herzegovina | 🇧🇾 | Belarus | |
| 🇧🇴 | Bolivia | 🇨🇷 | Costa Rica | |
| 🇨🇺 | Cuba | 🇩🇴 | Dominican Republic | |
| 🇪🇨 | Ecuador | 🇬🇪 | Georgia | |
| 🇬🇹 | Guatemala | 🇭🇳 | Honduras | |
| 🇰🇿 | Kazakhstan | 🇲🇩 | Moldova | |
| 🇲🇪 | Montenegro | 🇳🇮 | Nicaragua | |
| 🇵🇦 | Panama | 🇵🇾 | Paraguay | |
| 🇸🇻 | El Salvador | 🇺🇾 | Uruguay | |
| 🇻🇪 | Venezuela |
Don't see your country? Open an issue and we'll add support as soon as possible.
Support
Open an issue on the Apify store page or contact @BenjaminFloresV — responses within one business day.
Made with ❤️ by the DataCach team.