Google Maps Data Scraper
Pricing
$30.00/month + usage
Google Maps Data Scraper
Scrape Google Maps business listings at scale — names, addresses, phones, websites, ratings, reviews, popular times, price, categories, coordinates & 48 fields. Search by keyword + location, paste Maps URLs, or look up a Place ID. Fast, browserless, no ~120-result limit.
Pricing
$30.00/month + usage
Rating
4.1
(31)
Developer
ВAH
Maintained by CommunityActor stats
72
Bookmarked
400
Total users
3
Monthly active users
4 days ago
Last modified
Categories
Share
Google Maps Data Scraper extracts business listings from Google Maps at scale — fast, without a browser, and with no ~120-results-per-search limit.
What does Google Maps Data Scraper do?
Google Maps Data Scraper collects detailed business and place data from Google Maps and returns it as structured JSON, CSV, or Excel. It works as an unofficial Google Maps API alternative: give it a search keyword + location (for example, restaurants in New York City), paste Google Maps URLs, or look up a specific place by its Google Place ID, and it returns up to 48 fields per place — name, full address, phone, website, rating, reviews breakdown, popular times, price, categories, coordinates, Place ID, and more.
It runs on direct HTTP requests (no headless browser), so it is fast and cheap to run, and it covers the whole target area instead of stopping at Google's usual ~120-results-per-search cap.
Why use Google Maps Data Scraper?
- 🗺️ Break the ~120-results limit — an adaptive area grid scans the whole city, so you get hundreds or thousands of places per search, not just the first ~120.
- 📍 Accurate to the city — results are filtered to the location's real boundary (polygon), so a search for "New York City" doesn't drift into neighboring New Jersey.
- 📊 48 data fields per place — contact details, ratings, reviews breakdown (when Google exposes it), popular times, price ranges, service options/amenities, photos, and more.
- ⚡ Fast & browserless — pure API-style requests, no Chromium, with concurrent enrichment.
- 🔍 Two ways to search — by keyword + location, or by pasting Google Maps URLs.
- 🌍 74 languages — choose the language of the returned data.
| Feature | This Actor | Typical alternatives |
|---|---|---|
| Coverage per search | Whole area (adaptive grid) | Often capped at ~120 |
| Method | Direct HTTP (no browser) | Browser-based (slower) |
| Location accuracy | City polygon — no spillover | Bounding box / drift |
| Fields per place | 48 | ~10–30 |
| Input | Keyword + location or Maps URLs | Varies |
| Languages | 74 | Varies |
Common use cases: building lead lists (with phone, website, and unclaimed-business flags), local market and competitor research, location analytics with popular times and ratings, and powering data-driven apps.
What data can you extract?
Each place returns the following fields (48 in total):
| Field | Type | Description |
|---|---|---|
title | string | Business name |
category / categories | string / array | Primary category and all categories |
claimed | boolean | Whether the business is claimed by its owner (unclaimed = a sales lead) |
rating / review_count | number | Average rating and number of reviews |
reviews_distribution | object | Count of reviews per star (1–5), when Google provides it (often empty — Google has largely moved this out of its public place data) |
price_range / price_breakdown | string / object | Price range and its breakdown |
full_address | string | Full formatted address |
neighborhood / street_address / city / zipcode / state / country | string | Address components |
latitude / longitude | number | Coordinates |
phone / phone_international | string | Phone (local format and E.164) |
website | string | Business website |
plus_code / plus_code_url | string | Google Plus Code |
place_id / cid / google_id | string | Google place identifiers |
about | object | Service options, highlights, accessibility, amenities, atmosphere, payments, etc. |
business_attributes | array | Owner attributes (e.g. "Identifies as women-owned") |
description | string | Short editorial description |
review_summary / review_tags | array / object | Highlighted review snippets and keyword tags with counts |
people_also_search_for | array | Related places |
open_time | array | Opening hours per day |
popular_times_monday … popular_times_sunday | object | Hourly busyness per day |
current_status / permanently_closed / temporarily_closed | string / boolean | Open/closed status |
photos_count / images | number / array | Photo count and image URLs |
How to scrape Google Maps
- Open the Actor on Apify Store and click Try for free.
- Enter search keywords (e.g.
restaurants,coffee shops) and a Location (e.g.New York City) — or paste Google Maps URLs, or a Place ID asplace_id:ChIJ.... - Set options (optional) — choose the Language and the max result pages (each page ≈ 20 places).
- Click Start — the Actor geocodes the location, scans the area, and collects each place's details.
- Download your data as JSON, CSV, Excel, or via the Apify API.
How much does it cost?
Apify usage is billed in compute units (memory × time). Because this Actor is browserless — it uses direct HTTP requests instead of a headless Chromium browser — it consumes far less compute than browser-based Google Maps scrapers, which keeps your cost per result low. You can Try it for free on the Apify free plan; see the Pricing section on this Actor's page for the current per-result price.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
keywords | array | ["restaurants"] | What to search for on Google Maps. Each keyword is searched separately. |
location | string | "New York City" | City/area to search within. Results stay inside its real boundary. |
urls | array | [] | Optional. Google Maps URLs — a search URL scrapes its results; a place URL or ?cid=... URL returns that one place. |
language | select | English (United States) | Language of the returned data (74 options). |
maxCrawlPages | integer | 10 | Max result pages (≈ 20 places each; 10 ≈ 200, 50 ≈ 1,000). Applies per keyword and per URL, not to the whole run (e.g. 3 keywords × 10 pages ≈ up to 600 places). |
Configure everything visually on the Input tab — no code required.
Output
Each result is one place. Example (real data, some arrays trimmed):
{"search_string": "restaurants","title": "Arepa Lady","category": "Colombian restaurant","categories": ["Colombian restaurant", "Restaurant"],"claimed": true,"rating": 4.6,"review_count": 1396,"reviews_distribution": { "1_star": 55, "2_star": 14, "3_star": 74, "4_star": 216, "5_star": 1037 },"price_range": "$20–30","price_range_votes": 23,"price_breakdown": { "$10–20": "30%", "$20–30": "48%", "$30–40": "7%" },"full_address": "Arepa Lady, 77-17 37th Ave, Jackson Heights, NY 11372","neighborhood": "Jackson Heights","street_address": "77-17 37th Ave","city": "Jackson Heights","zipcode": "11372","state": "New York","country": "US","latitude": 40.7494972,"longitude": -73.8882711,"phone": "(917) 745-1111","phone_international": "+19177451111","website": "https://www.thearepalady.com/","plus_code": "P4X6+QM Jackson Heights, Queens, NY","plus_code_url": "https://plus.codes/P4X6+QM Jackson Heights, Queens, NY","url": "https://www.google.com/maps/place/Arepa+Lady/data=...","google_id": "0x89c25fa9f985239f:0x862a2e490df0c1ee","cid": "9667590441405563374","place_id": "ChIJnyOF-alfwokR7sHwDUkuKoY","business_attributes": ["LGBTQ+ friendly"],"description": "Brick-&-mortar outpost of a popular food cart known for South American cornmeal cakes.","about": {"service_options": ["Has outdoor seating", "Offers delivery", "Offers takeout", "Serves dine-in"],"offerings": ["Serves alcohol", "Serves beer", "Serves coffee", "Serves vegan dishes"],"atmosphere": ["Casual", "Cozy", "Trendy"]// ... more groups: highlights, popular_for, accessibility, amenities, crowd, planning, payments, children, parking},"photos_count": 956,"images": ["https://lh3.googleusercontent.com/gps-cs-s/APNQkAG...","https://lh3.googleusercontent.com/gps-cs-s/APNQkAE..."// ... up to 20 image URLs],"review_summary": ["A great place to visit with tasty food, friendly staff, and affordable pricing.","The food was good, however the price is a bit high considering the serving size"],"review_tags": { "arepas": 125, "sweet corn arepa": 44, "cheese arepa": 42, "plantains": 23, "cash only": 19 },"people_also_search_for": [{ "Arepas Burger": { "rating": 4.4, "rating_counts": 1137, "url": "https://www.google.com/maps/place/Arepas+Burger/data=..." } }],"current_status": "Open · Closes 10 PM","permanently_closed": false,"temporarily_closed": false,"open_time": [ { "Monday": "12–10 PM" }, { "Tuesday": "12–10 PM" } /* ... through Sunday */ ],"popular_times_monday": { "12 PM": "27% busy", "5 PM": "73% busy", "6 PM": "73% busy" /* ... hourly */ }// popular_times_tuesday … popular_times_sunday have the same hourly shape}
Fields that don't apply to a given place come back empty (e.g. popular_times_* is empty for places without busyness data, price_range is empty for places with no price info, and reviews_distribution is empty for most places — Google has largely stopped exposing the per-star breakdown in its public place data, so it is returned on a best-effort basis only).
Tips
- Use a specific location. A city (e.g.
New York City) gives accurate, well-bounded results; a broad region (e.g.United States) is too large to cover well. - Tune
maxCrawlPagesto your needs. It applies per keyword and per URL (≈ value × 20 places each), not to the whole run. Start small to preview, then raise it for full coverage — higher values take longer and cost more. - Keywords vs URLs. Use keyword + location for area sweeps; use Maps URLs to target a specific view you already have.
- Result counts vary slightly between runs — Google returns slightly different sets depending on the request, which is normal; the data for any given place stays consistent.
- Schedule & integrate. Run it on a schedule and push results to Google Sheets, S3, webhooks, or your database via Apify integrations.
FAQ and support
How many results can I get per search?
As many as the area contains, up to your maxCrawlPages cap. The adaptive grid scans the whole location, so you are not limited to Google's usual ~120 results per single search.
Can I scrape a specific place or a Maps URL?
Yes. Paste Google Maps URLs into the urls field:
- A search URL scrapes all its results — e.g.
https://www.google.com/maps/search/restaurants/@40.71,-74.00,12z. ThemaxCrawlPageslimit applies to each such URL on its own. - A single place's URL or a
?cid=...URL returns just that one place — e.g. a place URL orhttps://maps.google.com/?cid=1416786665941882505.
Can I look up a place by its Google Place ID?
Yes. Enter it in the keywords field with a place_id: prefix (the same ChIJ... ID you get from the Google Places API) and the Actor returns that exact place's full details — e.g. place_id:ChIJvx7i_BlawokRidb5WfdvqRM (this one opens Eataly in New York). You can look up any Place ID with Google's Place ID Finder.
Is scraping Google Maps legal?
Scraping publicly available data is generally legal, but how you use it matters — see the disclaimer below.
Related Actors
- Google Maps Store Review Scraper — collect full reviews for a store, including review text, author, rating, images, and direct review links.
GDPR and legal
Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
Support
Questions, issues, or need a custom feature? Reach out through the Actor's Issues tab on Apify and we'll help.