Part of a Data Solution
- Explore →
Postal Codes Solution
Every worldwide postal-code dataset in one bundle — the ultimate global reference for precise postal codes.
Premium
You're viewing a free sample
Get the complete dataset — all rows and files — delivered instantly after checkout, with lifetime access to the latest version.
- Secure checkout via Stripe
- Instant download after payment
- Lifetime access to the latest version
- opendata.swiss terms of use, open tier (commercial use permitted, attribution recommended) license
API Access
Access dataset files directly from scripts, code, or AI agents.
Browse dataset files
API Access
Access dataset files directly from scripts, code, or AI agents.
Each file has a stable URL (r-link) that you can use directly in scripts, apps, or AI agents. These URLs are permanent and safe to hardcode.
Start with these files — they give you everything you need to understand and access the dataset.
- 1. Fetch datapackage.yaml to inspect schema and resources
- 2. Download data resources listed in datapackage.yaml
- 3. Read README.md for full context
Data Files
postal-codes-ch-sample
| Field | Type | Description | Constraints | Title |
|---|---|---|---|---|
| country_code | string | ISO 3166-1 alpha-2 -- always CH | Country Code | |
| postal_code | string | Swiss 4-digit postal code (PLZ) | { "pattern": "^\\d{4}$" } | Postal Code |
| place_name | string | Locality name. Large-account subdivisions appear as distinct rows (e.g. 'Lausanne 25'), as do PO-box/corporate codes (e.g. 'Zofingen PF') | Place Name | |
| admin_name1 | string | Canton -- official ISO 3166-2:CH subdivision name (all 26 covered) | Administrative Name 1 | |
| admin_code1 | string | ISO 3166-2:CH canton code, e.g. CH-ZH | Administrative Code 1 | |
| admin_name2 | string | District (Bezirk) -- empty where the register is ambiguous after a municipality merger | Administrative Name 2 | |
| admin_code2 | string | Official BFS district number (Bezirksnummer) | Administrative Code 2 | |
| admin_name3 | string | Municipality (Gemeinde) | Administrative Name 3 | |
| admin_code3 | string | Official BFS municipality number (BFS-Nr) | Administrative Code 3 | |
| latitude | number | WGS84 latitude | Latitude | |
| longitude | number | WGS84 longitude | Longitude | |
| accuracy | string | Not populated -- the official source carries no coordinate-accuracy grade | Accuracy | |
| alternative_city_name | string | Not populated in this release | Alternative City Name | |
| code_type | string | Extra field, beyond the core 13. 'locality' = official swisstopo locality row; 'po_box_or_large_account' = PO-box/corporate/branch code that the official locality register does not list | { "enum": [ "locality", "po_box_or_large_account" ] } | Code Type |
| address_share_pct | string | Extra field, beyond the core 13. For localities split across municipalities, this municipality's percentage share of the locality's addresses. Empty for po_box_or_large_account rows | Address Share Percent |
Download
Download sample CSVAbout
- Last updated
- 6 October 2026
- Total rows
- 100
- Format
- CSV
- File size
- 12.7 kB
About this dataset
Postal Codes Dataset for Switzerland (CH)
This dataset lists the four-digit postal codes (PLZ) of Switzerland with locality names, cantons, districts (Bezirke), municipalities (Gemeinden) and WGS84 coordinates, covering every canton. It also includes PO-box, large-account and post-office branch codes that are not localities.
Column definitions, row count, size and last-updated date are in datapackage.yaml.
Data Sources
- Postal codes, localities, municipalities, cantons, coordinates and address shares: © swisstopo, Amtliches Ortschaftenverzeichnis mit Postleitzahl und Perimeter, opendata.swiss terms of use, open tier (commercial use permitted, attribution recommended).
- District (Bezirk) tier and the PO-box, large-account and branch codes missing from the official locality register: © GeoNames, postal code export for Switzerland, CC BY 4.0.
Changes made to the source data: canton codes written as ISO 3166-2:CH (CH- plus the canton abbreviation) with the ISO canton
names, Liechtenstein localities removed, districts joined from GeoNames on the BFS municipality number, GeoNames codes
absent from the official register added with code_type set to po_box_or_large_account, address shares written as plain numbers.
Not endorsed by, or affiliated with, swisstopo or GeoNames.
Known limitations
- A locality that straddles a municipal boundary has one row per municipality, with that municipality's share of the
locality's addresses in
address_share_pct. Rows are not collapsed to one per postal code. - The district is left empty for municipalities whose district is ambiguous in the source after a municipal merger.
accuracyandalternative_city_nameare empty on every row, andaddress_share_pctis empty forpo_box_or_large_accountrows.- Localities of Liechtenstein that share the Swiss postal range (9485-9499) are excluded.
Usage
The dataset files are available in CSV format and can be accessed and downloaded using
the links provided in datapackage.yaml.
For other inquiries, contact datahub@datopian.com