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 21 Aug 2026
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 21 Aug 2026, 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.
Alternatives to BDAPIs (Bangladesh) API
If BDAPIs (Bangladesh) does not fit, these geolocation & ip apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| ipify | ipify is a free, unlimited API that returns your public IP address as text, JSON or JSONP. No key, no rate limit, IPv4 and IPv6 endpoints. Live curl example. | No key | Yes | 19 Aug 2026 |
| ip-api.com | Free IP geolocation API returning country, city, coordinates, timezone and ISP for any IP. No key on the free tier, 45 requests per minute. Tested curl example. | No key | Yes | 19 Aug 2026 |
| ipwho.is | Free IP geolocation API with HTTPS and no API key. Returns country, city, coordinates, timezone, currency and connection data. 10,000 requests/month free. | No key | Yes | 19 Aug 2026 |
| Nominatim (OpenStreetMap) | Free OpenStreetMap geocoding API: convert addresses to coordinates and back. No API key, open data, 1 request per second. Tested curl example and usage policy. | No key | No | 19 Aug 2026 |
| BigDataCloud Reverse Geocode | Free client-side reverse geocoding API with no key: turn latitude and longitude into locality, city, country and administrative areas. Unlimited. Tested. | No key | Yes | 19 Aug 2026 |
| Cartes.io | Free collaborative mapping API with no key: read public maps and their markers, or create maps anyone can pin to. Tested read-only example and live response included. | No key | Yes | 21 Aug 2026 |
BDAPIs (Bangladesh) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 21 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.