Google Maps Scraper Made Easy avatar

Google Maps Scraper Made Easy

Pricing

Pay per event

Go to Apify Store
Google Maps Scraper Made Easy

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

DataCach

Maintained by Community

Actor stats

0

Bookmarked

50

Total users

2

Monthly active users

4 days ago

Last modified

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:

FieldDescription
nameBusiness name
full_addressStreet address
phone_numberContact phone number
websiteBusiness website URL
ratingGoogle star rating (0–5)
reviews_countTotal number of reviews
categoriesBusiness categories (e.g. "Italian restaurant")
operational_hoursToday's opening hours
geoLatitude and longitude
photosArray of Google-hosted photo URLs
plus_codeGoogle Plus Code
price_per_personEstimated price range
tagsAmenities, atmosphere, service options, payment methods, etc.
social_linksFacebook, Instagram, TikTok, and other social profiles (optional)
third_party_servicesDelivery links: UberEats, Grubhub, DoorDash, etc. (optional)
place_id / cid / midGoogle Maps internal identifiers
google_frontpage_urlDirect Google Maps link for the place
extraction_datetimeUTC 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 ScraperGoogle Places API
API key requiredNoYes
CostPay-per-result (Apify)$17–$32 per 1,000 requests
Results per areaThousands (radius sampling)60 max per query
Social linksYes (optional)No
Delivery service linksYes (optional)No
Place photosYesYes (limited)
Setup timeMinutesHours (quota, billing, auth)

Input

FieldTypeRequiredDescription
search_termsarray<string>Keywords to search on Google Maps (e.g. ["restaurant", "coffee shop"]).
central_latitudestringLatitude of the center coordinate.
central_longitudestringLongitude of the center coordinate.
search_radius_in_kmintegerRadius in km around the center to cover.
number_of_pointsintegerNumber of random sampling points to generate inside the radius.
zoominteger (10–20)Google Maps zoom level. 15 recommended for city-level searches.
dispersion_factorstring (0.1–1.0)Point spread: 0.1 = tight cluster, 1.0 = wide scatter across full radius.
max_resultsintegerHard cap on total places to return. Actor stops when reached.
country_codestring (ISO-2)Restrict results to this country (e.g. "us", "de", "mx").
extract_social_linksbooleanVisit each place's Google social page to collect Facebook, Instagram, TikTok, etc.
extract_related_servicesbooleanCollect 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

  1. Open the actor page and click Try for free.
  2. Paste your JSON input (see example above).
  3. Click Start — results appear live in the Dataset tab.

From Python

from apify_client import ApifyClient
client = 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 + asyncio for 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_id deduplication 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

FlagCountryFlagCountry
🇺🇸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.