Battuta API

Geocoding / API Key Intermediate HTTP
Varies by plan (check documentation)

Overview

Battuta is a hierarchical location API that lets you browse countries, regions, and cities in a cascade, making it easy to build location pickers with dependent dropdowns. It requires a free API key and uses HTTP (not HTTPS), so avoid sending sensitive data with it. It is useful for populating geographic form fields with structured, navigable location data.

💡

Beginner Tip

The API works in a top-down cascade: first query countries, then use the returned country code to get regions, and finally use the region code to list cities. Each level filters the next.

Available Data

country name and code
population
capital city
region and subregion
flag image URL

Example Response

JSON Response
{
  "name": "Japan",
  "capital": "Tokyo",
  "population": 125800000,
  "region": "Asia",
  "languages": [
    "Japanese"
  ],
  "flag": "https://flagcdn.com/jp.svg",
  "currencies": [
    {
      "code": "JPY",
      "name": "Japanese yen"
    }
  ]
}

Field Reference

name Name of the country, region, or city depending on the endpoint queried.
code ISO or regional code for the location, used to query the next level in the cascade.
region Name of the parent region when querying cities.

Implementation Example

const url = "http://battuta.medunes.net/";
// Replace headers or query params with the values required by this API.
const response = await fetch(url, {
  headers: {
  "X-API-Key": "YOUR_API_KEY"
  }
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();
console.log(data);

What Can You Build?

Note: These code examples are AI-generated and unverified. Always refer to the official API documentation for accurate usage.

Common Errors & Troubleshooting

Empty response or no data The API key is missing from the request URL.
Register at battuta.medunes.net to get a free API key and pass it as ?key=YOUR_KEY.
HTTP instead of HTTPS The Battuta API does not support HTTPS connections.
Use http:// in your request URL. Do not send any sensitive user data through this API for that reason.
CORS blocked in browser The API does not return CORS headers that allow browser requests from other origins.
Proxy the request through your backend server rather than calling the API directly from a frontend JavaScript file.

Matrix Score Breakdown

🌐 Reachability 0/30
⚡ Speed 10/20
🔒 Security 0/15
🛠 Developer XP 12/20
✓ Reliability 0/15

Partially tested on Apr 5, 2026

Technical Specifications

Auth API Key
HTTPS NO
CORS UNKNOWN
Category Geocoding
Difficulty Intermediate
Verified: 2026-04-04

Similar APIs

View All →