Uganda's open data,
ready to use
Official data on every region, district, parish and village, with census figures, schools and constituencies. Browse it here, download it as CSV or JSON, or call the API.
6 datasets from 5 public institutions
Every dataset can be explored here, called through the API, or downloaded as CSV or JSON.
Census 2024
Population by sex and households for districts, counties, sub-counties and parishes.
161 districts · 2,000 sub-counties · 9,750 parishes
Higher education
Licensed universities and tertiary institutions, with websites and email domains.
626 institutions · 43 with websites
Linked codes
ISO 3166-2 codes, humanitarian P-codes, and Wikidata, OpenStreetMap and GeoNames ids.
2,078 links across 5 code systems
Questions you can answer
Each chart is built from the data on this site. Open it, or take the numbers behind it.
- Wakiso
- 3.41M
- Kampala
- 1.80M
- Yumbe
- 945K
- Mukono
- 929K
- Nasana Municipal Council
- 692K
- Luweero
- 616K
UBOS NPHC 2024. District figures include the municipalities inside them.
UBOS villages; Ministry of Education and Sports government schools.
- 10,289
- Sub-county councils
- 2,200
- District councils
- 842
- Municipality councils
Electoral Commission, 2025 demarcation.
Use the data your way
Download complete files
CSV for every dataset, with a data package, checksums and a dated copy of each release.
Build with the API
JSON:API, plain JSON or CSV on every list. OpenAPI 3.1 and an llms.txt for AI agents. No key needed to start.
# Every village in Lamwo district curl -g 'https://opendata.ssmusoke.dev/api/v1/villages?filter[district]=91&format=json'
// Every village in Lamwo district
$rows = json_decode(file_get_contents(
'https://opendata.ssmusoke.dev/api/v1/villages?filter[district]=91&format=json'
), true);
// Every village in Lamwo district
$rows = Http::get('https://opendata.ssmusoke.dev/api/v1/villages', [
'filter' => [
'district' => 91,
],
'format' => 'json',
])->json();
# Every village in Lamwo district
import requests
rows = requests.get(
"https://opendata.ssmusoke.dev/api/v1/villages",
params={"filter[district]": 91, "format": "json"},
).json()
// Every village in Lamwo district const rows = await fetch( "https://opendata.ssmusoke.dev/api/v1/villages?filter[district]=91&format=json" ).then((r) => r.json());