Overview
OpenCage is a geocoding API that converts addresses into geographic coordinates (and vice versa) using open data sources including OpenStreetMap. It supports over 2,500 languages and scripts and provides very detailed address components in its responses. The free tier offers 2,500 requests per day, which is plenty for small projects.
Beginner Tip
Use the `countrycode` parameter to restrict results to a specific country (e.g., countrycode=de for Germany) — this dramatically improves accuracy when you know where the address is. Always URL-encode your query string.
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.
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.
{
"status": "success",
"data": {
"result": "Data from OpenCage",
"description": "Forward and reverse geocoding using open data",
"timestamp": "2025-01-15T10:00:00Z"
}
} Field Reference
results Array of geocoding matches ordered by confidence score results[].formatted Full human-readable formatted address of the result results[].geometry Object containing lat and lng decimal coordinates of the location results[].confidence Integer from 1 to 10 indicating match quality; 10 is the most confident results[].components Structured address broken into parts like country, city, postcode, and road rate.remaining Number of API calls remaining in the current 24-hour window Implementation Example
Calls a real endpoint of this API. Replace any placeholder credentials with your own key.
const url = "https://api.opencagedata.com/geocode/v1/json?q=Brandenburg+Gate+Berlin&key=YOUR_API_KEY&limit=1";
// 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.
Metadata Score Breakdown
Estimated from metadata — endpoint not independently tested
Metadata estimate · endpoint not independently tested
Technical Specifications
Related Tags
Alternatives to OpenCage
Technical alternatives for different use cases.
Aggregates multiple geocoding sources for better coverage
Free usage without rate limits
Global geocoding with consistent quality
Similar APIs
View All →Apiip
Apiip is an IP geolocation API that returns detailed location data including city, country, timezone, and currency for any IP address.
Battuta
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.
BigDataCloud
⭐ Beginner's PickBigDataCloud offers a fast and highly accurate IP geolocation API that also includes network security checks and a confidence area metric to indicate how precise the location is.
Bing Maps
Bing Maps (now Azure Maps) is Microsoft's mapping platform that lets you geocode addresses, reverse geocode coordinates, get routes, and embed interactive maps in your applications.
administrative-divisons-db
⭐ Beginner's PickThe Administrative Divisions DB API provides a structured list of all administrative divisions (states, provinces, regions, cities) for countries around the world.