Google Maps Places Scraper - Fast & Cheap
Pricing
from $1.00 / 1,000 place scrapeds
Google Maps Places Scraper - Fast & Cheap
Businesses and places from Google Maps for any search such as "restaurants in Madrid": name, category, full address, phone, website, rating, reviews count, opening hours and coordinates. Any language and country. No browser, no API key. $0.001 per place; new places flagged on scheduled runs.
Pricing
from $1.00 / 1,000 place scrapeds
Rating
0.0
(0)
Developer
Antonio del Olmo Tena
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
Get businesses and places from Google Maps for any search, as clean structured rows. Type the searches you would run in the Google Maps app, such as restaurants in Madrid or plumbers in Austin, TX, and the Actor returns one row per place with name, category, full address broken into parts, phone, website, rating, number of reviews, opening hours and coordinates. Any language and country. Schedule it and every run flags the places that are new since the previous one.
No browser, no proxies on your side, no Google API key and no quota: the Actor reads the same endpoint the Google Maps web app uses, so it is fast and cheap. You pay $0.001 per place returned.
What you get
One Dataset row per place:
name,category,categories,placeId,cid,url(the place on Google Maps).address,street,neighborhood,city,postalCode,countryCode,latitude,longitude,timezone.phoneandphoneInternational(E.164),website,domain.rating,reviewsCount,openingHours(day to hours text,Closedon closed days).search,query: where the row comes from.isNew:truewhen the place was not in the previous run of that query.
A query with no results returns no rows and is not charged. A query that cannot be read gives a single row with an error field, also free.
How to use it
- Open the Input tab.
- In Search queries type one per line, exactly as in Google Maps:
restaurants in Madrid,dentist Berlin Mitte,coworking near Lisbon. - Optionally set Location to add it to every query that does not mention one (
plumbersplusAustin, TXbecomesplumbers in Austin, TX), and Language and Country for Google's edition. - Set Max places per query (default 20, up to about 120, which is what Google Maps serves per search).
- Click Start. Read the rows in Output or export them as JSON, CSV or Excel.
- To monitor a market, schedule the Actor (daily or weekly). New places come with
isNew: true; connect a webhook or an email integration to be notified.
To get emails, social profiles, legal name or technologies for each place, pass the resulting Dataset to the companion Actor aolmo/google-maps-enrich.
Input
{"queries": ["restaurants in Madrid", "coffee shops in Madrid"],"language": "en","country": "es","maxPlaces": 60}
| Field | Description |
|---|---|
queries | Google Maps searches, one per line. Up to 50 per run. |
location | Optional. Appended to queries that do not mention it. |
language | Language code for names, categories and hours. Default en. |
country | Two-letter lowercase country code for Google's edition. Default us. |
maxPlaces | Per query, 1 to 120. Default 20. |
Output example
{"search": "https://www.google.com/maps/search/restaurants%20in%20Madrid/?hl=en&gl=es","query": "restaurants in Madrid","placeId": "ChIJH-mF4MkpQg0RkJ5ij2lfI04","cid": "0xd4229c9e085e91f:0x4e235f698f629e90","name": "D-Sunset Madrid","category": "Restaurant","categories": ["Restaurant", "Bar", "Brunch restaurant"],"address": "C. de Espoz y Mina, 14, Centro, 28012 Madrid, Spain","street": "C. de Espoz y Mina, 14","neighborhood": "Centro","city": "Madrid","postalCode": "28012","countryCode": "ES","latitude": 40.4156335,"longitude": -3.7023858,"rating": 4.9,"reviewsCount": 2160,"phone": "+34 636 35 58 08","phoneInternational": "+34636355808","website": "https://d-sunset.com/","domain": "d-sunset.com","openingHours": { "Monday": "8 AM–1 AM", "Tuesday": "8 AM–1 AM", "Sunday": "Closed" },"timezone": "Europe/Madrid","url": "https://www.google.com/maps/place/?q=place_id:ChIJH-mF4MkpQg0RkJ5ij2lfI04","isNew": false,"timestamp": "2026-10-04T19:00:00.000Z"}
Pricing
Pay per event, no subscription:
- Place scraped: $0.001 per place row. 1,000 places with phone, website, rating and hours cost $1.
- New place: $0.002 per place flagged as new in a scheduled run. Runs with nothing new only pay for the rows.
Queries that cannot be read or return nothing are free. Compare with typical Google Maps scrapers at $1.50 to $4 per 1,000 places.
Use it as an API
Run it from your code with the Apify API or client libraries:
curl -X POST "https://api.apify.com/v2/acts/aolmo~google-maps-places/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"queries": ["plumbers in Austin, TX"], "maxPlaces": 40}'
The response is the list of place rows. You can also call it from AI agents through the Apify MCP server.
FAQ
How many places can one query return? Google Maps serves up to about 120 per search. To cover a whole city, run several specific queries (by neighbourhood or category).
Does it include reviews text or photos? No: only the rating, the number of reviews and the business data above. Reviews and photos are planned as a separate Actor.
Why do some rows lack phone or website? Because the business has not published them on Google Maps; the row is still charged as a place.
Which languages and countries work? Any Google Maps edition: set language (en, es, fr, de, pt...) and country (us, gb, es, mx, br...).
Where is the data stored between runs? In a Key-Value Store of your account named micro-saas-state-google-maps-places, one key per query. Delete it to start fresh.