BDAPIs (Bangladesh) API
Free Bangladesh geography API with no key: all divisions, districts and upazilas with Bengali names and coordinates. Tested curl example and live response included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the BDAPIs (Bangladesh) API?
BDAPIs is a free, key-free API serving Bangladesh's administrative hierarchy — eight divisions, sixty-four districts and the upazilas beneath them — with each name given in both English and Bengali plus a representative coordinate.
Bangladeshi applications routinely need names in both scripts: English for URLs, exports and integrations, Bengali for anything a user reads. BDAPIs returns both on every record, so a district selector can display বরিশাল while the form value stays "Barishal" — without you maintaining a transliteration table that will eventually disagree with itself.
The transliteration question is not academic here. Bangladesh officially renamed several divisions and districts in recent years — Barisal to Barishal, Jessore to Jashore, Comilla to Cumilla — and older datasets still carry the previous spellings. BDAPIs uses the current official forms, so if you are joining to an older table, expect a handful of names not to match and plan a mapping for them.
Quick facts
- Base URL
https://bdapis.com/api/v1.2- Authentication
- No key or account. Open-source community project built from Bangladeshi government administrative data.
- Rate limit
- 100 requests per 15 minutes per IP, reported in the `RateLimit-Limit` and `RateLimit-Remaining` headers.
- Pricing
- Free and open source.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the BDAPIs (Bangladesh) API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. List the administrative divisions of Bangladesh
GET https://bdapis.com/api/v1.2/divisions
curl 'https://bdapis.com/api/v1.2/divisions'const res = await fetch("https://bdapis.com/api/v1.2/divisions");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://bdapis.com/api/v1.2/divisions", timeout=20)
res.raise_for_status()
print(res.json()){
"status": {
"code": 200,
"message": "ok",
"date": "Fri, Aug 21, 2026, 02:01:10 PM"
},
"data": [
{
"division": "Barishal",
"divisionbn": "বরিশাল",
"coordinates": "22.3811, 90.3372"
},
{
"division": "Chattogram",
"divisionbn": "চট্টগ্রাম",
"coordinates": "23.1793, 91.9882"
},
{
"division": "Dhaka",
"divisionbn": "ঢাকা",
"coordinates": "23.9536, 90.1495"
},
{
"division": "Khulna",
"divisionbn": "খুলনা",
"coordinates": "22.8088, 89.2467"
},
{
"division": "Mymensingh",
"divisionbn": "ময়মনসিংহ",
"coordinates": "24.7136, 90.4502"
},
{
"division": "Rajshahi",
"divisionbn": "রাজশাহী",
"coordinates": "24.7106, 88.9414"
},
{
"division": "Rangpur",
"divisionbn": "রংপুর",
"coordinates": "25.8483, 88.9414"
},
{
"division": "Sylhet",
"divisionbn": "সিলেট",
"coordinates": "24.7050, 91.6761"
}
]
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
(divisions) | path | Optional | `/divisions` returns all eight divisions. divisions |
(districts) | path | Optional | `/districts` returns all sixty-four districts. districts |
(by division) | path | Optional | `/districts/{division}` filters districts to one division. Dhaka |
(upazilas) | path | Optional | `/upazilas/{district}` lists the upazilas of a district. Gazipur |
Response fields
status.codeinteger- Application status inside the body, alongside the HTTP status.
status.messagestring- "ok" on success, or a description of what went wrong.
status.datestring- Server timestamp for the response, in a human-readable format rather than ISO 8601.
dataarray- The result list.
data[].division / district / upazilastring- Name in English, using the current official romanisation.
data[].divisionbn / districtbnstring- The same name in Bengali script, ready to display.
data[].coordinatesstring- A representative point as a single "lat, lon" string — text, not numbers, so split and parse it.
What you can build with the BDAPIs (Bangladesh) API
- Build a division → district → upazila selector for a Bangladeshi form
- Display administrative names bilingually without a transliteration table
- Plot divisions or districts roughly on a map from the bundled coordinates
- Validate a Bangladeshi delivery address against official region names
- Normalise older spellings such as Jessore or Comilla to current forms
Common errors and how to fix them
429 Too Many Requests
The 100-per-15-minutes IP quota is exhausted.
Fix: Read `RateLimit-Remaining` and `RateLimit-Reset` from the headers. The dataset is small enough to fetch once and cache indefinitely.
404 on a district or division name
The name is misspelled or uses an older romanisation.
Fix: Use current spellings — Barishal, Jashore, Cumilla — and match the capitalisation returned by the list endpoints.
Coordinates will not parse as numbers
`coordinates` is a single string like "23.9536, 90.1495".
Fix: Split on the comma and trim before converting. There is no separate lat and lon field.
Bengali text renders as boxes
The client or font does not support the Bengali script.
Fix: Ensure the response is read as UTF-8 and the display font covers Bengali. The data itself is correct.
BDAPIs (Bangladesh) API — frequently asked questions
Is BDAPIs free?
Yes, free with no key or account. It is an open-source community project, rate limited to 100 requests per 15 minutes per IP, which is ample given how rarely the data changes.
Does it return Bengali names?
Yes. Every record carries both the English romanisation and the Bengali form, so you can show the local script without maintaining your own transliteration.
How many administrative levels does it cover?
Three: eight divisions, sixty-four districts and the upazilas within each district. Union and ward levels are not included.
How precise are the coordinates?
They are a single representative point per unit, adequate for centring a map or a rough distance estimate. They are not boundaries, so do not use them for point-in-polygon tests.
Tools that pair with this API
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
Coordinate Converter
Convert GPS coordinates between decimal degrees, degrees-minutes-seconds and decimal minutes instantly. Paste any format like 40°26'46"N and copy the result.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
BDAPIs (Bangladesh) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.