Examples

This section covers a series of example requests to the Places Aggregate 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 .

Rest

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" } 
 } 
 }' 
  

Python (gRPC)

 from 
  
 google.maps 
  
 import 
 areainsights_v1 
 from 
  
 google.maps.areainsights_v1.types 
  
 import 
 ( 
 ComputeInsightsRequest 
 , 
 Filter 
 , 
 LocationFilter 
 , 
 TypeFilter 
 , 
 Insight 
 ) 
 from 
  
 google.type 
  
 import 
 latlng_pb2 
 from 
  
 google.oauth2 
  
 import 
 service_account 
 def 
  
 get_area_insights 
 (): 
 # Initialize the client 
 credentials 
 = 
 service_account 
 . 
 Credentials 
 . 
 from_service_account_file 
 ( 
 ' path/to/service_account.json 
' 
 , 
 scopes 
 = 
 [ 
 'https://www.googleapis.com/auth/cloud-platform' 
 ] 
 ) 
 client 
 = 
 areainsights_v1 
 . 
 AreaInsightsClient 
 ( 
 credentials 
 = 
 credentials 
 ) 
 # Create location filter with circle 
 lat_lng 
 = 
 latlng_pb2 
 . 
 LatLng 
 ( 
 latitude 
 = 
 51.508 
 , 
 longitude 
 =- 
 0.128 
 ) 
 location_filter 
 = 
 LocationFilter 
 ( 
 circle 
 = 
 LocationFilter 
 . 
 Circle 
 ( 
 lat_lng 
 = 
 lat_lng 
 , 
 radius 
 = 
 200 
 ) 
 ) 
 # Create type filter 
 type_filter 
 = 
 TypeFilter 
 ( 
 included_types 
 = 
 [ 
 "restaurant" 
 ] 
 ) 
 # Create the main filter 
 filter 
 = 
 Filter 
 ( 
 location_filter 
 = 
 location_filter 
 , 
 type_filter 
 = 
 type_filter 
 ) 
 # Create the request 
 request 
 = 
 ComputeInsightsRequest 
 ( 
 insights 
 = 
 [ 
 Insight 
 . 
 INSIGHT_COUNT 
 , 
 Insight 
 . 
 INSIGHT_PLACES 
 ], 
 filter 
 = 
 filter 
 ) 
 try 
 : 
 # Make the request 
 response 
 = 
 client 
 . 
 compute_insights 
 ( 
 request 
 = 
 request 
 ) 
 # Print results 
 print 
 ( 
 f 
 "Total count: 
 { 
 response 
 . 
 count 
 } 
 " 
 ) 
 print 
 ( 
 " 
 \n 
 Places found:" 
 ) 
 for 
 place 
 in 
 response 
 . 
 place_insights 
 : 
 print 
 ( 
 f 
 "Place ID: 
 { 
 place 
 . 
 place 
 } 
 " 
 ) 
 except 
 Exception 
 as 
 e 
 : 
 print 
 ( 
 f 
 "Error occurred: 
 { 
 e 
 } 
 " 
 ) 
 if 
 __name__ 
 == 
 "__main__" 
 : 
 get_area_insights 
 () 

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.

Rest

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" 
 ] 
 } 
 } 
 }' 
  

Python (gRPC)

 from 
  
 google.maps 
  
 import 
 areainsights_v1 
 from 
  
 google.maps.areainsights_v1.types 
  
 import 
 ( 
 ComputeInsightsRequest 
 , 
 Filter 
 , 
 LocationFilter 
 , 
 TypeFilter 
 , 
 Insight 
 ) 
 from 
  
 google.type 
  
 import 
 latlng_pb2 
 from 
  
 google.oauth2 
  
 import 
 service_account 
 def 
  
 get_area_insights 
 (): 
 # Initialize the client with service account 
 credentials 
 = 
 service_account 
 . 
 Credentials 
 . 
 from_service_account_file 
 ( 
 ' path/to/service_account.json 
' 
 , 
 scopes 
 = 
 [ 
 'https://www.googleapis.com/auth/cloud-platform' 
 ] 
 ) 
 client 
 = 
 areainsights_v1 
 . 
 AreaInsightsClient 
 ( 
 credentials 
 = 
 credentials 
 ) 
 # Create location filter with circle 
 lat_lng 
 = 
 latlng_pb2 
 . 
 LatLng 
 ( 
 latitude 
 = 
 51.508 
 , 
 longitude 
 =- 
 0.128 
 ) 
 location_filter 
 = 
 LocationFilter 
 ( 
 circle 
 = 
 LocationFilter 
 . 
 Circle 
 ( 
 lat_lng 
 = 
 lat_lng 
 , 
 radius 
 = 
 200 
 ) 
 ) 
 # Create type filter with both included and excluded types 
 type_filter 
 = 
 TypeFilter 
 ( 
 included_types 
 = 
 [ 
 "restaurant" 
 ], 
 excluded_types 
 = 
 [ 
 "cafe" 
 , 
 "bakery" 
 ] 
 ) 
 # Create the main filter 
 filter 
 = 
 Filter 
 ( 
 location_filter 
 = 
 location_filter 
 , 
 type_filter 
 = 
 type_filter 
 ) 
 # Create the request 
 request 
 = 
 ComputeInsightsRequest 
 ( 
 insights 
 = 
 [ 
 Insight 
 . 
 INSIGHT_COUNT 
 , 
 Insight 
 . 
 INSIGHT_PLACES 
 ], 
 filter 
 = 
 filter 
 ) 
 try 
 : 
 # Make the request 
 response 
 = 
 client 
 . 
 compute_insights 
 ( 
 request 
 = 
 request 
 ) 
 # Print results 
 print 
 ( 
 f 
 "Total count: 
 { 
 response 
 . 
 count 
 } 
 " 
 ) 
 print 
 ( 
 " 
 \n 
 Places found:" 
 ) 
 for 
 place 
 in 
 response 
 . 
 place_insights 
 : 
 print 
 ( 
 f 
 "Place ID: 
 { 
 place 
 . 
 place 
 } 
 " 
 ) 
 except 
 Exception 
 as 
 e 
 : 
 print 
 ( 
 f 
 "Error occurred: 
 { 
 e 
 } 
 " 
 ) 
 if 
 __name__ 
 == 
 "__main__" 
 : 
 get_area_insights 
 () 

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.

Rest

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" } 
 } 
 }' 
  

Python (gRPC)

 from 
  
 google.maps 
  
 import 
 areainsights_v1 
 from 
  
 google.maps.areainsights_v1.types 
  
 import 
 ( 
 ComputeInsightsRequest 
 , 
 Filter 
 , 
 LocationFilter 
 , 
 TypeFilter 
 , 
 Insight 
 ) 
 from 
  
 google.type 
  
 import 
 latlng_pb2 
 from 
  
 google.oauth2 
  
 import 
 service_account 
 def 
  
 get_area_insights 
 (): 
 # Initialize the client with service account 
 credentials 
 = 
 service_account 
 . 
 Credentials 
 . 
 from_service_account_file 
 ( 
 ' path/to/service_account.json 
' 
 , 
 scopes 
 = 
 [ 
 'https://www.googleapis.com/auth/cloud-platform' 
 ] 
 ) 
 client 
 = 
 areainsights_v1 
 . 
 AreaInsightsClient 
 ( 
 credentials 
 = 
 credentials 
 ) 
 # Create location filter with circle 
 lat_lng 
 = 
 latlng_pb2 
 . 
 LatLng 
 ( 
 latitude 
 = 
 51.508 
 , 
 longitude 
 =- 
 0.128 
 ) 
 location_filter 
 = 
 LocationFilter 
 ( 
 circle 
 = 
 LocationFilter 
 . 
 Circle 
 ( 
 lat_lng 
 = 
 lat_lng 
 , 
 radius 
 = 
 200 
 ) 
 ) 
 # Create type filter with primary types 
 type_filter 
 = 
 TypeFilter 
 ( 
 included_primary_types 
 = 
 [ 
 "restaurant" 
 ] 
 ) 
 # Create the main filter 
 filter 
 = 
 Filter 
 ( 
 location_filter 
 = 
 location_filter 
 , 
 type_filter 
 = 
 type_filter 
 ) 
 # Create the request 
 request 
 = 
 ComputeInsightsRequest 
 ( 
 insights 
 = 
 [ 
 Insight 
 . 
 INSIGHT_COUNT 
 , 
 Insight 
 . 
 INSIGHT_PLACES 
 ], 
 filter 
 = 
 filter 
 ) 
 try 
 : 
 # Make the request 
 response 
 = 
 client 
 . 
 compute_insights 
 ( 
 request 
 = 
 request 
 ) 
 # Print results 
 print 
 ( 
 f 
 "Total count: 
 { 
 response 
 . 
 count 
 } 
 " 
 ) 
 print 
 ( 
 " 
 \n 
 Places found:" 
 ) 
 for 
 place 
 in 
 response 
 . 
 place_insights 
 : 
 print 
 ( 
 f 
 "Place ID: 
 { 
 place 
 . 
 place 
 } 
 " 
 ) 
 except 
 Exception 
 as 
 e 
 : 
 print 
 ( 
 f 
 "Error occurred: 
 { 
 e 
 } 
 " 
 ) 
 if 
 __name__ 
 == 
 "__main__" 
 : 
 get_area_insights 
 () 

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.

Rest

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 } 
 } 
 }' 
  

Python (gRPC)

 from 
  
 google.maps 
  
 import 
 areainsights_v1 
 from 
  
 google.maps.areainsights_v1.types 
  
 import 
 ( 
 ComputeInsightsRequest 
 , 
 Filter 
 , 
 LocationFilter 
 , 
 TypeFilter 
 , 
 Insight 
 , 
 RatingFilter 
 , 
 OperatingStatus 
 , 
 PriceLevel 
 ) 
 from 
  
 google.type 
  
 import 
 latlng_pb2 
 from 
  
 google.oauth2 
  
 import 
 service_account 
 def 
  
 get_area_insights 
 (): 
 # Initialize the client with service account 
 credentials 
 = 
 service_account 
 . 
 Credentials 
 . 
 from_service_account_file 
 ( 
 ' path/to/service_account.json 
' 
 , 
 scopes 
 = 
 [ 
 'https://www.googleapis.com/auth/cloud-platform' 
 ] 
 ) 
 client 
 = 
 areainsights_v1 
 . 
 AreaInsightsClient 
 ( 
 credentials 
 = 
 credentials 
 ) 
 # Create coordinates for the polygon 
 coordinates 
 = 
 [ 
 latlng_pb2 
 . 
 LatLng 
 ( 
 latitude 
 = 
 37.776 
 , 
 longitude 
 =- 
 122.666 
 ), 
 latlng_pb2 
 . 
 LatLng 
 ( 
 latitude 
 = 
 37.130 
 , 
 longitude 
 =- 
 121.898 
 ), 
 latlng_pb2 
 . 
 LatLng 
 ( 
 latitude 
 = 
 37.326 
 , 
 longitude 
 =- 
 121.598 
 ), 
 latlng_pb2 
 . 
 LatLng 
 ( 
 latitude 
 = 
 37.912 
 , 
 longitude 
 =- 
 122.247 
 ), 
 latlng_pb2 
 . 
 LatLng 
 ( 
 latitude 
 = 
 37.776 
 , 
 longitude 
 =- 
 122.666 
 ) 
 # Closing point 
 ] 
 # Create custom area with polygon using the nested structure 
 location_filter 
 = 
 LocationFilter 
 ( 
 custom_area 
 = 
 LocationFilter 
 . 
 CustomArea 
 ( 
 polygon 
 = 
 LocationFilter 
 . 
 CustomArea 
 . 
 Polygon 
 ( 
 coordinates 
 = 
 coordinates 
 ) 
 ) 
 ) 
 # Create type filter 
 type_filter 
 = 
 TypeFilter 
 ( 
 included_types 
 = 
 [ 
 "restaurant" 
 ] 
 ) 
 # Create rating filter 
 rating_filter 
 = 
 RatingFilter 
 ( 
 min_rating 
 = 
 4.0 
 , 
 max_rating 
 = 
 5.0 
 ) 
 # Create the main filter 
 filter 
 = 
 Filter 
 ( 
 location_filter 
 = 
 location_filter 
 , 
 type_filter 
 = 
 type_filter 
 , 
 operating_status 
 = 
 [ 
 OperatingStatus 
 . 
 OPERATING_STATUS_OPERATIONAL 
 ], 
 price_levels 
 = 
 [ 
 PriceLevel 
 . 
 PRICE_LEVEL_INEXPENSIVE 
 , 
 PriceLevel 
 . 
 PRICE_LEVEL_MODERATE 
 ], 
 rating_filter 
 = 
 rating_filter 
 ) 
 # Create the request 
 request 
 = 
 ComputeInsightsRequest 
 ( 
 insights 
 = 
 [ 
 Insight 
 . 
 INSIGHT_COUNT 
 ], 
 filter 
 = 
 filter 
 ) 
 try 
 : 
 # Make the request 
 response 
 = 
 client 
 . 
 compute_insights 
 ( 
 request 
 = 
 request 
 ) 
 # Print results 
 print 
 ( 
 f 
 "Total count: 
 { 
 response 
 . 
 count 
 } 
 " 
 ) 
 except 
 Exception 
 as 
 e 
 : 
 print 
 ( 
 f 
 "Error occurred: 
 { 
 e 
 } 
 " 
 ) 
 if 
 __name__ 
 == 
 "__main__" 
 : 
 get_area_insights 
 () 

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 Aggregate 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:

Rest

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" 
 ] 
 } 
 } 
 }' 
  

Python (gRPC)

 from 
  
 google.maps 
  
 import 
 areainsights_v1 
 from 
  
 google.maps.areainsights_v1.types 
  
 import 
 ( 
 ComputeInsightsRequest 
 , 
 Filter 
 , 
 LocationFilter 
 , 
 TypeFilter 
 , 
 Insight 
 ) 
 from 
  
 google.oauth2 
  
 import 
 service_account 
 def 
  
 get_area_insights 
 (): 
 # Initialize the client with service account 
 credentials 
 = 
 service_account 
 . 
 Credentials 
 . 
 from_service_account_file 
 ( 
 ' path/to/service_account.json 
' 
 , 
 scopes 
 = 
 [ 
 'https://www.googleapis.com/auth/cloud-platform' 
 ] 
 ) 
 client 
 = 
 areainsights_v1 
 . 
 AreaInsightsClient 
 ( 
 credentials 
 = 
 credentials 
 ) 
 # Create location filter with region 
 location_filter 
 = 
 LocationFilter 
 ( 
 region 
 = 
 LocationFilter 
 . 
 Region 
 ( 
 place 
 = 
 "places/ChIJiQHsW0m3j4ARm69rRkrUF3w" 
 ) 
 ) 
 # Create type filter 
 type_filter 
 = 
 TypeFilter 
 ( 
 included_types 
 = 
 [ 
 "restaurant" 
 ] 
 ) 
 # Create the main filter 
 filter 
 = 
 Filter 
 ( 
 location_filter 
 = 
 location_filter 
 , 
 type_filter 
 = 
 type_filter 
 ) 
 # Create the request 
 request 
 = 
 ComputeInsightsRequest 
 ( 
 insights 
 = 
 [ 
 Insight 
 . 
 INSIGHT_COUNT 
 ], 
 filter 
 = 
 filter 
 ) 
 try 
 : 
 # Make the request 
 response 
 = 
 client 
 . 
 compute_insights 
 ( 
 request 
 = 
 request 
 ) 
 # Print results 
 print 
 ( 
 f 
 "Total count: 
 { 
 response 
 . 
 count 
 } 
 " 
 ) 
 except 
 Exception 
 as 
 e 
 : 
 print 
 ( 
 f 
 "Error occurred: 
 { 
 e 
 } 
 " 
 ) 
 if 
 __name__ 
 == 
 "__main__" 
 : 
 get_area_insights 
 () 
Create a Mobile Website
View Site in Mobile | Classic
Share by: