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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 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.
