A unified, confidence-scored open dataset of U.S. points of interest, built from OpenStreetMap and Overture Maps.
- π Live map: https://openpois.org
- π Python API docs: https://openpois.org/docs/
- ποΈ Dataset on Source Cooperative: https://source.coop/henryspatialanalysis/openpois
OpenPOIs conflates points of interest from OpenStreetMap and Overture Maps into a single unified dataset, then attaches a per-POI confidence score estimating the probability that the place still exists. Confidence comes from a Bayesian turnover model fit on OSM tag-edit history. The published dataset covers the United States and is refreshed monthly, following the Overture Maps monthly release cycle.
This repository contains the Python library used to produce the data, the end-to-end pipelines that download and conflate sources, and the Vue front-end that powers the live map.
No install required. The dataset is hosted anonymously on Source Cooperative; read it straight from S3:
import pyarrow.dataset as ds
import pyarrow.fs as pafs
BASE = "us-west-2.opendata.source.coop/henryspatialanalysis/openpois"
VERSION = "latest" # or pin a dated folder, e.g. "2026-04-23-v0"
fs = pafs.S3FileSystem(anonymous = True, region = "us-west-2")
pois = ds.dataset(
f"{BASE}/{VERSION}/conflated-parquet/",
filesystem = fs,
format = "parquet",
partitioning = "hive",
)
print(pois.schema)
print(f"{pois.count_rows():,} POIs")GeoPandas, DuckDB, and PMTiles examples live in the dataset README on Source Cooperative.
The full OpenPOIs package API β I/O adapters, the turnover model, conflation primitives β is documented at https://openpois.org/docs/.
This package can be installed from source:
git clone https://github.com/henryspatialanalysis/openpois.git
cd openpois
make build_env # conda env from environment.yml
conda activate openpois
make install_package # pip install -e .| Path | Purpose |
|---|---|
| src/openpois/ | Library source: I/O, models, conflation, publishing |
| scripts/ | End-to-end pipelines using config.yaml |
| site/ | Vue 3 + Vite frontend powering openpois.org |
| docs/ | Sphinx documentation source |
| tests/ | Unit tests |
The data is produced by four pipelines under scripts/, each driven by config.yaml:
- Snapshot downloads (OSM + Overture)
- OSM history download and Bayesian turnover-model fit
- Apply model to OSM snapshot to get per-POI confidence
- Conflate OSM Γ Overture, partition, publish to Source Cooperative
Each pipeline and its scripts are documented in the workflows reference at https://openpois.org/docs/workflows.html.
The interactive map at https://openpois.org is a Vue 3 + Vite app rendering PMTiles archives over MapLibre GL. To run it locally:
make site_dev # http://localhost:5173, hot reload
make site_build # production build to site/dist/The site auto-deploys to GitHub Pages via
.github/workflows/deploy-site.yml on
every push to main that touches site/, src/, docs/, or scripts/.
pytest # run the test suite
make lint # flake8 + pylint
make export_env # rewrite environment.yml after adding depsOpenPOIs is dual-licensed:
- Code β MIT License. You can use, modify, and redistribute the Python package, scripts, and front-end freely.
- Data β Open Database License (ODbL) v1.0. The published parquet and PMTiles archives are derivative works of OpenStreetMap and Overture Maps and inherit ODbL terms. Any public use must attribute OpenPOIs, OpenStreetMap contributors, and the Overture Maps Foundation. Derivative databases must be released under the same license.
If you use OpenPOIs in research, please cite:
Henry, N. (2026). OpenPOIs: a unified, confidence-scored dataset of U.S. points of interest. Henry Spatial Analysis. https://openpois.org
A machine-readable citation is provided in CITATION.cff; GitHub renders it as a "Cite this repository" button on the repo home page.
Bug reports, feature requests, and contributions are welcome via GitHub issues.
