Skip to content
Official and academic sources Verified

Permanent foreign resident population by nationality

bfs-nationality-groups

Publisher
OFS/BFS
Access method
api
Table id
su-d-01.05.01.01
Licence
BFS terms of use OPEN-BY: "Open use. Must provide the source."
Coverage
Geography national · referenceDay 31 December · from 1980 · to 2025
Gaps
Foreign nationals only (Swiss citizens, incl. naturalised persons, are not in this table — see bfs-population-historic for the total and bfs-migration-status for migration background). States that did not exist in a year have no row for that year ("*" in the source); "…" (unknown) is left out too.
Used on
STORY-06
Known limits
Nationality is a legal status, not origin or ethnicity — Switzerland does not measure ethnicity. Naturalisations move people out of this table. Sources: PETRA register 1980–2009, STATPOP since 2010 — from 2010 the permanent resident population also includes persons in the asylum process with ≥ 12 months of residence (footnote 1), a break in the series. Historical states (Jugoslawien, Sowjetunion, Tschechoslowakei, Serbien und Montenegro) are kept under the names used by BFS; "Tibet" is included in China from 2010.
Verification
verification date: 2026-10-31 · method: Fetched from the BFS DAM; the hierarchy check (sub-regions + countries = foreign total, every year 1980–2025) passed. Compared with the BFS press release of 20.08.2026 "Bestand und Entwicklung der Bevölkerung der Schweiz im Jahr 2025" ("2 528 100 ausländische Staatsangehörige (28%)", increase "um 48 200 Personen") — identical after rounding to the hundred. · checkedValue: foreign_total 2025: 2528117 (press release 2 528 100); 2024→2025: +48 200 · checkedAgainst: https://dam-api.bfs.admin.ch/hub/api/dam/assets/36680491/master

How current is this data?

Freshness
Up to date

According to its update rhythm, no newer edition is expected yet.

Period covered
1980–2025
Last change of the data
Last check of the source
Update rhythm
Yearly

Ledger note (in English): Yearly, with the definitive population results in late August (2025 data on 20.08.2026).

Votara checks the source
Every week, and every day from 3 days before to 14 days after an announced publication date

The state is computed each time the site is built; this page shows it as of . Results of the accuracy checks

Transformations

  1. XLSX su-d-01.05.01.01 (current edition via the DAM orderNr URL), sheet "su-d-01.05.01.01": one row per group, one column per year (footnote markers such as "2010 1" stripped). Script: scripts/fetch/bfs-nationality-groups.ts
  2. Summary block mapped by exact label: foreign_total "Ausland"; continents europe "Europa", africa "Afrika", americas "Amerika", asia "Asien", oceania "Ozeanien"; subcontinents northern_america "Nordamerika", latin_america_caribbean "Lateinamerika und Karibik"; blocs eu "EU-Staaten" (EU27 as of 1.2.2020, applied to all years), efta "EFTA-Staaten", other_europe "Übriges Europa (Europa ohne EU und EFTA)", non_european "Aussereuropäische Staaten (ohne Staatenlos/nicht zuteilbar/ohne Angabe)"; other stateless_unassigned_unknown "Staatenlos/nicht zuteilbar/ohne Angabe". Unknown labels fail the fetch.
  3. Detail block: a row is a sub-region (group_type region, e.g. "Ostafrika", "Südasien") when it equals, in every year, the sum of the ≥ 2 rows that follow; those rows are countries (group_type country). The detail "Europa" and "Nordamerika" duplicate the summary rows and are not repeated. The fetcher fails unless the top-level units of the detail block add up to "Ausland" in every year. group = ASCII slug of the German label for regions and countries (e.g. vereinigtes-koenigreich); label_de keeps the label as published.
  4. Values copied as published (persons). Do not add rows of different group_type (they overlap).