Skip to content

Places · GET /v1/places/{place}

Places

Look up one place we've saved, by any id or Maps link you have for it, and see what each field of a place means.

Look up a place

Put the place at the end of the URL. Any of these works:

  • our id for it, from any answer;
  • Google's cid, a string of digits. Its dataId works too, because the cid is inside it;
  • Google's place ID, such as ChIJ…;
  • a Google Maps link to the place. Open the place in Maps and copy the whole link from the address bar.

Encode a link before you put it in the URL, with encodeURIComponent for example. The SDK does that for you. A lookup is free:

curl https://api.gmaps.dev/v1/places/12345678901234567890 \
  -H "Authorization: Bearer $GMAPS_API_KEY"

A short link, such as one from maps.app.goo.gl, hides the place until it's opened, so it's refused with 400 VALIDATION_ERROR: open it in a browser and send the full link. A link to a search or a map area, rather than one place, is refused the same way.

Only places we've saved

A lookup never searches. It reads the places we've saved, and those come from searches and collections, by you or by anyone else.

When we haven't saved a place, the answer is 404 PLACE_NOT_FOUND. That doesn't mean the place doesn't exist. To bring it in, search the area it's in with a word that describes it, such as its category. Once the new places arrive, look it up again.

Looking up a business that asked to be left out gets the same answer, and it stays out. Data and privacy explains how that works.

A lookup doesn't refresh a place either. meta.scrapedAt says when we last collected it. We collect it again when someone searches its area after our last search there has expired. Coverage says how long that takes.

Keep the cid a string

Google's cids are too long for a JavaScript number, and for many other languages and spreadsheets. Read as a number, a cid loses its last digits and points to another place, or to none:

Number("12345678901234567890"); // 12345678901234567000

So we always send it as a string. Keep it that way: store it in a text column, and import it into a spreadsheet as text.

What a place holds

Every answer with places in it uses this same shape: a search, a collection's places and a lookup. This is a whole place:

{
  "id": "5b0c8e0a-2f4d-4c1e-9a57-3d2b8f6e1c90",
  "identity": {
    "cid": "12345678901234567890",
    "placeId": "ChIJmadeUpPlaceIdForTheDocs",
    "dataId": "0x94dce35aa0000001:0xab54a98ceb1f0ad2",
    "name": "Padaria Estrela do Centro",
    "category": "Padaria",
    "mapsUrl": "https://maps.google.com/?cid=12345678901234567890",
    "description": "Pães de fermentação natural e café coado.",
    "status": null
  },
  "contact": {
    "phones": ["+55 41 0000-0000"],
    "website": "https://example.com"
  },
  "location": {
    "address": "R. Exemplo, 100 - Centro, Curitiba - PR, 80000-000",
    "completeAddress": {
      "borough": "Centro",
      "street": "R. Exemplo, 100",
      "city": "Curitiba",
      "postalCode": "80000-000",
      "state": "PR",
      "country": "BR"
    },
    "city": "Curitiba",
    "state": "PR",
    "country": "BR",
    "lat": -25.4296,
    "lng": -49.2713,
    "plusCode": "3QHH+5F Curitiba"
  },
  "ratings": {
    "rating": 4.6,
    "reviewCount": 212,
    "reviewsPerRating": { "1": 4, "2": 3, "3": 11, "4": 38, "5": 156 }
  },
  "hours": {
    "timezone": "America/Sao_Paulo",
    "openHours": {
      "segunda-feira": ["7:00–19:00"],
      "sábado": ["7:00–13:00"]
    },
    "popularTimes": { "segunda-feira": { "7": 35, "8": 60, "18": 80 } }
  },
  "commerce": {
    "priceRange": "R$ 20–40",
    "about": [
      {
        "id": "accessibility",
        "name": "Acessibilidade",
        "options": [
          {
            "name": "Entrada acessível para cadeirantes",
            "enabled": true
          }
        ]
      }
    ],
    "creditCardsAccepted": [],
    "menu": null,
    "orderOnline": [
      { "link": "https://example.com/pedidos", "source": "example.com" }
    ],
    "reservations": []
  },
  "meta": {
    "scrapedAt": "2026-09-18T09:41:37.000Z",
    "firstSeenAt": "2026-03-02T15:20:04.000Z",
    "cached": true
  }
}

A field is null, or an empty list, when we don't have it. Names, categories and hours are in the language of the last search that collected the place, which may not be the one you asked for. A place never carries review text, reviewer names or photos.

identity: which place it is

FieldWhat it holds
idOur id for the place. It never changes.
cidGoogle's id for the place, always a string.
placeIdGoogle's place ID.
dataIdAnother Google id for the place, with the cid inside it.
nameThe business's name.
categoryWhat the business says it is, in the search language: Bakery, Padaria.
mapsUrlA link to the place on Google Maps.
descriptionThe listing's own short description.
statusWhat the listing said about the place when we collected it: Permanently closed, Fechado permanentemente.

contact: how to reach it

FieldWhat it holds
phonesIts phone numbers, as the listing shows them.
websiteIts website.
emailsEmail addresses we found for it. This field comes only to accounts that have a plan with emails and have accepted the acceptable use policy. For everyone else it isn't there at all. If an account that can read emails gets no emails, we have no address for the place. Emails has more.

location: where it is

FieldWhat it holds
addressThe address on one line, as the listing writes it.
completeAddressThe same address in parts: street, borough, city, postalCode, state and country. Any part can be null.
city, state, countryIts city, state and country.
lat, lngWhere it is on the map, in degrees. Both are numbers, or both are null.
plusCodeIts plus code: a short code for that spot on the map.

ratings: how people rate it

FieldWhat it holds
ratingThe average rating, from 0 to 5. null when nobody has rated it.
reviewCountHow many reviews it has.
reviewsPerRatingHow many reviews gave each number of stars. A star count the listing leaves out is missing here too.

hours: when it's open

FieldWhat it holds
timezoneIts time zone, such as America/Sao_Paulo.
openHoursEach day and the hours it's open, written the way the listing writes them.
popularTimesHow busy it usually is. For each day, each hour from 0 to 23 gets a number from 0 to 100, where 100 is its busiest.

commerce: what it offers

FieldWhat it holds
priceRangeHow pricey it is, as the listing shows it, such as R$ 20–40.
aboutWhat the place says about itself, in groups such as accessibility. Each option has a name, whether it's enabled, and sometimes values.
creditCardsAcceptedThe cards it takes.
menuA link to its menu, and who offers it.
orderOnlineLinks to order online, each with who offers it, such as a delivery app.
reservationsLinks to book, each with who offers it.

meta: our record of it

FieldWhat it holds
scrapedAtWhen we last collected it.
firstSeenAtWhen we first saved it.
cachedtrue when it came from what we'd saved, so it cost nothing. A lookup always says true.