Geocoding — entry 059 of 80

OpenCage

Verified Jul 2026

OpenCage aggregates dozens of open geocoding datasets (OpenStreetMap among them) behind a single forward/reverse geocoding API, returning results as JSON, GeoJSON, or XML. Every request needs an API key, and the free tier — 2,500 requests/day at up to 1 per second — is explicitly marked for testing only, not production traffic. Paid plans start at €45/month for 10,000 requests/day and scale to enterprise-custom volumes.

geocodingreverse-geocodingopen-datafreemiumaddress-lookup
AuthenticationAPI KeySign up with the provider to obtain credentials.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreemiumA usable free tier exists, with paid plans for more volume.
FormatsJSON, GeoJSON, XMLResponses can be requested as JSON or GeoJSON or XML.

GreatAPIs Score

Score87out of 100
Authentication15/25API key required
Pricing17/20Freemium tier available
Docs20/20Machine-readable spec file bundled
Formats15/15Supports 3 response formats
Freshness20/20Verified within 6 months

Embed this badge

Scored 87 on greatapis.com
<a href="https://greatapis.com/api/opencage/"><img src="https://greatapis.com/badge/opencage.svg" alt="Scored 87 on greatapis.com"></a>

Auth quickstart

  1. Get a key at the provider
  2. Send it on every request as a headerAuthorization: <key>
  3. The exact header isn't documented — Authorization is a common default; confirm in the provider's docs.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://api.opencagedata.com/geocode/v1
Auth
ApiKeyAuth
Geocoding3

Convert address into coordinates (latitude, longitude) and relevant location information

GET/geojsonrequest a GeoJSON geocoding response
Parameters
NameInRequiredType
qqueryyesstring
address_onlyquerynoboolean
add_requestquerynoboolean
boundsquerynostring
countrycodequerynostring
languagequerynostring
limitquerynointeger
no_annotationsquerynoboolean
no_dedupequerynoboolean
no_recordquerynoboolean
prettyquerynoboolean
proximityquerynostring
roadinfoquerynoboolean
Responses
StatusDescriptionSchema
200OKGetGeojson200ResponseBody
400Invalid requestResponse
401Unable to authenticateResponse
402Valid request but quota exceededResponse
403ForbiddenResponse
404Invalid API endpointResponse
405Method not allowedResponse
408Timeout; you can try againResponse
410Request too longResponse
426Upgrade requiredResponse
429Too many requestsResponse
500Internal server errorResponse
503Internal server errorResponse
GET/jsonrequest a JSON geocoding response
Parameters
NameInRequiredType
qqueryyesstring
abbrvquerynoboolean
address_onlyquerynoboolean
add_requestquerynoboolean
boundsquerynostring
countrycodequerynostring
languagequerynostring
limitquerynointeger
no_annotationsquerynoboolean
no_dedupequerynoboolean
no_recordquerynoboolean
prettyquerynoboolean
proximityquerynostring
roadinfoquerynoboolean
Responses
StatusDescriptionSchema
200OKResponse
400Invalid requestResponse
401Unable to authenticateResponse
402Valid request but quota exceededResponse
403ForbiddenResponse
404Invalid API endpointResponse
405Method not allowedResponse
408Timeout; you can try againResponse
410Request too longResponse
426Upgrade requiredResponse
429Too many requestsResponse
500Internal server errorResponse
503Internal server errorResponse
GET/xmlrequest an XML geocoding response
Parameters
NameInRequiredType
qqueryyesstring
abbrvquerynoboolean
address_onlyquerynoboolean
add_requestquerynoboolean
boundsquerynostring
countrycodequerynostring
languagequerynostring
limitquerynointeger
no_annotationsquerynoboolean
no_dedupequerynoboolean
no_recordquerynoboolean
prettyquerynoboolean
proximityquerynostring
roadinfoquerynoboolean
Responses
StatusDescriptionSchema
200OKResponse
400Invalid requestResponse
401Unable to authenticateResponse
402Valid request but quota exceededResponse
403ForbiddenResponse
404Invalid API endpointResponse
405Method not allowedResponse
408Timeout; you can try againResponse
410Request too longResponse
426Upgrade requiredResponse
429Too many requestsResponse
500Internal server errorResponse
503Internal server errorResponse
Health1

API connectivity test

GET/pingcheck API health and connectivity
Responses
StatusDescriptionSchema
200API is reachable

Try it

Developer reference

Base URLhttps://api.opencagedata.com/geocode/v1
Rate limit

Free tier: 2,500 requests/day, max 1 request/second

Key endpoints
  • GET/json
  • GET/geojson

Changelog

Spec version1.1.0
Tracked paths4
  • Aug 2026gained an OpenAPI spec and a status page

Tracking since Sep 2026. See every tracked change ↗ ·Subscribe with RSS ↗