Czech job vacancies with employer IČO and daily history
Some 37 thousand postings and 100 thousand vacancies from the Czech Labour Office in one table: occupation (CZ-ISCO), wage range, hours, shifts, required education, the employer’s company ID (IČO) and the workplace with address point code and GPS. Plus a daily history the state does not keep: when each posting was open.
One-time payment, final price for a personal licence, switch to business at checkout · data as of 10 November 2026


How much work it saves
Saving the export of MPSV, the Czech ministry of labour, every day, parsing 186 MB of nested JSON, expanding 13 code lists into text and checking address point codes against RÚIAN, the Czech register of addresses, buildings, parcels and territorial units (95% of the establishment addresses of legal entities have GPS). Then separating legal entities from natural persons with the help of RES, the register of economic entities of the Czech Statistical Office (ČSÚ), and assembling the history of postings from the snapshots. Contact persons, e-mails, phone numbers and free text are not in the dataset, and neither are postings by natural persons (only their summary counts).
Measured on our own build
- Lines of code and tests
- 2,088
- AI agent tokens
- 22m
- AI agent run time
- 62 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
- 10 November 2026
- Rows
- 186,364
- Tables
- 10
- Formats
- PostgreSQL, Parquet, CSV, JSON
- Source licence
- Free use (NKOD); RES and RÚIAN CC BY 4.0
What’s inside
Job vacancies from the register of the Labour Office of the Czech Republic, posted by employers that are legal entities: occupation by CZ-ISCO, wage range, working hours, shift pattern, required education, the employer’s IČO and the workplace with a RÚIAN address point code and coordinates. Plus a daily history of postings, which the source does not keep, and summary counts for the whole source. No contact persons and no free text; postings by employers who are natural persons are not in the dataset.
| Table | Rows |
|---|---|
volna_mistaJob vacancies from the latest snapshot: one row = one posting (it may offer several vacancies) | 36,836 |
volna_mista_okresyDistricts of the place of work: every posting with a known district has at least one row; a posting given as a list of districts has one row per district | 66,819 |
volna_mista_jazykyRequired language skills (row = posting × language) | 2,463 |
volna_mista_dovednostiRequired skills from the MPSV code list, e.g. a driving licence or a welder’s certificate (row = posting × skill) | 7,207 |
volna_mista_vyhodyBenefits offered, from the MPSV code list (row = posting × benefit) | 17,413 |
zamestnavateleEmployers that are legal entities verified in RES and had a posting in any snapshot. No natural persons here | 16,250 |
volna_mista_historieHistory of postings from all daily snapshots: one row = one posting, the first and the last snapshot in which it was seen, and key attributes from its last occurrence | 37,225 |
snimkyDaily snapshots of the source that the dataset is built from: counts of postings and vacancies in the source, in the dataset and left out (postings by natural persons and by unverified employers are not in the dataset), additions and removals | 2 |
snimky_okresyCounts of postings and vacancies by district in each snapshot: in the source, in the dataset and left out (natural persons and unverified employers together) | 154 |
cz_iscoThe CZ-ISCO classification of occupations from the MPSV code list, all five levels with a link to the parent code | 1,995 |
The register contains only the vacancies that employers have reported to the Labour Office; it is not the whole labour market. The history starts on 9 November 2026 and grows every day.
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 | 25 kB |
| ParquetOne file per table (zstd). DuckDB, Polars and pandas read it without an import. | 10 | 3.2 MB |
| CSVUTF-8, comma-separated, with a header; large tables as .csv.gz | 10 | 12 MB |
| JSONAn array of objects; large tables as JSON Lines (.jsonl.gz) | 10 | 27 MB |
Code example
More examples for SQL, DuckDB, Python and Node.js are in the README.md inside the bundle.
-- kdo teď nabírá nejvíc lidí
SELECT ico, nazev, pravni_forma, pocet_nabidek, pocet_mist
FROM volna_mista.zamestnavatele
ORDER BY pocet_mist DESC LIMIT 20;-- medián nabízené měsíční mzdy podle profese v okrese Brno-město (3702)
SELECT v.profese_kod, v.profese, count(*) AS nabidek, sum(v.pocet_mist) AS mist,
percentile_cont(0.5) WITHIN GROUP (ORDER BY v.mzda_od) AS median_mzda_od
FROM volna_mista.volna_mista v
JOIN volna_mista.volna_mista_okresy o USING (id)
WHERE o.okres_kod = 3702 AND v.typ_mzdy_kod = 'mesic' AND v.mzda_od >= 5000
GROUP BY 1, 2 HAVING count(*) >= 5
ORDER BY median_mzda_od DESC;-- se sadou firmy: v jakých oborech (CZ-NACE) se nabírá v Jihomoravském kraji
SELECT f.nace_hlavni, count(DISTINCT v.ico) AS firem, sum(v.pocet_mist) AS mist
FROM volna_mista.volna_mista v
JOIN firmy.firmy f USING (ico)
WHERE v.kraj_kod = 116
GROUP BY 1 ORDER BY mist DESC LIMIT 15;Source and licence
- Sources
- MPSV / Úřad práce ČR: Volná místa za celou ČR (job vacancies for the whole country; JSON, daily)
- NKOD: Volná místa za celou ČR (terms of use)
- MPSV: open data code lists (CZ-ISCO, shift patterns, education, Labour Office contact points…)
- ČSÚ: Registr ekonomických subjektů (legal form of employers)
- ČÚZK: RÚIAN (address points and territorial units, as of 2026-09), via czechdatasets.com ruian
- 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.


Companies and organisations (RES)
Czech companies and organisations by IČO (the company ID), from the register of economic entities (RES): legal form, CZ-NACE activities, size and registered office address with GPS. No natural persons.


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.


ČSÚ code lists
List of Czech municipalities, regions, districts and ORP areas with their official codes, plus CZ-NACE, CZ-ISCO, CZ-CPA, CZ-NUTS, legal forms and countries with ISO codes. All versions merged into validity intervals.
More datasets
- Address geocoder and autocomplete
- Address risks
- Data boxes
- Medicinal products (SÚKL)
- Medicine shortages and availability
- Pharmacies with opening hours and GPS
- Healthcare facilities (NRPZS)
- Schools and school facilities
- Election results 1996–2026
- Municipalities in numbers 2000–2025
- Wages by region and industry
- Population of municipalities 2000–2026
- Free bundle
Job vacancies with history 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.