Google Maps Scraper
Pricing
from $0.90 / 1,000 results
Google Maps Scraper
Scrape Google Maps business search results — name, type, rating, review count, address, phone, website.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
Elorm Dokosi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Google Maps Scraper (Apify Actor)
Scrapes Google Maps business search results — name, type, rating, review count, address, phone, and website.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
query | string | — | Required. What to search, e.g. "coffee shops" |
location | string | — | Where to search, e.g. "London". Combined as "<query> in <location>". Optional |
maxResults | integer | — | Max results to return. Leave empty to return all available |
scrapeContactDetails | boolean | false | Add emails + social profiles for each business (slower, more proxy data) |
scrapePlaceDetails | boolean | false | Add full hours, price, description, attributes, links & more for each business (slower, more proxy data) |
scrapeReviews | boolean | false | Add the top reviews (author, rating, time, text) for each business. Implies scrapePlaceDetails. Ignored when maxReviews is set |
maxReviews | integer | 0 | Page through and return up to N reviews per business. 0 = off. Much slower (browser-based); supersedes scrapeReviews |
proxyConfiguration | object | RESIDENTIAL | Proxy settings (residential recommended) |
Output
One dataset item per business:
{"business_name": "Monmouth Coffee Company","business_type": "Coffee shop","average_rating": "4.5","review_count": 3069,"address": "27 Monmouth St, London WC2H 9EU, United Kingdom","phone": "+44 20 7232 3010","website": "http://www.monmouthcoffee.co.uk/","latitude": 51.5055334,"longitude": -0.0914069,"place_id": "ChIJ94DTm1cDdkgRibmgxzXy2EQ","feature_id": "0x4876037c9bd380f7:0x44d8f235c7a0b989","google_maps_url": "https://www.google.com/maps/place/?q=place_id:ChIJ94DTm1cDdkgRibmgxzXy2EQ","opening_hours": { "Monday": "7:30 am–6 pm" }}
When scrapeContactDetails is enabled, each item also includes contact fields
(found from the business's website; null/empty when the site doesn't list them):
{"emails": ["info@prufrockcoffee.com"],"facebook": "https://www.facebook.com/Prufrockcoffee","instagram": "https://www.instagram.com/prufrockcoffee/","twitter": "https://twitter.com/PrufrockCoffee","linkedin": null,"youtube": null,"tiktok": null,"pinterest": null}
When scrapePlaceDetails is enabled, each item is filled out with everything
Google publishes for the place — full week hours, pricing, an editorial summary,
booking links, and the complete grouped attribute list. Any field Google doesn't
publish is simply omitted (e.g. price is absent for banks/museums, menu_url for
non-restaurants):
{"opening_hours": {"Monday": "11:30 AM–9:30 PM","Tuesday": "11:30 AM–9:30 PM","Wednesday": "11:30 AM–9:30 PM","Thursday": "11:30 AM–10:30 PM","Friday": "11:30 AM–10:30 PM","Saturday": "11:30 AM–10:30 PM","Sunday": "11:30 AM–9:30 PM"},"price_level": "$$$$","price_description": "Expensive","description": "High-end New American meals on 60th floor","plus_code": "PX5R+5C New York","timezone": "America/New_York","menu_url": "https://www.manhattarestaurant.com/restaurant-menu/","reservation_url": "https://www.opentable.com/restaurant/profile/1021741","order_url": "https://www.ubereats.com/store/...","attributes": {"Service options": ["Dine-in", "Delivery", "Outdoor seating"],"Accessibility": ["Wheelchair accessible entrance", "Wheelchair accessible restroom"],"Offerings": ["Alcohol", "Coffee", "Vegan options", "Vegetarian options"],"Dining options": ["Lunch", "Dinner", "Brunch", "Catering"],"Amenities": ["Bar onsite", "Restroom", "Wi-Fi", "Gender-neutral restroom"],"Atmosphere": ["Cozy", "Romantic", "Upscale"],"Crowd": ["Groups", "LGBTQ+ friendly", "Tourists"],"Planning": ["Accepts reservations", "Reservations required"],"Payments": ["Credit cards", "Debit cards", "NFC mobile payments"],"Children": ["Good for kids", "High chairs", "Kids' menu"],"Parking": ["Paid street parking"],"From the business": ["Identifies as women-owned"]}}
The attributes groups vary by place type (a museum has Highlights,
Crowd, Planning; a shop has Service options, Payments, Recycling, etc.).
When scrapeReviews is enabled (top reviews) or maxReviews is set (up
to N reviews), each item includes a reviews array:
{"reviews": [{"author": "Joe Hunt","author_review_count": 42,"rating": 5,"relative_time": "2 months ago","text": "The guest roast Lumen coffee from Colombia was amazing. Great service too.","profile_url": "https://www.google.com/maps/contrib/1234567890"}]}
Run locally
echo '{ "query": "coffee shops", "location": "London" }' \> storage/key_value_stores/default/INPUT.jsonapify run
Results land in storage/datasets/default/. (Add "maxResults": 40 to cap the
number of results; omit it to get everything.)
Deploy
apify loginapify push
Monetization (pay-per-event)
The actor emits pay-per-event charge events so the premium enrichments bill only when used. Configure prices for these event names under the actor's Monetization → Pay per event settings in the Apify Console:
| Event | Price (live) | Charged | When |
|---|---|---|---|
apify-default-dataset-item (primary) | $0.90 / 1,000 | per business returned | always (built-in, automatic) |
place-details | $2.50 / 1,000 | per business enriched | scrapePlaceDetails / scrapeReviews |
review | $2.00 / 1,000 | per review returned | scrapeReviews / maxReviews |
contact-details | $2.50 / 1,000 | per business enriched | scrapeContactDetails |
apify-actor-start | $0.00005 | per run | always (built-in) |
Pricing model is pay-per-event with platform usage included (the customer
pays only the event prices; compute + proxy are absorbed). The place-details,
review and contact-details events run a browser / crawl websites, so their
prices are set above raw proxy + compute cost.
The base per-result charge is Apify's built-in apify-default-dataset-item
event (billed automatically on dataset writes); the three custom events above
meter the premium enrichments on top. Charges are best-effort: until the
pay-per-event pricing is configured in the Console, the events are ignored and
runs are unaffected.
Notes
- Proxies recommended. The input defaults to the
RESIDENTIALApify Proxy group; keep it for best results. - Leave
maxResultsempty to return all available results; set it to cap the output.