Ukrainian Administrative-Territorial Classification Codes (KOATUU & KATOTTG)
A public reference dataset of Ukrainian administrative-territorial codes: KOATUU (legacy, essential for historical data) and KATOTTG (current, effective since 2020). Contains both active and inactive (cancelled/renamed) codes — critical for working with historical records.
Disclaimer: This is NOT an official government registry. The dataset is compiled from publicly available sources and is not affiliated with any Ukrainian government agency.
KOATUU (Класифікатор об'єктів адміністративно-територіального устрою України) is the legacy Ukrainian classification system for administrative-territorial units. KATOTTG (Класифікатор адміністративно-територіальних одиниць та територій територіальних громад) is the current system introduced in 2020. This dataset provides structured, machine-readable data for both systems.
| Attribute | Value |
|---|---|
| KOATUU records | ~48,700 |
| KATOTTG records | ~31,993 |
| Hierarchy levels | 1–5 |
| Regions (oblasts + special units) | 27 |
| Active + inactive codes | yes |
| File formats | Apache Parquet (Snappy), CSV |
| Distribution | GitHub Releases |
| File | Description | Rows | Code format |
|---|---|---|---|
koatuu.csv / koatuu.parquet |
Legacy classification (ДК 014-97) | ~48,700 | 10-digit numeric (e.g. 0100000000) |
katottg.csv / katottg.parquet |
Current classification (since 2020) | ~31,993 | UA-prefixed (e.g. UA01020010010075540) |
| Level | Description | Approx. Count |
|---|---|---|
| 1 | Oblast / Autonomous Republic / Special city | 27 |
| 2 | Raion / City of oblast significance | ~740 |
| 3 | Council / City district / Urban-type settlement group | ~12,900 |
| 4 | Settlement (village, town, city district, etc.) | ~35,000 |
| 5 | Sub-settlement unit (rare) | varies |
| Code | Ukrainian | English | Approx. Count |
|---|---|---|---|
| С | село | village | ~33,600 |
| Щ | селище | settlement | ~1,370 |
| Т | селище міського типу | urban-type settlement | ~930 |
| М | місто | city / town | ~460 |
| Р | район у місті | city district | ~120 |
Both datasets share the same 11-column schema:
| Column | Type | Description |
|---|---|---|
code |
string | Classification code (KOATUU: 10-digit numeric; KATOTTG: UA-prefixed) |
name |
string | Name of the administrative unit (Ukrainian) |
level |
integer | Hierarchy level (1–5) |
region |
string | Oblast name |
full_address |
string | Full hierarchical path |
parent_code |
string | Parent unit's code |
district |
string | Raion (district) name |
council |
string | Council/rada name |
category |
string | Settlement category code (С/Щ/Т/М/Р) |
category_name |
string | Settlement category name (Ukrainian) |
settlement |
string | Settlement name (supplementary) |
Full schema with constraints: schema/schema.json | schema/schema.md
- Contains KOATUU (10-digit codes, legacy system) and KATOTTG (UA-prefixed codes, current system since 2020)
- Includes both active and cancelled codes (critical for historical data work)
- Hierarchical structure: область → район → громада → населений пункт
- Compiled from public sources (data.gov.ua and other official publications) and manually enriched
- data.gov.ua — the primary source for KOATUU and KATOTTG classifiers
- State Statistics Service of Ukraine (Державна служба статистики України) — official KOATUU classifier (ДК 014-97)
- See
docs/METHODOLOGY.mdfor details.
Data is distributed as Apache Parquet (Snappy) and CSV files via GitHub Releases. Data files are NOT stored in the Git repository.
import pandas as pd
# Load KOATUU
df_koatuu = pd.read_csv("koatuu.csv", dtype={"code": str, "parent_code": str})
# Load KATOTTG
df_katottg = pd.read_csv("katottg.csv", dtype={"code": str, "parent_code": str})
# From Parquet (recommended)
df_koatuu = pd.read_parquet("koatuu.parquet")
df_katottg = pd.read_parquet("katottg.parquet")
# Filter by level
oblasts = df_koatuu[df_koatuu["level"] == 1]
settlements = df_koatuu[df_koatuu["level"] == 4]
# Villages
villages = df_koatuu[df_koatuu["category"] == "С"]library(readr)
df_koatuu <- read_csv("koatuu.csv", col_types = cols(
code = col_character(),
parent_code = col_character()
))
df_katottg <- read_csv("katottg.csv", col_types = cols(
code = col_character(),
parent_code = col_character()
))const Papa = require("papaparse");
const fs = require("fs");
const csv = fs.readFileSync("koatuu.csv", "utf8");
const { data } = Papa.parse(csv, { header: true, skipEmptyLines: true });- Dataset includes both active and inactive codes
- See
docs/DATA_QUALITY_REPORT.mdfor a full quality assessment
If you use this dataset in research or publications, please cite it as:
Klimnyk, M. (2026). UA Administrative Codes: Ukrainian Administrative-Territorial
Classification Codes (KOATUU & KATOTTG).
https://doi.org/10.5281/zenodo.18863103
See CITATION.cff for machine-readable citation metadata.
Creative Commons Attribution 4.0 International (CC BY 4.0)
The underlying classifiers (KOATUU, KATOTTG) are publicly available standards. This dataset — including structural normalization and documentation — is made available under CC BY 4.0.
This project is sponsored by automoto.ai.
- Website: klimnyk.dev/en
- GitHub: @mykhailoklimnyk
- ORCID: 0009-0005-5463-6981
- Email: mykhailo.klimnyk@gmail.com