Skip to content
Official and academic sources Verified

Swissvotes – results of federal popular votes by canton

swissvotes-cantons

Publisher
Année politique suisse, University of Bern
Access method
csv
Licence
CC BY 4.0 (Creative Commons Attribution 4.0 International) — attribution "Swissvotes – die Datenbank der eidgenössischen Volksabstimmungen. Année Politique Suisse, Universität Bern. www.swissvotes.ch"
Coverage
Geography cantons (26; Jura from 1979) · from 1848-09-12 · to 2026-09-27
Gaps
Cantonal yes shares and turnout are empty in swissvotes for the votes since 9 June 2024 (anr 667 onwards on 2026-10-31); for those votes the dataset has the cantonal majorities only. The BFS publishes them in its open data "Echtzeitdaten am Abstimmungstag"; they are fetched as bfs-vote-results (from 2024-03-03), which the canton pages use where this dataset has no share. Turnout is not available for the 19th-century votes, yes shares are not available for vote 1 (1848). Vote counts (yes, no, valid, entitled to vote) stay in the raw dataset.
Used on
AGORA-22, STORY-09
Known limits
swissvotes compiles the cantonal results from the BFS (STAT-TAB). Three published shares do not match the published majority at one decimal (anr 126.2 NE 48.37 % with a yes majority, anr 311.1 GR 49.98 % with a yes majority, anr 615 BE 50.00 % with a yes majority); values are kept as published. Before 1979 the canton of Bern includes today's canton of Jura; before 2026 Moutier votes in Bern. From 1874 the cantonal popular majority is the canton's vote for the majority of the cantons (codebook); half cantons count half there.
Verification
verification date: 2026-10-31 · method: Fetched the dataset from swissvotes.ch. Compared anr 665 (Initiative für eine 13. AHV-Rente, 03.03.2024) with the BFS open-data result file of that voting day (vorlagenId 6650) — Zurich 295 601 yes, 271 914 no, 52.086905192 % yes, turnout 58.892003366 %, the same counts and shares as swissvotes (zh-ja 295601, zh-nein 271914, zh-japroz 52.09, zh-bet 58.89); Geneva 75.47 % and Jura 82.54 % also agree. · checkedValue: anr 665, ZH: zh-japroz 52.09 (yes_pct 52.1), zh-bet 58.89 (turnout 58.9) · checkedAgainst: https://ogd-static.voteinfo-app.ch/v1/ogd/sd-t-17-02-20240303-eidgAbstimmung.json

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
After each voting Sunday

Ledger note (in English): After each voting Sunday (swissvotes adds the cantonal shares later than the national result, see gaps).

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

  1. Download the semicolon-separated UTF-8 CSV (BOM, CRLF), parse it with the hand-rolled RFC 4180 parser and read, for each of the 26 cantons, the codebook variables <canton>-japroz, <canton>-bet and <canton>-annahme (codebook pp. 36–37). Script: scripts/fetch/swissvotes-cantons.ts
  2. canton = abbreviation in upper case (ZH … JU), in BFS order; anr copied as published (join with the swissvotes entry for date, titles, type and national result).
  3. yes_pct = <canton>-japroz (share of yes votes in the valid ballots, %) and turnout = <canton>-bet (%), rounded half-up from two to one decimal like the national yes_pct; "." or empty becomes empty. For tie-breakers yes_pct is the share preferring the popular initiative (codebook).
  4. majority = <canton>-annahme: 0 no, 1 yes, 8 prefer_counter, 9 prefer_initiative (tie-breakers); "." becomes empty. Any other code fails the fetch.
  5. A row is written for each vote and canton with at least one value; scheduled votes (no result yet) and Jura before 1979 have none and are left out. Rows sorted by vote number, then canton.