| Item | Details |
|---|---|
| Canton | 26 |
| District | 148 |
| Coordinates | ✅ Included (all levels) |
| Formats | JSON, NDJSON, CSV |
| License | CC-BY-4.0 |
| Last Updated | 2026-09-08 |
| Website | openadmindata.org/ch |
| API | openadmindata.org/api/ch |
| Flag | PNG · CDN · CSS · Collections |
| National Anthem | 🎵 Listen & Download Switzerland National Anthem MP3 |
| Statistics | GDP · Population — via NationData.org |
| # | Canton | Districts | Link |
|---|---|---|---|
| 1 | Glarus | 1 | Browse |
| 2 | Graubünden (Graubunden) | 11 | Browse |
| 3 | Zug | 1 | Browse |
| 4 | Ticino | 8 | Browse |
| 5 | Appenzell Innerrhoden | 1 | Browse |
| 6 | Valais | 13 | Browse |
| 7 | Schaffhausen | 6 | Browse |
| 8 | Genève (Geneva) | 1 | Browse |
| 9 | Basel-Stadt (Basel-City) | 1 | Browse |
| 10 | Fribourg | 7 | Browse |
| 11 | Schwyz | 6 | Browse |
| 12 | Zürich (Zurich) | 13 | Browse |
| 13 | Nidwalden | 1 | Browse |
| 14 | Luzern (Lucerne) | 6 | Browse |
| 15 | Vaud | 11 | Browse |
| 16 | Aargau | 11 | Browse |
| 17 | Thurgau | 6 | Browse |
| 18 | St. Gallen (Saint Gallen) | 9 | Browse |
| 19 | Jura | 3 | Browse |
| 20 | Appenzell Ausserrhoden | 3 | Browse |
| 21 | Neuchâtel (Neuchatel) | 1 | Browse |
| 22 | Basel-Landschaft (Basel-Country) | 5 | Browse |
| 23 | Solothurn | 10 | Browse |
| 24 | Obwalden | 1 | Browse |
| 25 | Uri | 1 | Browse |
| 26 | Bern | 11 | Browse |
| File | Format | Description |
|---|---|---|
| all-canton.json | JSON | All 26 canton records |
| all-district.json | JSON | All 148 district records |
| all-flat.json | JSON | Levels 1-1 flat array |
| all-flat.ndjson | NDJSON | Streaming format |
| all-flat.csv | CSV | Spreadsheet format |
| hierarchy.json | JSON | Nested tree |
| schema.json | JSON Schema | Data schema |
import json
with open("data/all-canton.json", "r", encoding="utf-8") as f:
data = json.load(f)
for r in data:
print(f"{r['name']['local']} ({r['name']['en']}) — {r['children_count']['district']} districts")import { readFileSync } from "fs";
const data = JSON.parse(readFileSync("data/all-canton.json", "utf-8"));
console.log(`Total: ${data.length} cantons`);| Field | Type | Description |
|---|---|---|
id |
string | Unique identifier |
level |
integer | 1=canton, 2=district |
level_name |
object | Level label (local + English) |
name.local |
string | Name in local script |
name.en |
string | English name |
name.slug |
string | URL-safe slug |
parent |
object/null | Parent division reference |
ancestors |
array | Full ancestor chain |
children_count |
object | Count of children per level |
zip_codes |
array | Postal codes (where available) |
geo.lat |
string | Latitude (WGS84) |
geo.lon |
string | Longitude (WGS84) |
Full schema: data/schema.json
divisions/{canton-slug}/
Districts are listed inline in each canton's README.
- llms.txt — Quick reference for AI agents
- llms-full.txt — Summary with per-canton links
- Per-canton data — Full data by canton
Switzerland Administrative Divisions Dataset (CC-BY-4.0)
URL: https://github.com/open-admin-data/switzerland-administrative-divisions
See CITATION.cff for machine-readable citation.
- Data: CC-BY-4.0
- Open Admin Data — Browse, search and explore administrative divisions for every country
- open-admin-data — GitHub organization with all country repos
- ListBase — Structured reference data for every country
- FreeFlags.org — Free flag images for every country
- Flag CDN — Hotlink flag images directly
- Flag CSS — CSS flag sprites for web projects
- Flag Collections — Curated flag image packs