Google Maps Places Scraper
Pricing
from $1.00 / 1,000 results
Google Maps Places Scraper
Collect places from Google Maps searches: name, rating, review count, address, categories, coordinates, website, phone, opening hours and Maps link, one row per place. Search by term and location or paste a Maps search link. Failed searches are reported, not charged.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Features
Share
Turn any Google Maps search into a clean list of places. Type what you are looking for and where (for example "coffee shop" in "Austin, TX"), or paste a Google Maps search link, and every place in the results becomes one row: name, star rating and review count, full address with city, postal code and country, categories, coordinates, website, phone number, weekly opening hours and a link that opens the place on Google Maps.
Built for sales teams, local-SEO agencies, analysts and anyone who needs Google Maps business data (leads, competitors, locations) in a spreadsheet.
What sets it apart
- $1 per 1,000 places, plus $0.005 per run. Contact details, opening hours, coordinates and identifiers are included in that price; there are no add-on charges.
- Up to 500 places per search. Results are read well past the first 20, up to the cap you set, so one search can return a whole neighborhood's dentists or a city's coffee shops.
- No duplicates. A place that appears in several of your searches is returned, and charged, once.
- Radius mode. Give a centre and a radius in metres to keep only places inside the circle, each with its distance from the centre.
- Failed searches are reported, not charged. Each search's outcome is listed in the run summary.
Use cases
- Lead lists: local businesses by category and city, with website and phone.
- Market mapping: how many competitors sit in an area, and how they are rated.
- Location data: coordinates, addresses and opening hours for a set of places.
- Store locators and field sales: every branch of a chain or category inside a radius around a point, each with its distance from the centre.
- Monitoring: re-run the same searches to track ratings and review counts over time.
Quick start
Open the Actor in Console and press Start: the prefilled form searches "coffee shop" in "Austin, TX" and returns up to 40 places (about $0.045). An empty input ({}) returns a small sample of 10 places for that same search (about $0.015), marked usedExample: true in the run summary; an explicitly empty list still stops with an input error asking for a search term or Maps link.
{"searchQueries": ["coffee shop"],"location": "Austin, TX","maxPlacesPerSearch": 40,"maxPlaces": 100}
Several search terms run as separate searches in the same location. To search around an exact point instead, give latitude, longitude and a zoom level, or paste a Maps link such as https://www.google.com/maps/search/pizza/@40.7128,-74.0060,14z.
Radius search
Give lat, lng and a positive radiusMeters to bias the map viewport and keep only places inside the circle. latitude/longitude also work. Zoom is selected from the radius unless you explicitly set it. This applies to search links too. Rows include distanceMeters (straight-line distance from the centre); places without coordinates are dropped before caps and billing. Text-only searches are unchanged. Google ranks and limits results, so this is not an exhaustive census.
{"searchQueries": ["supermercado"],"lat": -12.1211,"lng": -77.0297,"radiusMeters": 1500,"language": "es","countryCode": "pe"}
Input
| Input | Type | Default | Meaning |
|---|---|---|---|
searchQueries | array | none | What to look for, as you would type it into Google Maps. Each term is one search. |
location | string | "" | Where to search (city, neighborhood or postal code). Added to every search term. |
searchUrls | array | none | Google Maps search links (google.com/maps/search/...), including ones with a map point. Each link is one search. |
maxPlacesPerSearch | integer | 40 | Stop each search after this many places. Google Maps lists up to a few hundred places per search. |
maxPlaces | integer | 100 | Total cap on place rows across all searches, after removing repeats. |
latitude, longitude | string | empty | Optional map point to center the searches on. Give both. |
lat, lng | number | empty | Numeric aliases for latitude/longitude; aliases must agree if both forms are provided. |
radiusMeters | number | empty | Positive radius in metres. Requires a centre; filters results and adds distanceMeters. |
zoom | integer | 14 | Zoom level for the map point, from 3 (continent) to 21 (building). |
language | string | en | Language for names, categories and opening hours (en, de, es, pt-BR, ...). |
countryCode | string | us | The region Google Maps should favor (us, gb, de, ...). |
proxyConfiguration | object | empty | Optional. Route requests through Apify Proxy or your own proxies; leave empty for the default connection. |
Example queries
{"searchQueries": ["dentist", "orthodontist"], "location": "Chicago, IL", "maxPlacesPerSearch": 100}{"searchQueries": ["Restaurant"], "location": "Berlin", "language": "de", "countryCode": "de"}{"searchQueries": ["hotel"], "latitude": "51.5072", "longitude": "-0.1276", "zoom": 13, "countryCode": "gb"}{"searchUrls": ["https://www.google.com/maps/search/pizza/@40.7128,-74.0060,14z"]}
What it returns
The dataset contains one row per place:
| Field | Meaning |
|---|---|
kind | place for every dataset row. |
placeId, cid, featureId | Google's identifiers for the place (place ID, customer ID and Maps feature ID). |
name | Place name. |
rating, reviewCount | Average star rating and number of reviews. |
priceLevel | Price level or range as Google shows it, when it shows one. |
categories, primaryCategory | Every category Google lists, and the first one. |
address | Full formatted address. |
street, neighborhood, city, postalCode, state, countryCode | Address parts. |
latitude, longitude, timezone | Location and local time zone. |
distanceMeters | Distance from the requested centre in metres (radius mode only). |
website | The place's website. |
phone, phoneInternational | Phone number in local and international format. |
openingHours | One entry per weekday with that day's hours, as shown for the current week. |
description | Short summary of the place, when Google has one. |
imageUrl | Main photo thumbnail. |
mapsUrl | Link that opens the place on Google Maps. |
searchQuery, searchUrl, rank | The search the row came from and the place's position in its results. |
scrapedAt | Collection time (UTC, ISO 8601). |
error | Always null in the dataset. Failed searches are reported in the run summary instead. |
The run summary (OUTPUT) reports places (rows delivered), one entry per search in searches with its place count, and any failed searches in searchErrors with a short code and message (for example RATE_LIMITED or NO_RESULTS).
Output example
{"kind": "place","placeId": "ChIJG-gJw2vKRIYROWi2uwOp8QE","cid": "140078896924485689","featureId": "0x8644ca6bc309e81b:0x1f1a903bbb66839","name": "Epoch Coffee","rating": 4.5,"reviewCount": 2538,"priceLevel": null,"categories": ["Coffee shop"],"primaryCategory": "Coffee shop","address": "221 W N Loop Blvd, Austin, TX 78751","street": "221 W N Loop Blvd","neighborhood": "North Loop","city": "Austin","postalCode": "78751","state": "Texas","countryCode": "US","latitude": 30.3186037,"longitude": -97.7245402,"timezone": "America/Chicago","website": "http://www.epochcoffee.com/","phone": "(512) 454-3762","phoneInternational": "+15124543762","openingHours": [{"day": "Monday","hours": "12 AM–11:30 PM"},{"day": "Tuesday","hours": "Open 24 hours"},{"day": "Wednesday","hours": "Open 24 hours"},{"day": "Thursday","hours": "Open 24 hours"},{"day": "Friday","hours": "Open 24 hours"},{"day": "Saturday","hours": "Open 24 hours"},{"day": "Sunday","hours": "Open 24 hours"}],"description": "Cool, vibrant small-chain cafe featuring nibbles, tea & carefully brewed espresso drinks.","imageUrl": "https://lh3.googleusercontent.com/grass-cs/AABkmLemmlApZqzw26-EYyEdrzH6YCtaCFcmgVA98rWVxjWxMZoqyvLjtYX0ouSvthwfZmrQX3hsGHHJrXPZcqDTNe-lmYbWofdrJGYiCUCjCKa79NjqGTD402iy2R6abf2BAOPGyB9z=w114-h86-k-no","mapsUrl": "https://www.google.com/maps/search/?api=1&query=Epoch+Coffee&query_place_id=ChIJG-gJw2vKRIYROWi2uwOp8QE","searchQuery": "coffee shop","searchUrl": "https://www.google.com/maps/search/coffee%20shop%20in%20Austin%2C%20TX?hl=en&gl=us","rank": 2,"scrapedAt": "2026-10-19T22:34:00Z","error": null}
Price
$0.001 per place delivered, plus $0.005 per run start. The run-start event is charged per GB of memory; the default 512 MB run is one start event. The start is charged even if the run saves no results. Failed searches are not charged, and a place found by two of your searches is charged once. Platform usage is included in these prices.
Worked costs: the 40-place prefill run is about $0.045; the default 100-place cap about $0.105; 1,000 places about $1.005; 10,000 places (the per-run maximum) about $10.005.
Scheduling and monitoring
Schedule the same searches daily or weekly to follow ratings, review counts, opening hours and new places in an area. Each run is a full snapshot; match rows across runs by placeId (or cid). There is no built-in "new places only" mode.
FAQ
How fresh is the data? Every run reads Google Maps at run time; nothing is cached between runs. scrapedAt records when each row was collected.
How many places can I get? Up to 500 per search (maxPlacesPerSearch) and 10,000 per run (maxPlaces). Google decides how many places a search lists, often a few hundred at most, so split large areas into several locations or map points.
Does it work outside the US? Yes. Set location (or a map point), and language and countryCode for local names, categories and hours.
Are emails or social profiles included? No. Rows carry the website and phone Google shows; emails are not on Google Maps.
Which export formats are available? JSON, CSV, Excel, XML or RSS from the dataset, or read the rows with the Apify API.
Good to know
- Reviews themselves (review text and authors) are not included;
ratingandreviewCountare. - Google Maps shows a limited set of details to visitors who are not signed in. Popular times, the full "About" tab and photo galleries are not part of the output.
- Opening hours are the hours Google shows for the current week, so holiday hours appear when Google lists them.
- A search that names one specific place (for example a business name and street address) returns just that place.
- If Google Maps is temporarily unavailable, the run reports any search it could not finish in
OUTPUT.searchErrors; places already collected are kept.