Official commune register of Switzerland
bfs-communes
- Publisher
- OFS/BFS
- Access method
api- Table id
agvchapp snapshot- Licence
- opendata.swiss terms of use "terms_open": "Open use."
- Coverage
- Geography communes (political communes), with district and canton · state snapshot on the run date (Europe/Zurich)
- Gaps
- Current state only (no history in this file; see bfs-commune-mutations). Communal-free areas and cantonal lake shares are not in the snapshot's level 3.
- Used on
- STORY-09, AGORA-20, AGORA-22, PLAT-08
- Known limits
- BFS numbers are unique within one state of the register but can be reused over time (BFS, Historisiertes Gemeindeverzeichnis — Erläuterungen). Join older data through bfs-commune-mutations. STATPOP data (bfs-commune-population) are published on the previous year's commune state.
- Verification
- verification date: 2026-10-31 · method: Fetched the snapshot of 31.10.2026 (2110 communes, 144 districts, 26 cantons) and compared the set of commune numbers with the independent stats.swiss codelist CL_KT_BEZ_GDE_SNAP_2026__NUTS22021100 used by the BFS vacancy statistics (DF_LWZ_1) — identical (2110 = 2110, no difference). Reconciled with the 2025 state used by STATPOP (2115 communes) through the 1.1.2026 mutations (−6 abolished, −1 renumbered Moutier 700, +1 new Fétigny-Ménières, +1 Moutier 6831 = 2110). · checkedValue: 2110 communes; e.g. 261 Zürich, Bezirk Zürich (112), ZH · checkedAgainst: https://disseminate.stats.swiss/rest/codelist/CH1/CL_KT_BEZ_GDE_SNAP_2026__NUTS22021100/1.0.0
- Processed file
- data/processed/bfs-communes.csv
How current is this data?
- Freshness
- Checks failing
The automatic checks could not read the source several times in a row, or have not succeeded for longer than planned. The data shown dates from the last successful check.
- Period covered
- Not a time series
- Last change of the data
- Last check of the source
- Update rhythm
- Continuous
Ledger note (in English): Continuous; mergers usually take effect on 1 January. The fetcher snapshots the register on each run.
- Votara checks the source
- Every day
The state is computed each time the site is built; this page shows it as of . Results of the accuracy checks
Transformations
- GET /api/communes/snapshot?date=<today> (CSV, documented in https://www.agvchapp.bfs.admin.ch/documents/rest_api_de.pdf). Level 3 rows (communes) are joined to their district (level 2, via Parent = HistoricalCode) and canton (level 1). Script: scripts/fetch/bfs-communes.ts
- name = official commune name (column Name, binding for federal publications per the register's documentation); district_number = BFS district number (BfsCode of the level-2 row); district_name as published (e.g. "Bezirk Zürich", "Kanton Basel-Stadt" for cantons without districts).
- canton = abbreviation (ShortName of the level-1 row); the fetcher fails if the register's canton numbers/abbreviations differ from scripts/fetch/cantons.ts.