Places · Public data
Places of interest in Europe
Shops, schools, hospitals, stations and cafés, with a category and a point.
Overture Maps Foundation, places theme · CDLA-Permissive-2.0 · commons_pubdata.places.places
- 7,257,624rows
- Europecoverage
- Monthlyrefresh
- 10 Oct 2026last refreshed
- 5data files

| place_id | name | basic_category | category | category_path | confidence |
|---|---|---|---|---|---|
| 59f765be-2c34-42d3-b094-750514a1b730 | Aeroporto da Horta | airport | airport | travel_and_transportation > air_transport_facility_or_ser… | 0.9702700346708297 |
| b4692695-c947-41fc-be04-dffde60e6b67 | Avis | rental_service | car_rental_service | services_and_business > rental_service > vehicle_rental_s… | 0.954 |
| 752a0e28-eb18-4126-be0c-85623191328e | Belo Campo | hotel | hotel | lodging > hotel | 0.970261812210083 |
| 6f6cc8a1-7db1-4c94-8253-38ca2bfc6883 | Quinta das Buganvílias | hotel | hotel | lodging > hotel | 0.9218552708625793 |
| d1bb58fc-5f75-4ba8-abc6-27b1159775fe | Monte da Guia | historic_site | historic_site | cultural_and_historic > historic_site | 0.9059832096099854 |
| ff555156-61b9-4179-b458-4a5cc6073711 | Road Side Cafe and Mini Supermarket | food_and_beverage_store | grocery_store | shopping > food_and_beverage_store > grocery_store | 0.9834498763084412 |
| 85d4fc46-c138-4d06-9294-374ccecb2765 | Vinhas do Calhau | hotel | hotel | lodging > hotel | 0.9980174082517624 |
| 555fb5dc-b6e5-43ac-9031-513d0eb5caaa | Pocinhobay | hotel | hotel | lodging > hotel | 0.9247926473617554 |
The first rows of places.places as of 10 Oct 2026, geometry left out.
Query it with DuckDB.
Bash
lhbox duckdb --catalog commons/pubdata
SQL · Pharmacies by country
SELECT p.country_code, count(*) AS pharmacies FROM commons_pubdata.places.places AS p WHERE p.category = 'pharmacy' GROUP BY 1 ORDER BY 2 DESC;
SQL · DuckDB 1.5.5 or newer, no key
INSTALL iceberg; LOAD iceberg; INSTALL httpfs; LOAD httpfs; INSTALL spatial; LOAD spatial; CREATE SECRET pubdata (TYPE S3, ENDPOINT 'lakehousebox-public-data.b-cdn.net', URL_STYLE 'path', REGION 'us-east-1'); ATTACH ':memory:' AS pubdata; CREATE SCHEMA pubdata.places; CREATE VIEW pubdata.places.places AS SELECT * FROM iceberg_scan('s3://commons--pubdata/places/places');
SQL · Pharmacies by country
SELECT p.country_code, count(*) AS pharmacies FROM pubdata.places.places AS p WHERE p.category = 'pharmacy' GROUP BY 1 ORDER BY 2 DESC;
Read it where you work.
Public, read-only data. With an account, lhbox duckdb attaches the catalog as commons_pubdata; an agent with the LakehouseBox connector opens it with open_public_catalog("commons/pubdata"). Without one, DuckDB reads the public files directly.
Example queries
Pharmacies by country
SELECT p.country_code, count(*) AS pharmacies FROM commons_pubdata.places.places AS p WHERE p.category = 'pharmacy' GROUP BY 1 ORDER BY 2 DESC;
The ten nearest hospitals to a point (Madrid, Puerta del Sol)
SELECT name, locality, round(6371 * 2 * asin(sqrt(pow(sin(radians(latitude - 40.4169) / 2), 2) + cos(radians(40.4169)) * cos(radians(latitude)) * pow(sin(radians(longitude + 3.7035) / 2), 2))), 2) AS km FROM commons_pubdata.places.places WHERE basic_category = 'hospital' AND latitude BETWEEN 40.2 AND 40.7 AND longitude BETWEEN -4.0 AND -3.4 ORDER BY km LIMIT 10;
Know your columns.
| Column | Type | Meaning |
|---|---|---|
place_id | string | Overture GERS id of the place |
name | string | primary name |
basic_category | string | Overture's coarse category (e.g. restaurant, hospital, pharmacy_and_drug_store, elementary_school) |
category | string | Overture's taxonomy category (the most specific) |
category_path | string | the taxonomy path from general to specific, joined with ' > ' |
confidence | double | Overture's confidence that the place exists, 0.9 to 1 |
View all 18 columns
operating_status | string | open, permanently_closed or temporarily_closed when known |
country_code | string | ISO 3166-1 alpha-2 of the address (joins reference.countries) |
region | string | the address region as given (not always an ISO 3166-2 code) |
locality | string | city or town |
postcode | string | postal code |
address | string | the street address as one line |
longitude | double | WGS84 longitude |
latitude | double | WGS84 latitude |
geometry | geometry | the point (WGS84, longitude/latitude), for spatial joins and maps |
website | string | the first website listed |
brand | string | brand name for chain locations |
overture_release | string | the release this row came from |
Join keys: country_code.
Before you query.
- Filter on
basic_categoryfor broad questions (restaurant, hospital, pharmacy_and_drug_store, elementary_school, high_school; list them withSELECT DISTINCT basic_category) and oncategoryorcategory_pathfor specific ones (category = 'pharmacy'). - Rows are stored in Hilbert order, so a box around an area reads little: a bounding box on longitude and latitude, or
geometry && ST_MakeEnvelope(xmin, ymin, xmax, ymax), before any distance arithmetic. geometryis an Iceberg v3 geometry column (DuckDB 1.5.6 or newer; PyIceberg 0.12 cannot load v3 geometry tables yet).- Coverage and freshness vary by country (Overture merges several providers);
confidence0.9 already drops most duplicates and stale entries, but a closed business can remain.
Source & licence.
- Source
- Overture Maps Foundation, places theme
- Licence
- CDLA-Permissive-2.0 (a few sources CC0-1.0 or Apache-2.0; the per-record licence is in Overture's sources)
- Attribution
- © Overture Maps Foundation (CDLA-Permissive-2.0).
- Coverage
- Europe (EU-27, EFTA, the UK, the Western Balkans, the microstates, Ukraine, Moldova, Belarus), by address country; the latest Overture release
- Refresh
- monthly, the whole table replaced; source version overture 2026-09-23.1
- Table
commons/pubdata·places.places· Iceberg v3 · browse the catalog- Recipe
pubdata/recipes/places.py, registry entrypubdata/registry/places.yaml
Source: Overture Maps Foundation, places theme · CDLA-Permissive-2.0 · Snapshot shown: 10 Oct 2026HTML for people. Markdown for agents.
# Places of interest in Europe
*Shops, schools, hospitals, stations and cafés, with a category and a point.*
Points of interest across Europe from Overture Maps' places theme: one row per place with its name, Overture's category (and the category path from general to specific), a confidence score, the address fields, a longitude and a latitude, and a website and brand when known. Kept where the address country is European and Overture's confidence is at least 0.9, about 7.7 million places.
## At a glance
| | |
|---|---|
| Table | `pubdata.places.places` |
| Category | Places · Places, Spatial, Europe |
| Rows | 7,257,624 |
| Size | 5 data file(s) |
| Iceberg format | v3 |
| Last refreshed | 2026-10-10T11:25:24Z |
| Source version | overture 2026-09-23.1 |
| Refresh cadence | monthly (replace) |
| Coverage | Europe (EU-27, EFTA, the UK, the Western Balkans, the microstates, Ukraine, Moldova, Belarus), by address country; the latest Overture release |
## Origin
- **Source:** [Overture Maps Foundation, places theme](https://docs.overturemaps.org/guides/places/)
- **Licence:** CDLA-Permissive-2.0 (a few sources CC0-1.0 or Apache-2.0; the per-record licence is in Overture's sources)
- **Attribution:** © Overture Maps Foundation (CDLA-Permissive-2.0).
- **Note:** Overture releases monthly; the release name is the source version. Measured on 2026-09-23.1, about 0.55 GB.
- **Recipe:** `pubdata/recipes/places.py` in the LakehouseBox repository; registry entry `pubdata/registry/places.yaml`.
## Schema
| column | type | description |
|---|---|---|
| `place_id` | string | Overture GERS id of the place |
| `name` | string | primary name |
| `basic_category` | string | Overture's coarse category (e.g. restaurant, hospital, pharmacy_and_drug_store, elementary_school) |
| `category` | string | Overture's taxonomy category (the most specific) |
| `category_path` | string | the taxonomy path from general to specific, joined with ' > ' |
| `confidence` | double | Overture's confidence that the place exists, 0.9 to 1 |
| `operating_status` | string | open, permanently_closed or temporarily_closed when known |
| `country_code` | string | ISO 3166-1 alpha-2 of the address (joins reference.countries) |
| `region` | string | the address region as given (not always an ISO 3166-2 code) |
| `locality` | string | city or town |
| `postcode` | string | postal code |
| `address` | string | the street address as one line |
| `longitude` | double | WGS84 longitude |
| `latitude` | double | WGS84 latitude |
| `geometry` | geometry | the point (WGS84, longitude/latitude), for spatial joins and maps |
| `website` | string | the first website listed |
| `brand` | string | brand name for chain locations |
| `overture_release` | string | the release this row came from |
**Join keys:** `country_code`.
## For agents
Filter on `basic_category` for broad questions (restaurant, hospital, pharmacy_and_drug_store, elementary_school,
high_school; list them with `SELECT DISTINCT basic_category`) and on `category` or `category_path` for specific ones
(`category = 'pharmacy'`). Rows are stored in Hilbert order, so a box around an area reads little: a bounding box on
longitude and latitude, or `geometry && ST_MakeEnvelope(xmin, ymin, xmax, ymax)`, before any distance arithmetic.
`geometry` is an Iceberg v3 geometry column (DuckDB 1.5.6 or newer; PyIceberg 0.12 cannot load v3 geometry tables
yet). Coverage and freshness vary by country (Overture merges several providers); `confidence` 0.9 already drops most duplicates and stale entries, but a closed business can remain.
## Example SQL (DuckDB)
```sql
-- pharmacies by country
SELECT p.country_code, count(*) AS pharmacies
FROM pubdata.places.places AS p
WHERE p.category = 'pharmacy'
GROUP BY 1 ORDER BY 2 DESC;
-- the ten nearest hospitals to a point (Madrid, Puerta del Sol)
SELECT name, locality, round(6371 * 2 * asin(sqrt(pow(sin(radians(latitude - 40.4169) / 2), 2)
+ cos(radians(40.4169)) * cos(radians(latitude)) * pow(sin(radians(longitude + 3.7035) / 2), 2))), 2) AS km
FROM pubdata.places.places
WHERE basic_category = 'hospital' AND latitude BETWEEN 40.2 AND 40.7 AND longitude BETWEEN -4.0 AND -3.4
ORDER BY km LIMIT 10;
```
## How to read it
Without an account, over HTTPS (the bucket is public):
```sql
INSTALL iceberg; LOAD iceberg; INSTALL httpfs; LOAD httpfs;
-- anonymous: the bucket is public, requests go unsigned, through the public-data cache
CREATE OR REPLACE SECRET pubdata (TYPE S3, ENDPOINT 'lakehousebox-public-data.b-cdn.net', URL_STYLE 'path', REGION 'us-east-1');
CREATE OR REPLACE VIEW places AS SELECT * FROM iceberg_scan('s3://commons--pubdata/places/places');
SELECT * FROM places LIMIT 10;
```
With a LakehouseBox account:
```bash
# with a LakehouseBox account (any organisation): the public catalog by name, read-only
lhbox duckdb --catalog commons/pubdata # opens DuckDB attached as `commons_pubdata`
SELECT * FROM commons_pubdata.places.places LIMIT 10;
```
Public URL of the table's storage: `https://s3.lakehousebox.com/commons--pubdata/places/places/`. This card: `https://lakehousebox.com/pubdata/cards/places.md`; the page: https://lakehousebox.com/public-data/places. Every dataset as a table: `commons_pubdata.meta.datasets`; as Markdown: https://lakehousebox.com/public-data.md.