Documentation Python quickstart Blog Free tools Enterprise solutions hello@quanticdata.ioLog in

SERP API · Google Maps

Google Maps places API

The places Google Maps shows for a search in an area, returned as JSON: name, rating, category, address, phone, website, opening hours, coordinates and the place id. This is the SERP API with search_type: "places" (or maps) and, for one place, place_details. No Maps Platform project, no billing account, pay per search.

A Google Maps places search for pizza restaurants around Brooklyn, NY: a map with pins and the first place card, then the real places[0] JSON with name, rating 4.7, category, open state and hours. The answer came from the plain page: $0.0009 per search, $0.002 when rendered.
Google Maps places as JSON: the real first result for pizza restaurants around Brooklyn, NY.

What you get

One place, one object.

Fields of each place
FieldWhat it holds
rank1-based position
nameBusiness name
ratingAverage rating
reviewsNumber of reviews when shown
categoryMain category ("Pizza restaurant")
addressAddress as shown
phonePhone number when shown
websiteWebsite when shown
hoursToday's hours as shown
gps_coordinatesLatitude and longitude
place_idGoogle place id
data_idFeature id, used for details and reviews
open_stateOpen or closed now

For one place, search_type: "place_details" with its place_id or data_id returns the full card in payload.place_results: plus code, weekly hours, attributes and a sample of user reviews. All its reviews come from the reviews vertical.

Example

One request, one JSON answer.

curl -X POST https://api.quanticdata.io/v1/scraper/serp \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"pizza restaurants","search_type":"places","location":"Brooklyn, NY","country":"us","num":10}'
cURL: pizza restaurants around Brooklyn
import requests

r = requests.post("https://api.quanticdata.io/v1/scraper/serp",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"query": "pizza restaurants", "search_type": "places", "location": "Brooklyn, NY", "country": "us", "num": 10})
for p in r.json()["payload"]["places"]:
    print(p["name"], p["rating"], p["phone"], p["address"])
Python: name, rating, phone and address of each place
{
  "rank": 1,
  "name": "Frank and Sal Italian Market Staten Island",
  "rating": 4.7,
  "category": "Italian grocery store",
  "address": "4060 Hylan Boulevard, Staten Island, New York 10308",
  "phone": "(718) 966-7400",
  "hours": "Friday: 8 AM–6 PM",
  "gps_coordinates": {
    "latitude": 40.540583999999996,
    "longitude": -74.147198
  },
  "place_id": "0x89c24a35537f404b:0x2ba28a40618be10b",
  "data_id": "0x89c24a35537f404b:0x2ba28a40618be10b",
  "open_state": "Closed · Opens 8 AM"
}
The first place of the real answer to this request, 30 October 2026 (long URLs shortened).

The answer is the usual envelope: payload.places holds the list above, payload.search_metadata says which tier answered and how long it took.

Parameters

What, around where, how many.

Request parameters for search_type: places / maps / place_details
ParameterMeaning
queryWhat you would type in Maps: "pizza restaurants", "dentist"
locationWhere to center the map ("Brooklyn, NY"); also uule as lat,lon
place_id, data_idFor place_details: the place to read
num, pageResults per call and the page to read
countryProxy exit and Google locale (gl), ISO code: us, gb, de, it…
langInterface language (hl): en, de, it…
devicedesktop (default), mobile, ios or android

Every parameter, for every vertical, is in the API reference.

Price

Per search, nothing monthly.

A successful search costs $0.0009 when Google's plain page answers and $0.002 when the rendered page is needed; search_metadata.path in the answer says which one you got. In our test on 30 October 2026 the call answered from the plain page in 2.95 seconds.

Failed searches are not charged. There is no subscription: a $2 free credit every month covers the first calls, then you top up your balance by card, PayPal or crypto.

If you would rather pay per place than per search, the Google Maps places collector returns the same data at $0.001 per delivered place (up to 300 per run), with no pagination to handle.

Every price per search and per vertical: SERP API pricing.

Official API or this one

The official Places API is a different product, with its own terms.

Google's official route is the Places API of Google Maps Platform: it needs a Cloud project with billing, is priced per request by the fields you ask for, and its terms limit how long you may store most place data.

This endpoint returns what Google Maps shows a person searching in that area, as JSON, billed per successful search. What you may do with the data depends on where you are and how you use it: is scraping Google Maps legal.

Use cases

What teams build with it.

Local lead lists: every business of a category in a city, with phone and website, as rows.

Store locators and market maps: competitors and their ratings by neighbourhood.

Local SEO audits: who ranks for a category in Maps, from the location you choose.

Before you call it

Questions developers ask

Is this the Google Places API?

No. The Places API is Google Maps Platform's official product, billed per request and field. This endpoint returns the places Google Maps shows for a search, as JSON, per successful search.

Can I get phone numbers and websites?

Yes, when Google shows them on the place card: phone and website are in each result.

How do I get every review of a place?

Take its data_id from this result and call the reviews vertical, which pages through the reviews.

How do I cover a whole city?

Run the same query with different locations (neighbourhoods or coordinates) and page through each; the place_id deduplicates.

Is scraping Google Maps legal?

The answer depends on the country and the use; we wrote it up here: is scraping Google Maps legal.

Start with the free credit.

Create an API key, run the example above and read the JSON. Pay per search after the $2 monthly credit, no subscription.