Skip to content
czechdatasets

Pharmacies in the Czech Republic with opening hours and GPS

All 2,682 Czech pharmacies and dispensing points on the official list: type, emergency service, mail order, e-prescriptions and opening hours by day as a table. Each has a municipality code and 99.6% an address point code and coordinates the source lacks.

Free sample

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

You are buying the Medicines, medicine shortages, pharmacies and healthcare providers bundle. It also includes: Medicinal products (SÚKL), Healthcare facilities (NRPZS), Medicine shortages and availability.

An island with a village pharmacy and a health centre with a green cross and a herb gardenAn island with a village pharmacy and a health centre with a green cross and a herb garden

How much work it saves

Converting the list of SÚKL, the Czech medicines agency, from cp1250 and removing its 11 test records. Splitting the address out of a single field and matching it to RÚIAN, the Czech register of addresses, buildings, parcels and territorial units (2,671 of 2,682 pharmacies, cross-checked against NRPZS, the national register of healthcare providers). Converting 20,276 rows of working hours into times with closed and non-stop flags, unifying phone numbers, e-mails and websites, and adding the operator’s name and legal form from RES, the register of economic entities of the Czech Statistical Office (ČSÚ).

Measured on our own build

Lines of code and tests
1,107
AI agent tokens
16m
AI agent run time
36 mins

Tokens and time cover the first working version of the code, written with Claude Fable 5.2. Not counted: researching sources and licences, quality checks and later fixes.

  • Free sample: all tables cut down to the Kutná Hora area, in CSV and Parquet. Download the sample
Data as of
1 November 2026
Rows
30,772
Tables
5
Formats
PostgreSQL, Parquet, CSV, JSON
Source licence
SÚKL terms, commercial use allowed; addresses CC BY 4.0 (ČÚZK)

What’s inside

The list of pharmacies and detached medicine-dispensing units kept by SÚKL: pharmacy type, emergency service, mail-order dispensing, eRecept (the Czech e-prescription system), opening hours by day as a table, operator (legal entities), address linked to RÚIAN and WGS84 coordinates. Pharmacies run by natural persons come without the operator’s identity and without contacts.

TableRows
lekarnyPharmacies and detached medicine-dispensing units (OOVL)2,682
oteviraci_dobaPharmacy opening hours: row = pharmacy × day × continuous interval (a break = two intervals)20,221
typy_lekarenSÚKL code list of pharmacy types16
provozovatelePharmacy operators: legal entities only (natural persons are not included). Name and legal form from RES897
kontaktyAll contacts of pharmacies run by legal entities, after validation (a pharmacy may have several phone numbers, e-mails, websites). Pharmacies of natural persons are not here6,956

The names of the chief pharmacists are not in the dataset. The 246 pharmacies run by a natural person keep their location, type and opening hours, but have no IČO (the Czech company ID number), operator or contacts. The source is a monthly snapshot without history.

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 CSV211 kB
ParquetOne file per table (zstd). DuckDB, Polars and pandas read it without an import.5378 kB
CSVUTF-8, comma-separated, with a header; large tables as .csv.gz52.6 MB
JSONAn array of objects; large tables as JSON Lines (.jsonl.gz)56.8 MB

Code example

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

Open on Sunday eveningPostgreSQL
-- lékárny, které mají otevřeno v neděli ve 20:00, s adresou a GPS
SELECT l.nazev, l.ruian_adresa, l.lat, l.lon, o.otevreno_od, o.otevreno_do
FROM lekarny.lekarny l JOIN lekarny.oteviraci_doba o USING (kod_pracoviste)
WHERE o.den_cislo = 7 AND NOT o.zavreno
  AND (o.nepretrzite OR (TIME '20:00' >= o.otevreno_od AND TIME '20:00' < o.otevreno_do));
Pharmacies nearest to a pointPostgreSQL
-- deset nejbližších lékáren k bodu (Brno, náměstí Svobody), vzdálenost v km
SELECT nazev, ruian_adresa,
       round((6371 * acos(least(1, cos(radians(49.1951)) * cos(radians(lat)) * cos(radians(lon) - radians(16.6068))
                                   + sin(radians(49.1951)) * sin(radians(lat)))))::numeric, 2) AS km
FROM lekarny.lekarny WHERE lat IS NOT NULL ORDER BY km LIMIT 10;
Pharmacies and emergency service by regionDuckDB
-- počet lékáren a lékáren s pohotovostí podle krajů
SELECT kraj_nazev, count(*) AS lekaren, count(*) FILTER (WHERE pohotovost) AS s_pohotovosti,
       round(avg(hodin_tydne), 1) AS prumer_hodin_tydne
FROM 'parquet/lekarny.parquet' GROUP BY 1 ORDER BY 2 DESC;

Medicines, medicine shortages, pharmacies and healthcare providers for 490 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.