| Item | Details |
|---|---|
| Region | 31 |
| District | 170 |
| Ward | 3,643 |
| Coordinates | ✅ Included (all levels) |
| Formats | JSON, NDJSON, CSV |
| License | CC-BY-4.0 |
| Last Updated | 2026-06-01 |
| Website | openadmindata.org/tz |
| API | openadmindata.org/api/tz |
| # | Region | Districts | Wards | Link |
|---|---|---|---|---|
| 1 | Dodoma | 7 | 189 | Browse |
| 2 | Arusha | 7 | 123 | Browse |
| 3 | Kilimanjaro | 7 | 153 | Browse |
| 4 | Tanga | 10 | 215 | Browse |
| 5 | Morogoro | 7 | 154 | Browse |
| 6 | Pwani | 7 | 111 | Browse |
| 7 | Dar-es-salaam | 3 | 90 | Browse |
| 8 | Lindi | 6 | 136 | Browse |
| 9 | Mtwara | 7 | 149 | Browse |
| 10 | Ruvuma | 6 | 140 | Browse |
| 11 | Iringa | 5 | 93 | Browse |
| 12 | Mbeya | 6 | 154 | Browse |
| 13 | Songwe | 5 | 64 | Browse |
| 14 | Singida | 6 | 124 | Browse |
| 15 | Tabora | 7 | 166 | Browse |
| 16 | Rukwa | 4 | 64 | Browse |
| 17 | Kigoma | 8 | 111 | Browse |
| 18 | Shinyanga | 5 | 118 | Browse |
| 19 | Kagera | 8 | 181 | Browse |
| 20 | Mwanza | 7 | 154 | Browse |
| 21 | Mara | 7 | 154 | Browse |
| 22 | Manyara | 6 | 122 | Browse |
| 23 | Njombe | 6 | 96 | Browse |
| 24 | Katavi | 3 | 42 | Browse |
| 25 | Simiyu | 5 | 111 | Browse |
| 26 | Geita | 5 | 98 | Browse |
| 27 | Kaskazini Unguja | 2 | 65 | Browse |
| 28 | Kusini Unguja | 2 | 61 | Browse |
| 29 | Mjini Magharibi | 2 | 84 | Browse |
| 30 | Kaskazini Pemba | 2 | 59 | Browse |
| 31 | Kusini Pemba | 2 | 62 | Browse |
| File | Format | Description |
|---|---|---|
| all-region.json | JSON | All 31 region records |
| all-district.json | JSON | All 170 district records |
| all-ward.json | JSON | All 3,643 ward records |
| all-flat.json | JSON | Levels 1-2 flat array |
| all-flat.ndjson | NDJSON | Streaming format |
| all-flat.csv | CSV | Spreadsheet format |
| hierarchy.json | JSON | Nested tree |
| schema.json | JSON Schema | Data schema |
import json
with open("data/all-region.json", "r", encoding="utf-8") as f:
data = json.load(f)
for r in data:
print(f"{r['name']['local']} ({r['name']['en']}) — {r['children_count']['district']} districts")import { readFileSync } from "fs";
const data = JSON.parse(readFileSync("data/all-region.json", "utf-8"));
console.log(`Total: ${data.length} regions`);| Field | Type | Description |
|---|---|---|
id |
string | Unique identifier |
level |
integer | 1=region, 2=district, 3=ward |
level_name |
object | Level label (local + English) |
name.local |
string | Name in local script |
name.en |
string | English name |
name.slug |
string | URL-safe slug |
parent |
object/null | Parent division reference |
ancestors |
array | Full ancestor chain |
children_count |
object | Count of children per level |
zip_codes |
array | Postal codes (where available) |
geo.lat |
string | Latitude (WGS84) |
geo.lon |
string | Longitude (WGS84) |
Full schema: data/schema.json
divisions/{region-slug}/
divisions/{region-slug}/{district-slug}/
Wards are listed inline in each district's README.
- llms.txt — Quick reference for AI agents
- llms-full.txt — Summary with per-region links
- Per-region data — Full data by region
Tanzania Administrative Divisions Dataset (CC-BY-4.0)
URL: https://github.com/open-admin-data/tanzania-administrative-divisions
See CITATION.cff for machine-readable citation.
- Data: CC-BY-4.0
- Open Admin Data — Browse, search and explore administrative divisions for every country
- open-admin-data — GitHub organization with all country repos
- ListBase — Structured reference data for every country