Access FSQ OS Places
With Foursquare’s Open Source Places, you can access free data to accelerate geospatial innovation and insights. View the Places OS Data Schemas for a full list of available attributes.
Prerequisites
In order to access Foursquare's Open Source Places data, you will need the following:
- S3 paths:
- Places -
s3://fsq-os-places-us-east-1/release/dt=2024-12-03/places/parquet
- Categories -
s3://fsq-os-places-us-east-1/release/dt=2024-12-03/categories/parquet
- Places -
- AWS CLI or SDK’s to download the parquet files and use in your local environment
- If using DuckDb, please refer to the Using DuckDb section for instructions on how to create remote/local tables for use.
Additional Data Offerings
You can also access our OS Places data in the following locations:
Example Queries
The following are examples on how to query FSQ Open Source Places using Athena and Spark:
- Filter Categories by the parent level
- Filter out non-commercial venues
- Find open and recently active POI
Filter by Parent Level Category
WITH places_exploded_categories AS (
-- Unnest categories array
SELECT fsq_place_id,
cid as fsq_category_id
FROM places p
CROSS JOIN UNNEST(p.fsq_category_ids) AS t(cid)
),
distinct_places AS (
SELECT
DISTINCT(fsq_place_id) -- Get distinct ids to reduce duplicates from cross join
FROM places_exploded_categories p
JOIN categories c -- Join to categories to filter on Level 2 Category
ON p.fsq_category_id = c.category_id
WHERE c.level2_category_id = '4d4b7105d754a06374d81259' -- Restaurants
)
SELECT * FROM places
WHERE fsq_place_id IN (SELECT fsq_place_id FROM distinct_places)
WITH places_exploded_categories AS (
-- Unnest categories array
SELECT fsq_place_id,
name,
explode(fsq_category_ids) as fsq_category_id
FROM places
),
distinct_places AS (
SELECT
DISTINCT(fsq_place_id) -- Get distinct ids to reduce duplicates from explode function
FROM places_exploded_categories p
JOIN categories c -- Join to categories to filter on Level 2 Category
ON p.fsq_category_id = c.category_id
WHERE c.level2_category_id = '4d4b7105d754a06374d81259' -- Restaurants
)
SELECT * FROM places
WHERE fsq_place_id IN (SELECT fsq_place_id FROM distinct_places)
WITH places_exploded_categories AS (
-- Unnest categories array using UNNEST with ordinality
SELECT fsq_place_id,
UNNEST(fsq_category_ids) as fsq_category_id
FROM places
),
distinct_places AS (
SELECT
DISTINCT(fsq_place_id)
FROM places_exploded_categories p
JOIN categories c
ON p.fsq_category_id = c.category_id
WHERE c.level2_category_id = '4d4b7105d754a06374d81259'
)
SELECT * FROM places
WHERE fsq_place_id IN (SELECT fsq_place_id FROM distinct_places)
Filter out Non-Commercial Categories
SELECT * FROM places
WHERE arrays_overlap(fsq_category_ids, ARRAY['4bf58dd8d48988d1f0931735', -- Airport Gate
'62d587aeda6648532de2b88c', -- Beer Festival
'4bf58dd8d48988d12b951735', -- Bus Line
'52f2ab2ebcbc57f1066b8b3b', -- Christmas Market
'50aa9e094b90af0d42d5de0d', -- City
'5267e4d9e4b0ec79466e48c6', -- Conference
'5267e4d9e4b0ec79466e48c9', -- Convention
'530e33ccbcbc57f1066bbff7', -- Country
'5345731ebcbc57f1066c39b2', -- County
'63be6904847c3692a84b9bb7', -- Entertainment Event
'4d4b7105d754a06373d81259', -- Event
'5267e4d9e4b0ec79466e48c7', -- Festival
'4bf58dd8d48988d132951735', -- Hotel Pool
'52f2ab2ebcbc57f1066b8b4c', -- Intersection
'50aaa4314b90af0d42d5de10', -- Island
'58daa1558bbb0b01f18ec1fa', -- Line
'63be6904847c3692a84b9bb8', -- Marketplace
'4f2a23984b9023bd5841ed2c', -- Moving Target
'5267e4d9e4b0ec79466e48d1', -- Music Festival
'4f2a25ac4b909258e854f55f', -- Neighborhood
'5267e4d9e4b0ec79466e48c8', -- Other Event
'52741d85e4b0d5d1e3c6a6d9', -- Parade
'4bf58dd8d48988d1f7931735', -- Plane
'4f4531504b9074f6e4fb0102', -- Platform
'4cae28ecbf23941eb1190695', -- Polling Place
'4bf58dd8d48988d1f9931735', -- Road
'5bae9231bedf3950379f89c5', -- Sporting Event
'530e33ccbcbc57f1066bbff8', -- State
'530e33ccbcbc57f1066bbfe4', -- States and Municipalities
'52f2ab2ebcbc57f1066b8b54', -- Stoop Sale
'5267e4d8e4b0ec79466e48c5', -- Street Fair
'53e0feef498e5aac066fd8a9', -- Street Food Gathering
'4bf58dd8d48988d130951735', -- Taxi
'530e33ccbcbc57f1066bbff3', -- Town
'5bae9231bedf3950379f89c3', -- Trade Fair
'4bf58dd8d48988d12a951735', -- Train
'52e81612bcbc57f1066b7a24', -- Tree
'530e33ccbcbc57f1066bbff9', -- Village
]) = false
SELECT * FROM places
WHERE arrays_overlap(fsq_category_ids, array('4bf58dd8d48988d1f0931735', -- Airport Gate
'62d587aeda6648532de2b88c', -- Beer Festival
'4bf58dd8d48988d12b951735', -- Bus Line
'52f2ab2ebcbc57f1066b8b3b', -- Christmas Market
'50aa9e094b90af0d42d5de0d', -- City
'5267e4d9e4b0ec79466e48c6', -- Conference
'5267e4d9e4b0ec79466e48c9', -- Convention
'530e33ccbcbc57f1066bbff7', -- Country
'5345731ebcbc57f1066c39b2', -- County
'63be6904847c3692a84b9bb7', -- Entertainment Event
'4d4b7105d754a06373d81259', -- Event
'5267e4d9e4b0ec79466e48c7', -- Festival
'4bf58dd8d48988d132951735', -- Hotel Pool
'52f2ab2ebcbc57f1066b8b4c', -- Intersection
'50aaa4314b90af0d42d5de10', -- Island
'58daa1558bbb0b01f18ec1fa', -- Line
'63be6904847c3692a84b9bb8', -- Marketplace
'4f2a23984b9023bd5841ed2c', -- Moving Target
'5267e4d9e4b0ec79466e48d1', -- Music Festival
'4f2a25ac4b909258e854f55f', -- Neighborhood
'5267e4d9e4b0ec79466e48c8', -- Other Event
'52741d85e4b0d5d1e3c6a6d9', -- Parade
'4bf58dd8d48988d1f7931735', -- Plane
'4f4531504b9074f6e4fb0102', -- Platform
'4cae28ecbf23941eb1190695', -- Polling Place
'4bf58dd8d48988d1f9931735', -- Road
'5bae9231bedf3950379f89c5', -- Sporting Event
'530e33ccbcbc57f1066bbff8', -- State
'530e33ccbcbc57f1066bbfe4', -- States and Municipalities
'52f2ab2ebcbc57f1066b8b54', -- Stoop Sale
'5267e4d8e4b0ec79466e48c5', -- Street Fair
'53e0feef498e5aac066fd8a9', -- Street Food Gathering
'4bf58dd8d48988d130951735', -- Taxi
'530e33ccbcbc57f1066bbff3', -- Town
'5bae9231bedf3950379f89c3', -- Trade Fair
'4bf58dd8d48988d12a951735', -- Train
'52e81612bcbc57f1066b7a24', -- Tree
'530e33ccbcbc57f1066bbff9', -- Village
)) = false
SELECT *
FROM places
WHERE array_length(array_intersect(fsq_category_ids, array_value(
'4bf58dd8d48988d1f0931735', -- Airport Gate
'62d587aeda6648532de2b88c', -- Beer Festival
'4bf58dd8d48988d12b951735', -- Bus Line
'52f2ab2ebcbc57f1066b8b3b', -- Christmas Market
'50aa9e094b90af0d42d5de0d', -- City
'5267e4d9e4b0ec79466e48c6', -- Conference
'5267e4d9e4b0ec79466e48c9', -- Convention
'530e33ccbcbc57f1066bbff7', -- Country
'5345731ebcbc57f1066c39b2', -- County
'63be6904847c3692a84b9bb7', -- Entertainment Event
'4d4b7105d754a06373d81259', -- Event
'5267e4d9e4b0ec79466e48c7', -- Festival
'4bf58dd8d48988d132951735', -- Hotel Pool
'52f2ab2ebcbc57f1066b8b4c', -- Intersection
'50aaa4314b90af0d42d5de10', -- Island
'58daa1558bbb0b01f18ec1fa', -- Line
'63be6904847c3692a84b9bb8', -- Marketplace
'4f2a23984b9023bd5841ed2c', -- Moving Target
'5267e4d9e4b0ec79466e48d1', -- Music Festival
'4f2a25ac4b909258e854f55f', -- Neighborhood
'5267e4d9e4b0ec79466e48c8', -- Other Event
'52741d85e4b0d5d1e3c6a6d9', -- Parade
'4bf58dd8d48988d1f7931735', -- Plane
'4f4531504b9074f6e4fb0102', -- Platform
'4cae28ecbf23941eb1190695', -- Polling Place
'4bf58dd8d48988d1f9931735', -- Road
'5bae9231bedf3950379f89c5', -- Sporting Event
'530e33ccbcbc57f1066bbff8', -- State
'530e33ccbcbc57f1066bbfe4', -- States and Municipalities
'52f2ab2ebcbc57f1066b8b54', -- Stoop Sale
'5267e4d8e4b0ec79466e48c5', -- Street Fair
'53e0feef498e5aac066fd8a9', -- Street Food Gathering
'4bf58dd8d48988d130951735', -- Taxi
'530e33ccbcbc57f1066bbff3', -- Town
'5bae9231bedf3950379f89c3', -- Trade Fair
'4bf58dd8d48988d12a951735', -- Train
'52e81612bcbc57f1066b7a24', -- Tree
'530e33ccbcbc57f1066bbff9' -- Village
))) = 0
Find Open and Recently Active POI
SELECT * FROM places p
WHERE p.date_closed IS NULL
AND DATE(p.date_refreshed) >= DATE_ADD('day', -365, current_date);
SELECT * FROM places p
WHERE p.date_closed IS NULL
AND p.date_refreshed >= DATE_SUB(current_date(), 365);
SELECT *
FROM places p
WHERE p.date_closed IS NULL
AND CAST(p.date_refreshed AS DATE) >= CURRENT_DATE - INTERVAL '365 days';
Appendix
Using DuckDB
Create Remote Tables
CREATE TABLE places AS
SELECT _ FROM read_parquet( 's3://fsq-os-places-us-east-1/release/dt=2024-12-03/places/parquet-_.zstd.parquet');
create TABLE categories as
SELECT _ FROM read_parquet( 's3://fsq-os-places-us-east-1/release/dt=2024-12-03/categories/parquet/_.zstd.parquet');
Create Local Tables
NOTE: Downloading the data makes it much faster than doing it from S3.
Download files to your laptop
$ aws s3 cp --no-sign s3://fsq-os-places-us-east-1/release/dt=2024-12-03/places/parquet . --recursive
Create tables
CREATE TABLE places AS
‣ SELECT _ FROM read_parquet( '/Users/{username}/fsq-os-places/places/places-_.zstd.parquet');
create TABLE categories as
· SELECT _ FROM read_parquet( '/Users/{username}/fsq-os-places/categories/_.zstd.parquet');
Non-Commercial Categories Table
Category Name | Category ID |
---|---|
Airport Gate | 4bf58dd8d48988d1f0931735 |
Beer Festival | 62d587aeda6648532de2b88c |
Bus Line | 4bf58dd8d48988d12b951735 |
Christmas Market | 52f2ab2ebcbc57f1066b8b3b |
City | 50aa9e094b90af0d42d5de0d |
Conference | 5267e4d9e4b0ec79466e48c6 |
Convention | 5267e4d9e4b0ec79466e48c9 |
Country | 530e33ccbcbc57f1066bbff7 |
County | 5345731ebcbc57f1066c39b2 |
Entertainment Event | 63be6904847c3692a84b9bb7 |
Event | 4d4b7105d754a06373d81259 |
Festival | 5267e4d9e4b0ec79466e48c7 |
Hotel Pool | 4bf58dd8d48988d132951735 |
Intersection | 52f2ab2ebcbc57f1066b8b4c |
Island | 50aaa4314b90af0d42d5de10 |
Line | 58daa1558bbb0b01f18ec1fa |
Marketplace | 63be6904847c3692a84b9bb8 |
Moving Target | 4f2a23984b9023bd5841ed2c |
Music Festival | 5267e4d9e4b0ec79466e48d1 |
Neighborhood | 4f2a25ac4b909258e854f55f |
Other Event | 5267e4d9e4b0ec79466e48c8 |
Parade | 52741d85e4b0d5d1e3c6a6d9 |
Plane | 4bf58dd8d48988d1f7931735 |
Platform | 4f4531504b9074f6e4fb0102 |
Polling Place | 4cae28ecbf23941eb1190695 |
Road | 4bf58dd8d48988d1f9931735 |
State | 530e33ccbcbc57f1066bbff8 |
States and Municipalities | 530e33ccbcbc57f1066bbfe4 |
Stopp Sale | 52f2ab2ebcbc57f1066b8b54 |
Street Fair | 5267e4d8e4b0ec79466e48c5 |
Street Food Gathering | 53e0feef498e5aac066fd8a9 |
Taxi | 4bf58dd8d48988d130951735 |
Town | 530e33ccbcbc57f1066bbff3 |
Trade Fair | 5bae9231bedf3950379f89c3 |
Train | 4bf58dd8d48988d12a951735 |
Tree | 52e81612bcbc57f1066b7a24 |
Village | 530e33ccbcbc57f1066bbff9 |
Apache 2.0
Copyright 2024 Foursquare Labs, Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
You may obtain a copy of the License at:http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.
Updated 14 days ago