Skip to content
czechdatasets

Czech geocoder, autocomplete and address database with GPS

Autocomplete, geocoder and reverse geocoder for all 3,022,397 Czech addresses with postal codes. Runs in your PostgreSQL, Meilisearch or Typesense: no paid API, no data sent to a third party.

Free sample

One-time payment, final price for a personal licence, switch to business at checkout · data as of September 2026

An island with a small village, streets at right angles and red map pins at the individual housesAn island with a small village, streets at right angles and red map pins at the individual houses

How much work it saves

Address normalisation (diacritics, abbreviations, typos, “Praha 10”, registration numbers written as “č. ev.”, municipalities without streets), search indexes and SQL functions. Tested on 51 hand-written and 500 random queries; median response time in PostgreSQL 0.93 ms.

Measured on our own build

Lines of code and tests
1,184

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
September 2026
Rows
3.2m
Tables
3
Bundle contents
3 tables: adresy, mista, slova; plus Meilisearch, Typesense
Formats
PostgreSQL, Parquet, CSV, JSON
Source licence
CC BY 4.0 (ČÚZK)

What’s inside

Self-hosted address autocomplete, geocoder and reverse geocoder over every address in RÚIAN, the Czech register of addresses, buildings, parcels and territorial units: PostgreSQL functions (PostGIS + pg_trgm), exports for Meilisearch and Typesense, CSV/Parquet/JSON.

TableRows
adresy3,022,397
mista102,566
slova29,952

Downloads

Every format contains the same data. Download only the one you need; verify its integrity with the SHA256SUMS file.

FormatFilesSize
PostgreSQLschema.sql with types, keys, indexes and comments, and import.sh, which loads the data from CSV338 kB
ParquetOne file per table (zstd). DuckDB, Polars and pandas read it without an import.390 MB
CSVUTF-8, comma-separated, with a header; large tables as .csv.gz389 MB
JSONAn array of objects; large tables as JSON Lines (.jsonl.gz)3101 MB
Also in the bundleFilesSize
MeilisearchJSONL documents and index settings with synonyms291 MB
TypesenseJSONL documents, collection schema and synonyms3102 MB
  • In preparation Geocoder for MySQL and SQLite: Address autocomplete and validation without PostgreSQL too, with a PHP library.
  • In preparation Address autocomplete API: A hosted HTTP API on top of the geocoder, with no database of your own.
  • In preparation Shoptet and WooCommerce plugins: Address autocomplete and checking right in the online shop checkout.
  • In preparation Postcodes of municipalities and post offices: A list of postcodes with municipality, municipality part and post office, derived from RÚIAN.

Code example

More examples for SQL, DuckDB, Python and Node.js are in the README.md inside the bundle.

Autocomplete and geocodingPostgreSQL
-- našeptávač (dotaz, limit = 10, obec_kod = NULL)
SELECT * FROM geokoder.naseptej('lidicka 7 brno');
--  adresni_misto_kod |               adresa               |    lat    |    lon     | skore
--           19173512 | Lidická 694/7, Veveří, 602 00 Brno | 49.200919 | 16.6073906 | 1

-- geokódování jedné adresy: nejlepší shoda + jistota 0..1 + typ shody
SELECT * FROM geokoder.geokoduj('Lázně č.ev. 100, Hlinsko');
--  adresni_misto_kod |              adresa              |    lat     |    lon     | jistota | shoda
--            5393337 | Lázně č. ev. 100, 539 01 Hlinsko | 49.7453181 | 15.9115943 |       1 | adresa

Source and licence

Processed by
czechdatasets.com. The data is modified and is not an official output of the authority; the required attribution is in LICENCE.txt.

Addresses with GPS + geocoder for 690 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.