Czech election results 1996–2026 by municipality and polling district
Czech election results by municipality and polling district: parliamentary, Senate, European, regional, municipal and presidential elections. All in one structure, with municipality codes converted to the current ones. Since 2016 each polling district has its official code, so results go straight onto a map.
One-time payment, final price for a personal licence, switch to business at checkout · data as of 17 October 2026
You are buying the Elections 1996–2026 + schools bundle. It also includes: Schools and school facilities.


How much work it saves
Unifying 60 elections from 31 volby.cz exports with different formats, encodings and code lists, rolling city districts up into their cities and converting historical municipality codes to RÚIAN, the Czech register of addresses, buildings, parcels and territorial units. Adding up candidates’ votes in municipal elections into candidate lists per polling district, and matching 218,335 polling districts to the RÚIAN version of the district valid on election day. Totals verified against the overall results of ČSÚ, the Czech Statistical Office: the Senate in all 977 constituencies and rounds, municipal elections for all 183,152 candidate lists.
Measured on our own build
- Lines of code and tests
- 1,620
We measured AI agent usage on 6 other datasets: the first working version of the code took 10m to 40m tokens and 21–62 mins of agent run time.
- Free sample: all tables cut down to the Kutná Hora area, in CSV and Parquet. Download the sample
- Data as of
- 17 October 2026
- Rows
- 8.8m
- Tables
- 18
- Formats
- PostgreSQL, Parquet, CSV, JSON
- Source licence
- CC BY 4.0 (ČSÚ, ČÚZK)
What’s inside
Results of elections for the Chamber of Deputies (2002–2025), the Senate (1996–2026 including by-elections, both rounds), the president (2013–2023, both rounds), the European Parliament (2004–2024), regional councils (2000–2024) and municipal councils (2002–2026), by municipality and polling district in a uniform structure, with municipality codes converted to RÚIAN and with the RÚIAN polling district code for elections since 2016.
| Table | Rows |
|---|---|
volbyList of the elections included | 60 |
stranyParties standing (PS = Chamber of Deputies, EP = European Parliament, KZ = regional councils) and presidential candidates, with their ballot number | 900 |
volebni_stranyČSÚ code list of electoral parties (CVS), unified across all the elections included; the latest name applies | 1,719 |
vysledky_obceSummary results by municipality (PS, president, EP, KZ). City districts are summed up for the whole city | 156,307 |
vysledky_obce_stranyVotes for parties / candidates in municipalities (long format; rows with 0 votes left out) | 1,706,616 |
vysledky_okrskySummary results by polling district (PS, president, EP, KZ) | 362,688 |
vysledky_okrsky_stranyVotes for parties / candidates in polling districts (long format; rows with 0 votes left out) | 3,966,767 |
kv_zastupitelstvaElections to the councils of municipalities, city districts and the City of Prague: summary per council and constituency (regular date) | 44,792 |
kv_kandidatkyResults of candidate lists in elections to municipal councils (regular date) | 183,152 |
kv_okrskyMunicipal elections by polling district: turnout in the district for each council elected there (in cities divided into districts, two rows per polling district: the city council and the city district council) | 118,017 |
Show all 18 tables
| Table | Rows |
|---|---|
kv_okrsky_kandidatkyMunicipal elections by polling district: votes for candidate lists (the sum of votes for the list’s candidates; rows with 0 votes left out) | 907,074 |
senat_obvodySenate elections: summary per constituency and round (regular elections, by-elections and repeat elections 1996–2026) | 977 |
senat_kandidatiSenate elections: candidates in constituencies with the result of both rounds (name, titles, electoral and nominating party; without age, occupation and place of residence) | 3,698 |
senat_obceSenate elections: summary per municipality within a constituency and per round. City districts are summed up for the city; a city split between several constituencies has a row for each | 75,537 |
senat_obce_kandidatiSenate elections: votes for candidates in municipalities (long format; rows with 0 votes left out) | 323,002 |
senat_okrskySenate elections: summary per polling district and round | 177,982 |
senat_okrsky_kandidatiSenate elections: votes for candidates in polling districts (long format; rows with 0 votes left out) | 782,695 |
obce_mapovaniMapping of municipality and city district codes from the election data to RÚIAN municipalities 2026-09 | 6,427 |
Elections since October 2016 have the RÚIAN polling district code; the district boundaries are in the RÚIAN dataset. Names are given only for presidential and Senate candidates; lists of independent candidates in municipal elections have a generic name.
Downloads
Every format contains the same data. Download only the one you need; verify its integrity with the SHA256SUMS file.
| Format | Files | Size |
|---|---|---|
| PostgreSQLschema.sql with types, keys, indexes and comments, and import.sh, which loads the data from CSV | 2 | 41 kB |
| ParquetOne file per table (zstd). DuckDB, Polars and pandas read it without an import. | 18 | 40 MB |
| CSVUTF-8, comma-separated, with a header; large tables as .csv.gz | 18 | 118 MB |
| JSONAn array of objects; large tables as JSON Lines (.jsonl.gz) | 18 | 322 MB |
Code example
More examples for SQL, DuckDB, Python and Node.js are in the README.md inside the bundle.
-- senátoři zvolení v roce 2026 s výsledkem obou kol
SELECT o.obvod, o.obvod_nazev, k.jmeno, k.prijmeni, k.strana_zkratka, k.pct_kolo1, k.pct_kolo2
FROM 'parquet/senat_kandidati.parquet' k
JOIN 'parquet/senat_obvody.parquet' o ON o.volba_id = k.volba_id AND o.obvod = k.obvod AND o.kolo = 1
WHERE k.volba_id = 'se2026' AND k.zvolen ORDER BY o.obvod;-- mapa okrsků: podíl vítěze 2. kola senátních voleb 2026 s hranicemi ze sady ruian (dnešní stav)
SELECT o.obvod, o.volebni_okrsek_kod, o.ucast_pct, round(100.0 * h.hlasy / o.platne_hlasy, 2) AS pct_viteze, r.hranice
FROM 'parquet/senat_okrsky.parquet' o
JOIN 'parquet/senat_okrsky_kandidati.parquet' h
ON h.volba_id = o.volba_id AND h.kolo = o.kolo AND h.uzemi_kod = o.uzemi_kod AND h.okrsek = o.okrsek
JOIN 'parquet/senat_kandidati.parquet' k
ON k.volba_id = h.volba_id AND k.obvod = h.obvod AND k.kandidat_kod = h.kandidat_kod
JOIN 'ruian/parquet/volebni_okrsky.parquet' r ON r.kod = o.volebni_okrsek_kod
WHERE o.volba_id = 'se2026' AND o.kolo = 2 AND k.zvolen;-- účast v 2. kole prezidentské volby 2023 podle krajů
SELECT kraj_kod, round(100.0 * sum(vydane_obalky) / sum(volici_v_seznamu), 2) AS ucast
FROM 'parquet/vysledky_obce.parquet' WHERE volba_id = 'prez2023' AND kolo = 2 AND NOT zahranici
GROUP BY 1 ORDER BY 2 DESC;-- nejsilnější kandidátka v každém okrsku: zastupitelstvo města Brna 2026
SELECT DISTINCT ON (h.okrsek) h.okrsek, h.volebni_okrsek_kod, k.nazev, h.hlasy
FROM volby.kv_okrsky_kandidatky h
JOIN volby.kv_kandidatky k USING (volba_id, zastupitelstvo_kod, obvod, strana_kod)
WHERE h.volba_id = 'kv2026' AND h.zastupitelstvo_kod = 582786
ORDER BY h.okrsek, h.hlasy DESC;Source and licence
- Sources
- ČSÚ: Otevřená data pro volební výsledky (open data for election results)
- ČSÚ: Poslanecká sněmovna 2002 (Chamber of Deputies, CSV)
- ČSÚ: Poslanecká sněmovna 2006 (Chamber of Deputies, CSV)
- ČSÚ: Poslanecká sněmovna 2010 (Chamber of Deputies, CSV)
- ČSÚ: Poslanecká sněmovna 2013 (Chamber of Deputies, CSV)
- ČSÚ: Poslanecká sněmovna 2017 (Chamber of Deputies, CSV)
- ČSÚ: Poslanecká sněmovna 2021 (Chamber of Deputies, CSV)
- ČSÚ: Poslanecká sněmovna 2025 (Chamber of Deputies, CSV)
- ČSÚ: Prezident republiky 2013 (president, CSV)
- ČSÚ: Prezident republiky 2018 (president, CSV)
- ČSÚ: Prezident republiky 2023 (president, CSV)
- ČSÚ: Evropský parlament 2004 (European Parliament, CSV)
- ČSÚ: Evropský parlament 2009 (European Parliament, CSV)
- ČSÚ: Evropský parlament 2014 (European Parliament, CSV)
- ČSÚ: Evropský parlament 2019 (European Parliament, CSV)
- ČSÚ: Evropský parlament 2024 (European Parliament, CSV)
- ČSÚ: Zastupitelstva krajů 2000 (regional councils, CSV)
- ČSÚ: Zastupitelstva krajů 2004 (regional councils, CSV)
- ČSÚ: Zastupitelstva krajů 2008 (regional councils, CSV)
- ČSÚ: Zastupitelstva krajů 2012 (regional councils, CSV)
- ČSÚ: Zastupitelstva krajů 2016 (regional councils, CSV)
- ČSÚ: Zastupitelstva krajů 2020 (regional councils, CSV)
- ČSÚ: Zastupitelstva krajů 2024 (regional councils, CSV)
- ČSÚ: Zastupitelstva obcí 2002 (municipal councils, CSV)
- ČSÚ: Zastupitelstva obcí 2006 (municipal councils, CSV)
- ČSÚ: Zastupitelstva obcí 2010 (municipal councils, CSV)
- ČSÚ: Zastupitelstva obcí 2014 (municipal councils, CSV)
- ČSÚ: Zastupitelstva obcí 2018 (municipal councils, CSV)
- ČSÚ: Zastupitelstva obcí 2022 (municipal councils, CSV)
- ČSÚ: Zastupitelstva obcí 2026 (municipal councils, CSV)
- ČSÚ: Senát 1996–2025, cumulative file including by-elections (CSV)
- ČSÚ: Senát 2026 (Senate, CSV)
- ČÚZK: RÚIAN, code list of municipalities and polling districts with history (as of 2026-09, processed by czechdatasets.com)
- Processed by
- czechdatasets.com. The data is modified and is not an official output of the authority; the required attribution is in LICENCE.txt.
Joins with
Datasets share RÚIAN codes and IČO, so one JOIN connects them.


RÚIAN with history
Complete RÚIAN data: Czech parcels, buildings, addresses, streets and territorial units for the whole country. The current state and every version since August 2015, month by month.


Population of municipalities 2000–2026
Population of every Czech municipality as of 1 January 2026 and every 1 January since 2000, by sex and age group. Plus regions, districts, ORP areas and city districts, all with national (RÚIAN) codes.
More datasets
- Address geocoder and autocomplete
- Address risks
- Companies and organisations (RES)
- Job vacancies
- Data boxes
- Medicinal products (SÚKL)
- Medicine shortages and availability
- Pharmacies with opening hours and GPS
- Healthcare facilities (NRPZS)
- Schools and school facilities
- Municipalities in numbers 2000–2025
- Wages by region and industry
- ČSÚ code lists
- Free bundle
Elections 1996–2026 + schools for 390 CZK.
One-time payment, download right after paying, no account and no subscription. Updates to the dataset are included in the price. All 15 paid datasets together cost 2,490 CZK, 3,510 CZK less than buying them one by one.