Google Maps Scraper - Every Place, Not Just the Top 250
Pricing
from $4.29 / 1,000 places
Google Maps Scraper - Every Place, Not Just the Top 250
Extract every place from Google Maps with 40+ fields: ratings, phone, website, opening hours, popular times, amenities, photos, reviews. Full coverage past Google's 250-per-view cap, hundreds of places per minute. $4.99 per 1,000 places.
Pricing
from $4.29 / 1,000 places
Rating
0.0
(0)
Developer
Zen Studio
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
16 hours ago
Last modified
Categories
Share
Google Maps Scraper | Contacts, Reviews, Photos & Popular Times (2026)

40+ fields on every place — not just the top 250 Google shows you — full address, phone, opening hours, hour-by-hour popular times, amenities, reservation links, photos, and reviews, at hundreds of places per minute. The richest Google Maps output on Apify.
| Zen Studio Maps Suite • Places, reviews, and routes across every major map provider | ||||
|
➤ You are here |
Routes, ETA, steps |
Phones, ratings, hours |
Leads, reviews, API |
Phones, emails, reviews |
Key Features
- 40+ fields per place — every result is auto-enriched with the full detail page. No toggles, no opt-ins.
- Goes past the 250-per-view ceiling — get every restaurant in Manhattan, not just the top 200 you'd see in the Maps UI.
- Fast at scale — hundreds of places per minute; a dense 1,500-place city finishes in minutes.
- Hour-by-hour popular times — 7 days × 24 hours of busyness data per place. Few scrapers capture this.
- Free tier — 100 lifetime results to evaluate. No credit card required.
Copy to your AI assistant
zen-studio/google-maps-scraper on Apify. Google Maps search with 40+ fields per place including hour-by-hour popular times, amenities, and reservation links. Call ApifyClient("TOKEN").actor("zen-studio/google-maps-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Provide searchStringsArray+locationQuery, OR startUrls, OR placeIds. Full spec: GET https://api.apify.com/v2/acts/zen-studio~google-maps-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations
How to Scrape Google Maps Data
Basic — search a city
{"searchStringsArray": ["restaurants"],"locationQuery": "Astoria, NY","maxCrawledPlacesPerSearch": 50}
Every place in a dense city — go past the 250-per-view ceiling
{"searchStringsArray": ["restaurants"],"locationQuery": "Manhattan, NY","maxCrawledPlacesPerSearch": 1500}
Scrape specific places by URL or ID — no search needed
{"placeIds": ["ChIJlxDiXJxZwokRp4HHbeYqXXU"],"startUrls": [{"url": "https://www.google.com/maps/place/Veselka/..."}],"maxReviews": 20,"maxImages": 10}
Bulk lead-gen — trim heavy fields to keep your export small
{"searchStringsArray": ["dentist"],"locationQuery": "Chicago, IL","maxCrawledPlacesPerSearch": 500,"websiteFilter": "with_website","excludeFields": ["popularTimes","amenities","relatedPlaces","reviewTeasers"]}
What Data Can You Extract from Google Maps?
Every place includes:
- Identity — name, place ID, hex ID, feature ID, Google Maps URL, verified owner
- Address — full address, street, locality, country, Plus Code (compound + global)
- Geo — latitude, longitude, neighborhood, city label, country code, timezone, region hierarchy (continent → district)
- Contact — phone, website, menu URL
- Categories — human-readable list, primary category, machine-readable GCID slugs, entity type
- Ratings & price — rating, reviews count, price range, price label
- Hours — full opening hours (Mon–Sun), hour-by-hour popular times (busyness 0–100, wait labels)
- Rich content — description, meta description, typical visit length, amenities (14 sections)
- Photos — hero photo with native size + total photo count, photo tab catalog (All / Latest / Menu / Vibe / dish tabs), Street View thumbnail
- Reviews — featured snippets, review keyword pills with sentiment counts, optional full reviews (review ID, rating, date, text, language, source, photos, author)
- Discovery — "people also search for" related places, immersive 360° media, walking-time travel markers (15 / 30 min landmarks)
- Reservations — booking links, partner provider blocks (Resy, OpenTable, etc.)
- Photos / videos (optional add-on) — photo URL, photo ID, width, height, upload date, source, tab tags; video MP4 + HLS + DASH streams
- Vertical-specific — hotel editorial + amenities + check-in policies; fuel prices for gas stations; directory of sub-tenants for malls / plazas
Output Example
{"name": "Veselka","address": "Veselka, 144 2nd Ave, New York, NY 10003","addressFormatted": "144 2nd Ave, New York, NY 10003","addressComponents": {"street": "144 2nd Ave","locality": "New York, NY 10003","country": null},"placeId": "ChIJlxDiXJxZwokRp4HHbeYqXXU","hexId": "0x89c2599c5ce21097:0x755d2ae66dc781a7","ftid": "/m/080lxnb","rating": 4.6,"reviewsCount": 7750,"priceRange": "$20–30","priceLabel": "$20 to $30","latitude": 40.729015499999996,"longitude": -73.9871139,"plusCode": {"compound": "P2H7+J5 New York","global": "87G8P2H7+J5"},"phone": "(212) 228-9682","website": "https://www.veselka.com/","categories": ["Ukrainian restaurant","Breakfast restaurant","Diner","... +6 more"],"primaryCategory": {"id": 8,"slug": "restaurants"},"categoryGcids": [{"gcid": "ukrainian_restaurant","label": "Ukrainian"},"... +8 more"],"entityType": "restaurant","shortDescription": "Neighborhood diner serving Ukrainian food","neighborhood": "Manhattan","cityLabel": "New York, NY","countryCode": "US","timezone": "America/New_York","openingHours": {"Tuesday": "9 AM–12 AM","Wednesday": "9 AM–12 AM","Thursday": "9 AM–12 AM","Friday": "Open 24 hours","Saturday": "Open 24 hours","Sunday": "12 AM–11 PM","Monday": "9 AM–12 AM"},"popularTimes": [{"day": "Monday","hours": [{"hour": 6,"busyness": 0,"label": "","waitLabel": null,"hourLabel": "6 AM"},"... +17 more hours"]},"... +6 more days"],"reviewTeasers": [{"text": "Great food, be patient for the service, friendly staff and manhattan prices.","authorProfile": "https://www.google.com/maps/contrib/113747744811747445251?hl=en-US","authorPhoto": "https://lh3.googleusercontent.com/a-/ALV-UjXwTAyNn0cWu2...0-k-cc-rp-mo","rating": 2,"reviewId": null},"... +2 more"],"bookingLinks": ["https://resy.com/cities/new-york-ny/venues/veselka-east...o7osBw%3D%3D"],"bookingPartners": [{"type": "Reserve a table","provider": "Resy","providerDomain": "resy.com","providerLogo": "https://lh3.googleusercontent.com/xfq6Nz4LO_41wDTfcL4N0...bPCLTVx5YhyQ","url": "https://resy.com/cities/new-york-ny/venues/veselka-east...o7osBw%3D%3D"},"... +1 more"],"relatedPlaces": [{"name": "Ukrainian East Village Restaurant","hexId": "0x0:0x368f0888d6eac978","rating": 4.3,"reviewsCount": 867,"latitude": 40.728891499999996,"longitude": -73.9870955,"categories": ["Ukrainian","Family-friendly"]},"... +4 more"],"streetViewThumb": "https://lh3.googleusercontent.com/-560plyIzZdo/AAAAAAAA...nd/photo.jpg","googleMapsUrl": "https://www.google.com/maps/preview/place/Veselka,+144+...2ae66dc781a7","permanentlyClosed": false,"_source": "place_detail","_query": "Veselka","_searchLocation": "East Village, Manhattan Community Board 3, Manhattan, New York County, New York, 10003, United States","menuUrl": "https://veselka.com/blogs/menu-list/main-location-specials","description": "Borscht and pierogi are menu highlights at this lively Ukrainian eatery with a rustic vibe and murals on the walls. ","metaDescription": "EST. 1954\nFor seventy years, customers have crowded into Veselka, a cozy Ukrainian coffee shop in New York City's East Village, to enjoy pie...","popularSpendTime": "People typically spend 45 min to 2 hr here","amenities": {"Service options": ["Outdoor seating","Delivery","Onsite services","Takeout","Dine-in"],"Highlights": ["Fast service","Great beer selection","Great coffee","Great dessert","Serves local specialty"],"... +12 more sections": "..."},"reviewPills": [{"label": "pierogis","topicId": "AA1Y4fAHawc","count": 1105,"secondaryCount": 413,"positiveCount": 756,"neutralCount": 51,"negativeCount": 15,"fusedTopicId": "ZnVzZWRfdG9waWNfaWQ6QUExWTRmQUhhd2M="},"... +9 more"],"verifiedOwner": {"name": "Veselka (Owner)","ownerId": "101183567786896189438"},"regionHierarchy": [{"name": "Americas","weight": 0.75},"... +13 more"],"heroPhoto": {"url": "https://lh3.googleusercontent.com/gps-cs-s/APNQkAHz8kIM...0-ro-0-fo100","photoId": "CIHM0ogKEICAgICEhd6u3AE","nativeWidth": 5472,"nativeHeight": 2736,"caption": null,"photoCount": 7054},"photoTabs": [{"name": "All","token": "CgIgAQ==","previewPhotoCount": 1,"previewPhotos": ["https://lh3.googleusercontent.com/gps-cs-s/APNQkAFIXM6Z...97-h298-k-no"]},"... +15 more"],"travelTimeMarkers": [{"durationSeconds": 900,"label": "15 min","latitude": 40.729131599999995,"longitude": -73.98729519999999},"... +8 more"],"immersiveView": [{"url": "https://lh3.googleusercontent.com/iv/ADz_H0rYNOMvIqGB_g...zc=w406-h200","type": "immersive_view"}],"reviews": [{"reviewId": "Ci9DQUlRQUNvZENodHljRjlvT2pWQ1gyUkNaRlJNTkVoNmFqZzNSR2xCVGkxcVkxRRAB","rating": 5,"date": "13 hours ago","publishedAtMicros": 1779752635529611,"editedAtMicros": null,"text": null,"language": null,"source": "Google","photos": null,"author": "A VarZamCa","authorPhoto": "https://lh3.googleusercontent.com/a-/ALV-UjVeTBBVX6JSmn...o-ba12-br100","authorProfile": "https://www.google.com/maps/contrib/1164356328752887798...eviews?hl=en","reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!...%7C%7C?hl=en"},"... +1 more"],"images": [{"url": "https://lh3.googleusercontent.com/gps-cs-s/APNQkAHz8kIM...0-ro-0-fo100","mediaType": "image","source": "embedded","tags": []},"... +1 more"]}
Advanced Usage
Search a structured area instead of free text
{"searchStringsArray": ["bakeries"],"city": "Brooklyn","state": "NY","postalCode": "","countryCode": "us"}
Combine city + state for US/AU/IN/BR/MX/DE. Use postalCode + countryCode alone (never with city — they conflict in the geocoder).
Custom polygon — only this neighborhood
{"searchStringsArray": ["pizza"],"customGeolocation": {"type": "Polygon","coordinates": [[[-73.99, 40.72],[-73.96, 40.72],[-73.96, 40.74],[-73.99, 40.74],[-73.99, 40.72]]]}}
Coordinate order is [longitude, latitude]. customGeolocation overrides every other location field.
Filtered hospitality dataset with reviews and photos
{"searchStringsArray": ["hotel"],"locationQuery": "Miami Beach, FL","maxCrawledPlacesPerSearch": 200,"placeMinimumStars": "4.0","openNow": false,"maxReviews": 30,"reviewsSort": "newest","reviewsFilterString": "breakfast","maxImages": 20}
reviewsFilterString over-fetches and filters by substring (case-insensitive). Useful when you want the 30 most recent reviews mentioning a specific term.
Narrow by category and price
{"searchStringsArray": ["restaurants"],"locationQuery": "New York, NY","categoryFilterWord": "chinese_restaurant","priceMin": 20,"priceMax": 60}
categoryFilterWord takes a Google category slug. Common ones: chinese_restaurant, coffee_shop, hotel, plumber, dentist. Full list of 4,400+ slugs: category reference. priceMin/priceMax set a per-person dining band in the country's local currency (restaurants only).
Multilingual run
{"searchStringsArray": ["Café"],"locationQuery": "Paris, France","language": "fr","countryCode": "fr","maxCrawledPlacesPerSearch": 100}
language affects category labels and review text preferences. countryCode biases search results geographically.
Pricing — Pay Per Event (PPE)
$4.99 per 1,000 places (every place is auto-enriched with the full detail page — no separate enrichment fee). Subscription plans get a lower per-place rate.
| Event | Per call | Per 1,000 |
|---|---|---|
| Place scraped (40+ fields) | $0.00499 | $4.99 |
| Review scraped | $0.00050 | $0.50 |
| Photo / video scraped | $0.00050 | $0.50 |
Free tier: 100 lifetime results, 10 results per run. No credit card required.
FAQ
How many places can I extract per run?
Up to your maxCrawledPlacesPerSearch cap per search term. The actor reliably returns 1,500+ places in dense cities (validated on Manhattan restaurants); sparse areas return the natural supply ceiling.
How do you get past Google's 250-per-view ceiling? For dense queries (every restaurant in Manhattan, every dentist in LA), the actor sweeps the search area systematically and deduplicates by place ID. You always get unique places, never the same place twice.
Is the data fresh? Every run hits Google Maps directly. No cached snapshots. Opening hours, reviews, photos — all live at run time.
My search returned the wrong Starbucks. How do I target a specific one?
Google has many places sharing a name. Use placeIds or a full Google Maps URL when you need a specific location. Free-text searches return whatever Google ranks first for that name + area.
Can I scrape reviews without scraping places first?
Use placeIds or startUrls with maxReviews > 0. The actor will fetch only those places (no search) and pull their reviews.
What languages and countries are supported? 15 display languages (English, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Japanese, Chinese (Simplified/Traditional), Korean, Arabic, Turkish, Russian) and 249 ISO country codes for geo-biasing.
What's the free tier? 100 lifetime results across all your runs, 10 results per run. No credit card required. Upgrade to a paid Apify plan to unlock unbounded runs.
Can I run this on a schedule? Yes — Apify schedules let you run this actor hourly, daily, or on cron. Pipe results into your own database via webhooks or pull from the dataset API.
More Zen Studio scrapers for maps & local data
Google Maps
Apple Maps
Yandex Maps Яндекс Карты
2GIS 2ГИС
Support
- Bugs: Issues tab
- Features: Issues tab
Legal Compliance
Extracts publicly available data. Users must comply with Google Maps terms of service and data protection regulations (GDPR, CCPA).
The richest Google Maps scraper on Apify — every place auto-enriched with 40+ fields, hour-by-hour popular times, amenities, and reservation links, hundreds per minute. Goes past Google's 250-per-view ceiling.