One standard schema. One curated list. One map. Describe any CityJSON or CityGML dataset as a STAC item — and make it discoverable, comparable, and contributable by everyone.
{
"type": "Feature",
"stac_version": "1.1.0",
"stac_extensions": [
"https://cityjson.github.io/stac-city3d/v0.2.0/schema.json",
"https://stac-extensions.github.io/projection/v2.0.0/schema.json"
],
"id": "9-284-556.city.json",
"collection": "netherlands-3d-bag",
"assets": {
"data": {
"href": "https://data.3dbag.nl/v20250903/tiles/9/284/556/9-284-556.city.json.gz",
"type": "application/city+json",
"roles": ["data"]
}
},
"properties": {
"proj:code": "EPSG:7415",
"city3d:version": "2.0",
"city3d:lods": ["0", "1.2", "1.3", "2.2"],
"city3d:co_types": ["Building", "BuildingPart"],
"city3d:city_objects": 2423,
"city3d:materials": false
}
} No initiative has ever curated the world's 3D city models in one uniform place. What exists is scattered, inconsistent, and easy to lose track of.
Lists live in random READMEs, gists and wikis. There's no single place to look.
No shared schema for CRS, level of detail or format — so datasets can't be compared.
Links rot, versions drift, and there's no signal when a dataset is updated.
You can't see global coverage at a glance — or find what exists near you.
STAC — the SpatioTemporal Asset Catalog — is a widely-adopted JSON standard for describing geospatial assets so they're searchable and machine-readable.
Our 3D city model extension adds the fields that matter for CityJSON and CityGML: version, levels of detail, CRS, and city-object types — so every dataset fits the same shape and can be queried, compared and mapped.
Every contributed dataset is georeferenced — so you can see global coverage and find models by location.
STAC is plain, linked JSON — exactly the shape today's LLM agents parse well. There's no scraping and no bespoke API: point an agent at the root catalog and it can crawl collections and items to discover what 3D city data exists, where it is, and at which level of detail.
Hand your assistant the endpoint and ask it what's available.
The root Catalog links to every Collection and Item — follow the links to walk the whole registry.
The registry is open. No gatekeeping — describe your model as a STAC item, open a PR, and once it's merged it appears on the map for everyone.
Clone city3d-stac-registry on GitHub.
Write a STAC item using the 3D city model extension fields.
CI checks the schema automatically. Maintainers review.
Your dataset joins the registry and shows up in the map.
# install the city3dstac CLI cargo install --git …/city3d-stac-tool.git --bin city3dstac # validate your dataset config city3dstac collection --config collections/rotterdam.yaml --dry-run
One or two lines to get going — see the registry README for the full workflow.
Open the registry on GitHubHelp build the first uniform, open registry of the world's 3D city models.