Places Insights overview

Places Insights lets you analyze the rich places and brands data in Google Maps to derive statistical insights from Google Maps' places or points-of-interest (POI) data. The data is deployed using BigQuery data exchange listings with data protections in place to enable a secure and protected environment for data sharing and analysis.

About places data

Google Maps curates places data for millions of establishments worldwide. Places Insights makes places data available in BigQuery so that you can derive aggregated insights about Google Maps' places data based on a variety of attributes such as place types, ratings, store hours, wheelchair accessibility, and more.

To use Places Insights you write SQL queries in BigQuery that returns statistical insights about places data. These insights let you answer questions such as:

  • How many similar businesses are operating near a potential new store location?
  • What kinds of businesses are most commonly found near my most successful stores?
  • What areas have a high concentration of complementary businesses that could attract my target customers?
  • How many 5 star sushi restaurants are open at 8pm in Madrid, have wheelchair accessible parking, and offer takeout?

The aggregation data can support a multitude of use cases such as:

  • Site selection to evaluate and choosing the most suitable locations for a new business or placement of a physical asset.
  • Location performance evaluation to determine what geospatial variables, such as proximity to certain types of POIs like supermarkets or event venues, affect positive or negative performance of your locations.
  • Geotargeted marketing to determine what types of marketing campaigns or advertisements will be successful in an area.
  • Sales forecasting to predict future sales at a prospective location.
  • Market research to inform what geographies to expand your business or service to next.

About brands data

Along with the places data, Places Insights includes data about brands, or stores that have multiple locations that operate under the same brand name.

You can use brands to answer questions such as:

  • What is the count of all stores by brand in an area?
  • What is the count of my top three competitor brands in the area?
  • What is the count of all of the coffee shops excluding these brands in this area?

About BigQuery

By making data available in BigQuery listings, Places Insights lets you:

  • Securely combine your data with Places Insights data.

  • Write flexible SQL queries to uncover aggregated insights for your specific business needs.

  • Use the same BigQuery tools that you are already using with your private data and workflows.

  • Harness the power of BigQuery's scale and performance so that you can analyze massive datasets with ease.

Example use case

This example joins your data with Places Insights data in BigQuery to derive aggregation information. For this example, you are a hotel owner in New York City, with multiple locations. You now want to join your hotel location data with Places Insights data to discover the concentration of predefined business types near your hotels.

Prerequisites

For this example, you subscribe to the Places Insights dataset for the United States.

Your hotel dataset is named mydata and defines the locations of your two hotels in New York City. The following SQL creates this dataset:

CREATE OR REPLACE TABLE `mydata.hotels` ( name STRING, location GEOGRAPHY );
INSERT INTO `mydata.hotels` VALUES( 'Hotel 1', ST_GEOGPOINT(-73.9933, 40.75866) );
INSERT INTO `mydata.hotels` VALUES( 'Hotel 2', ST_GEOGPOINT(-73.977713, 40.752124) );

Get the count of restaurants in the area

To give your customers an idea of the density of operational restaurants near your hotels, you write a SQL query to return the number of restaurants within 1000 meters of each hotel:

SELECT WITH AGGREGATION_THRESHOLD h.name, COUNT(*) AS count
FROM `PROJECT_NAME.places_insights___us___sample.places_sample` AS r, `mydata.hotels` AS h
WHERE
ST_DWITHIN(h.location, r.point, 1000)
AND r.primary_type = 'restaurant'
AND business_status = "OPERATIONAL"
GROUP BY 1

The following image shows an example output to this query:

Query results for counting restaurants within 1000 meters from each hotel.

Get the count of restaurants and bars in the area

Modify your query to include bars along with restaurants within 1000 meters of each hotel:

SELECT WITH AGGREGATION_THRESHOLD h.name, r.primary_type, COUNT(*) AS count
FROM `PROJECT_NAME.places_insights___us___sample.places_sample` AS r, `mydata.hotels` AS h
WHERE
ST_DWITHIN(h.location, r.point, 1000)
AND r.primary_type IN UNNEST(['restaurant','bar'])
AND business_status = "OPERATIONAL"
GROUP BY 1, 2

The following image shows an example output to this query:

Query results for counting restaurants and bars within 1000 meters from each hotel.

Get the count of moderately priced restaurants and bars in the area

You next want to know which customer demographic is served by the bars and restaurants. Because your hotels target a moderate price point, you only want to advertise the existence of nearby establishments that are at that price point and are well reviewed.

Restrict the query to only return bars and restaurants if they are at the PRICE_LEVEL_MODERATE price point, and rated 4 stars or above. This query also extends the radius to 1500 meters around each hotel:

SELECT WITH AGGREGATION_THRESHOLD h.name, r.primary_type, COUNT(*) AS count
FROM `PROJECT_NAME.places_insights___us___sample.places_sample` AS r, `mydata.hotels` AS h
WHERE
ST_DWITHIN(h.location, r.point, 1500)
AND r.primary_type IN UNNEST(['restaurant', 'bar'])
AND rating >= 4
AND business_status = "OPERATIONAL"
AND price_level = 'PRICE_LEVEL_MODERATE'
GROUP BY 1, 2

The following image shows an example output to this query:

Query results for moderately priced bars and restaurants within 1500 meters from each hotel.

What's next