The City That Publishes Its Own Bones: Mining Zürich's Open Data From a BIM Desk
Zürich publishes its civic data free on CKAN. Here is how a BIM or Grasshopper office pulls parcels, zoning and vacancy figures with ten lines of Python.
Here is a quiet frontier that never makes a keynote: an entire European city has decided its data belongs to whoever wants to read it. data.stadt-zuerich.ch — the Open Government Data catalog of the City of Zürich — publishes hundreds of datasets kostenlos und zur freien, auch kommerziellen Weiterverwendung. Free. Commercial use allowed. No login dialog to lose an afternoon to.
That sentence sounds like admin. It is actually the same argument openBIM has been making since June 1996, when the first Industry Foundation Classes (IFC 1.0) shipped as a vendor-neutral model of the building. The claim is identical: the data of a place belongs to the place — over its whole lifecycle — not to the vendor who happened to draw it. Zürich just applied it to the city instead of the file.
←TODAY: Zürich’s whole civic catalog is free to reuse, even commercially — a 2026 fact, not a pilot. →3012: The city that publishes its own bones outlives every vendor that ever drew them. Fulcrum: Open data is only infrastructure if a script written tomorrow can still read what a clerk published today.
Why this is possible now, not five years ago
The catalog runs on CKAN, the open-source data-portal platform stewarded by the Open Knowledge Foundation and the same engine behind opendata.swiss. CKAN matters here for one unglamorous reason: it exposes a stable, documented HTTP API. You do not scrape a PDF. You do not email a Fachstelle. You query an endpoint and get JSON back, with a DataStore behind it you can hit with actual SQL.
Look at what that catalog quietly underwrites. When the NZZ’s Francesca Prader reported on 18 August 2026 that the canton’s Leerwohnungsziffer ticked from 0.48% to 0.52% — 4,200 empty flats, 400 more than last year, with the Oberland (0.95%) and the Region Pfannenstiel (0.9%) topping the canton — those numbers came off exactly this kind of open register, counted as of 1 June. When Watson covered the city vote on scrapping Entsorgungscoupons, the waste tonnages behind the debate were public data too. The story is downstream of the dataset. For a BIM or urban-design office, so is a lot of your site context.
The Tool: the protagonist here is the Open Data Zürich catalog on CKAN (data.stadt-zuerich.ch). CKAN is a mature, open-source portal; the Zürich instance is worth a computational designer’s afternoon because it turns Quartier-level building, zoning, energy and vacancy data into something a Grasshopper or Archicad pipeline can pull automatically — the missing left-hand side of any GIS-to-BIM workflow.
Setup:
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install requests
python - <<'PY'
import requests
BASE = "https://data.stadt-zuerich.ch/api/3/action"
r = requests.get(f"{BASE}/package_search", params={"q": "leerwohnungen", "rows": 3})
for ds in r.json()["result"]["results"]:
print(ds["name"], "—", ds["title"])
PYFirst steps:
- Find the dataset. Swap the
q=term above for whatever you need —bauzone,energie,bevoelkerung.package_searchreturns the machine names you will use next. - Get the resource. Read
result.results[0].resources; each has aformat(CSV, GeoJSON, WFS) and a directurl. The GeoJSON ones drop straight onto a map. - Load it.
geopandas.read_file(url)on a GeoJSON resource gives you a projected layer you can reproject to CH1903+/LV95 (EPSG:2056) and hand to your model. - See it. Plot it, or export to a Grasshopper-readable format and let the site data drive the massing study instead of a scanned Katasterplan.
Atelier: A Zürich studio starting a Wettbewerb normally burns the first day rebuilding context — parcels, heights, the neighbours — by hand. With this API, that day becomes a script that pulls the official geometry and attributes once and refreshes on demand, feeding your Grasshopper↔Archicad pipeline the same numbers the Bauleitung will later check against. This week’s one Monday move: write a ten-line fetch for the ONE dataset your current project actually needs (usually the Bauzonenordnung), save it in the repo, and never redraw that context by hand again.
Hack: Pull the empty-flat count per Quartier straight out of the city’s DataStore — no CSV download, no spreadsheet. CKAN lets you run read-only SQL against any tabular resource through datastore_search_sql; paste the resource id from step 2 and use the dataset’s own column names.
import requests
sql = 'SELECT "Quartier", SUM("LeerWohnungen") AS leer FROM "PASTE-RESOURCE-ID" GROUP BY "Quartier" ORDER BY leer DESC LIMIT 5'
r = requests.get("https://data.stadt-zuerich.ch/api/3/action/datastore_search_sql", params={"sql": sql})
for row in r.json()["result"]["records"]:
print(row["Quartier"], row["leer"])One query, and you know which Quartier to point a feasibility study at before anyone has opened Archicad. The trade-off is real and worth stating plainly: an open catalog is only as current as the clerk who last uploaded, and even that 0.52% figure carries a Vorbehalt the NZZ itself flags — the register counts flats offered on 1 June, not a live occupancy sensor.
PAZ has covered this exact seam before — the GIS-zu-BIM workflow webinar walks the same bridge from a public geo-layer into a live parametric model. And the open-format lineage runs deeper than one city: EPFL’s open-source IFC work is the institutional version of the same bet Zürich is making with its catalog — the one buildingSMART hardened into ISO/PAS 16739 with IFC2x3 back in 2006.
From where this desk writes, looking back, the buildings that aged badly were never the ugly ones — they were the ones nobody could reopen because the proprietary format went dark. Open civic data is the same gamble at city scale, and it can still fail the same way: a catalog behind a login, a format only one dead product could read. So when you build on this, cache the raw open file alongside your model, in the open format. Ask the one question that changes a tool stack: when the portal is gone, can a 25-year-old still open what you pulled today?
Go find the single dataset your current project keeps redrawing by hand, and replace that afternoon with ten lines of Python before Monday.
Learn-it:
- The catalog itself — data.stadt-zuerich.ch (start at the Datenkatalog search).
- PAZ note — Wie du mit EINEM GIS-zu-BIM-Workflow deine Projekte automatisierst.
- Open-source BIM at institution scale — EPFL CNPA open IFC project.
- The wider open-AEC toolchain — OSArch Free Software directory.
- Structurally-informed open geometry tools — Block Research Group on GitHub.
SOURCE · ↗
PAZ Kaffi · multidisciplinary editorial, led by PAZ Academy