Examples

This section covers a series of example requests to the Places Insights API.

Return places within a circle

Return all restaurants within a 200m radius of Trafalgar Square, London.

  • The search area is a circle centered on a specific latitude and longitude. The radius of this circle is 200 meters, which determines the size of the search area.
  • The place type requested is restaurant, and this is passed using includedTypes within typeFilters.
  • The count is requested using INSIGHTS_COUNT, and the place IDs are requested using INSIGHTS_PLACES.
curl --location 'https://areainsights.googleapis.com/v1:computeInsights' \
--header 'X-Goog-Api-Key: API_KEY' \
--header 'Content-Type: application/json' \
--data '{
  "insights": ["INSIGHT_COUNT", "INSIGHT_PLACES"],
  "filter": {
    "locationFilter": {
      "circle": {
        "latLng": { "latitude": 51.508, "longitude": -0.128},
        "radius": 200
      }
    },
    "typeFilter": { "includedTypes": "restaurant" }
  }
}'

Exclude place types

You can exclude place types from the count.

The following request is the same as the first example, but adds excludedTypes to the typeFilters. You can use either a string or an array of strings for the includedTypes and excludedTypes.

This example excludes two place types: cafe and bakery, from the restaurant count.

curl --location 'https://areainsights.googleapis.com/v1:computeInsights' \
--header 'X-Goog-Api-Key: API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "insights": ["INSIGHT_COUNT", "INSIGHT_PLACES"],
    "filter": {
        "locationFilter": {
            "circle": {
                "latLng": { "latitude": 51.508, "longitude": -0.128},
                "radius": 200
            }
        },
        "typeFilter": {
            "includedTypes": "restaurant",
            "excludedTypes": [
                "cafe",
                "bakery"
            ]
        }
    }
}'

Use primary type

This example modifies the request from the first example to include only places that have a primaryType of restaurant in the count.

curl --location 'https://areainsights.googleapis.com/v1:computeInsights' \
--header 'X-Goog-Api-Key: API_KEY' \
--header 'Content-Type: application/json' \
--data '{
  "insights": ["INSIGHT_COUNT", "INSIGHT_PLACES"],
  "filter": {
    "locationFilter": {
      "circle": {
        "latLng": { "latitude": 51.508, "longitude": -0.128},
        "radius": 200
      }
    },
    "typeFilter": { "includedPrimaryTypes": "restaurant" }
  }
}'

Custom polygon

This example demonstrates how to use a custom polygon to define your search area. Keep in mind that specifying INSIGHTS_PLACES restricts the search to areas small enough to return up to 100 place IDs. For larger areas, use INSIGHTS_COUNT to bypass this limitation so that the service won't need to return individual place IDs.

As before, the place type used is restaurant. This example also introduces three other filters:

  • operatingStatus: This example counts only operational places.
  • priceLevel: This example counts only inexpensive and moderately priced places.
  • ratingFilter: This example counts only places with a review score between 4.0 and 5.0.
curl --location 'https://areainsights.googleapis.com/v1:computeInsights' \
--header 'X-Goog-Api-Key: API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "insights": [ "INSIGHT_COUNT" ],
    "filter": {
        "locationFilter": {
            "customArea": {
                "polygon": {
                    "coordinates": [
                        { "latitude": 37.776, "longitude": -122.666 },
                        { "latitude": 37.130, "longitude": -121.898 },
                        { "latitude": 37.326, "longitude": -121.598 },
                        { "latitude": 37.912, "longitude": -122.247 },
                        { "latitude": 37.776, "longitude": -122.666 }
                    ]
                }
            }
        },
        "typeFilter": {
            "includedTypes": "restaurant"
        },
        "operatingStatus": [ "OPERATING_STATUS_OPERATIONAL" ],
        "priceLevels": [ "PRICE_LEVEL_INEXPENSIVE", "PRICE_LEVEL_MODERATE" ],
        "ratingFilter": { "minRating": 4.0, "maxRating": 5.0 }
    }
}'

Geographical area

This example uses a Geographical Area place ID to set the search area. These place IDs include the geometry of a place, such as a town or city. The place ID used here is ChIJiQHsW0m3j4ARm69rRkrUF3w, which corresponds to the city of Mountain View, California.

Passing the place ID to the Places Insights API sets the search area to the bounds of the geographic area. The place ID is passed using place, in the format places/place_ID.

You can obtain a Geographical Area place ID in any of the following ways:

curl --location 'https://areainsights.googleapis.com/v1:computeInsights' \
--header 'X-Goog-Api-Key: API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "insights": [
        "INSIGHT_COUNT"
    ],
    "filter": {
        "locationFilter": {
            "region": {
                "place": "places/ChIJiQHsW0m3j4ARm69rRkrUF3w"
            }
        },
        "typeFilter": {
            "includedTypes": [
                "restaurant"
            ]
        }
    }
}'