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

The kind of data this API exposes, based on its documentation. We could not call the endpoint to confirm the exact field names.

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

Example Response

Illustrative shape only — we were not able to call this endpoint (it requires credentials or exposes no public sample URL), so the fields below show the kind of data this API returns rather than a recorded response.

JSON Response · Illustrative
{
  "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

Calls a real endpoint of this API. Replace any placeholder credentials with your own key.

Request
const url = "http://battuta.medunes.net/api/country/all/?key=YOUR_API_KEY&callback=";
// 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

Generated guidance based on this API's documentation, not observed by us. Treat it as a starting point and check against the provider's own error reference.

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.

Metadata Score Breakdown

Estimated from metadata — endpoint not independently tested

This score is estimated from observable metadata — HTTPS support, authentication model, declared CORS, and documentation reachability — because the API requires authentication or exposes no publicly testable endpoint. The five-signal breakdown is only shown for live-tested APIs.

Metadata estimate · endpoint not independently tested

Technical Specifications

Auth API Key
HTTPS NO
CORS UNKNOWN
Category Geocoding
Difficulty Intermediate
Listing details not endpoint-verified

Related Tags

Similar APIs

View All →