Google Maps Places Scraper avatar

Google Maps Places Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Google Maps Places Scraper

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

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

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.

Results are read well past the first 20 places, up to the cap you set, so one search can return a whole neighborhood's dentists, a city's coffee shops or every hotel near a map point. Places that appear in more than one of your searches are returned once.

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.
  • Monitoring: re-run the same searches to track ratings and review counts over time.

Quick Start

{
"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 (no proxy required)

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 (haversine 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

InputTypeDefaultMeaning
searchQueriesarray[]What to look for, as you would type it into Google Maps. Each term is one search.
locationstring""Where to search (city, neighborhood or postal code). Added to every search term.
searchUrlsarray[]Google Maps search links (google.com/maps/search/...), including ones with a map point. Each link is one search.
maxPlacesPerSearchinteger40Stop each search after this many places. Google Maps lists up to a few hundred places per search.
maxPlacesinteger100Total cap on place rows across all searches, after removing repeats.
latitude, longitudestringemptyOptional map point to center the searches on. Give both.
lat, lngnumberemptyNumeric aliases for latitude/longitude; aliases must agree if both forms are provided.
radiusMetersnumberemptyPositive radius in metres. Requires a centre; filters results and adds distanceMeters.
zoominteger14Zoom level for the map point, from 3 (continent) to 21 (building).
languagestringenLanguage for names, categories and opening hours (en, de, es, pt-BR, ...).
countryCodestringusThe region Google Maps should favor (us, gb, de, ...).
proxyConfigurationobjectemptyOptional. 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:

FieldMeaning
kindplace for every dataset row.
placeId, cid, featureIdGoogle's identifiers for the place (place ID, customer ID and Maps feature ID).
namePlace name.
rating, reviewCountAverage star rating and number of reviews.
priceLevelPrice level or range as Google shows it, when it shows one.
categories, primaryCategoryEvery category Google lists, and the first one.
addressFull formatted address.
street, neighborhood, city, postalCode, state, countryCodeAddress parts.
latitude, longitude, timezoneLocation and local time zone.
distanceMetersDistance from the requested centre in metres (radius mode only).
websiteThe place's website.
phone, phoneInternationalPhone number in local and international format.
openingHoursOne entry per weekday with that day's hours, as shown for the current week.
descriptionShort summary of the place, when Google has one.
imageUrlMain photo thumbnail.
mapsUrlLink that opens the place on Google Maps.
searchQuery, searchUrl, rankThe search the row came from and the place's position in its results.
scrapedAtCollection time (UTC, ISO 8601).
errorAlways 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.

Good to know

  • Reviews themselves (review text and authors) are not included; rating and reviewCount are.
  • 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 temporarily limits requests, the run retries with growing pauses and reports any search it could not finish in OUTPUT.searchErrors; places already collected are kept.