Divisions, districts, upazilas, unions, city corporations, wards & thanas — all in one TypeScript-ready npm package with zero dependencies.
Zero dependencies. Works in Node.js, React, Next.js, and any TypeScript project.
Every level linked by consistent IDs — easy to traverse in any direction.
divisionId.Select division → district → upazila to see the data structure in real time.
Every function returns fully typed objects. Works perfectly with autocomplete.
import { getAllDivisions, getDivisionById, getDistrictsByDivision, getDivisionWithDistricts } from "bangladesh-geo-data"; // All 8 divisions const divisions = getAllDivisions(); // Dhaka division const dhaka = getDivisionById("div-01"); // All districts in Dhaka const districts = getDistrictsByDivision("div-01"); // Division + nested districts const withDist = getDivisionWithDistricts("div-01");
import { getUnionsByUpazila, getUnionsByPostalCode, getFullLocationByUnion } from "bangladesh-geo-data"; // All unions in an upazila const unions = getUnionsByUpazila("upa-001"); // By postal code const postal = getUnionsByPostalCode("1350"); // Full 4-level hierarchy const loc = getFullLocationByUnion("uni-0001"); // → { division, district, upazila, union }
import { getCityCorporationByShortName, getCityCorporationWithWards, getWardByNumber, getFullUrbanLocationByWard } from "bangladesh-geo-data"; // By short name const dncc = getCityCorporationByShortName("DNCC"); // With all 54 wards const full = getCityCorporationWithWards("cc-01"); // Specific ward by number const w14 = getWardByNumber("cc-03", 14);
import { getRuralThanas, getMetropolitanThanas, getThanasByType, getThanasByCityCorporation, getThanaWithDetails } from "bangladesh-geo-data"; // 495 rural thanas const rural = getRuralThanas(); // 110 metro thanas const metro = getMetropolitanThanas(); // DMP thanas (50 stations) const dmp = getThanasByCityCorporation("cc-01");
import { searchUnions, searchUpazilas, searchDistricts, searchThanas, searchWards } from "bangladesh-geo-data"; // English search searchUpazilas("Dhaka"); searchThanas("Mirpur"); searchWards("Pahartali"); // Bengali search searchDistricts("সিলেট"); searchUnions("সুবিল");
import type { Division, District, Upazila, Union, CityCorpration, Ward, Thana, ThanaType, FullLocation, FullUrbanLocation, ThanaWithDetails } from "bangladesh-geo-data"; // ThanaType union type type ThanaType = | "rural" | "sub-district" | "metropolitan";
The 639 thanas are structured across three distinct categories reflecting real police jurisdiction types.
upazilaId
| Level | Pattern | Example | Count |
|---|---|---|---|
| Division | div-XX | div-01 | 8 |
| District | dis-XX | dis-17 | 64 |
| Upazila | upa-XXX | upa-001 | 495 |
| Union | uni-XXXX | uni-0001 | 4,599 |
| City Corporation | cc-XX | cc-01 | 12 |
| Ward | ward-XXXX | ward-0112 | 462 |
| Thana | tha-XXXX | tha-0530 | 639 |