Migration

Migrating from OpenCage

OpenCage earned its following by making geocoding approachable: a single key parameter, a JSON response with a results array, and a components object breaking an address down into fields like road, city, and country. It blends data from several open sources rather than running its own proprietary dataset, which is part of why developers who value transparency about where their location data comes from tend to gravitate toward it.

Migrating away from a provider chosen partly for its simplicity raises a fair question: does the new option keep things that simple. The honest answer depends on what you compare against. A general-purpose account signup with a billing form is a different experience than dropping a key into a header, and it is worth checking which one you are actually replacing.

My Geocode's OpenCage compatibility host reproduces the results array and the components breakdown that OpenCage returns, with the copyright, terms, and privacy text being the only part that changes. The field-level reference lives at /compatibility/opencage/. For most integrations, this means updating the request host and the key value, while the code that reads results[0].components.city or results[0].formatted keeps functioning as written.

Authentication on our side accepts an X-API-Key header, an Authorization: Bearer header, HTTP Basic auth, or a query parameter, so a client that already sends its OpenCage key as a query string parameter will generally keep working with a new key value and nothing else changed in the request logic.

The free tier is a meaningful part of this comparison for anyone who chose OpenCage for its accessibility to small projects and side builds. My Geocode offers 2,500 requests a day free from any address with no key required at all, and every key also gets 2,500 free requests a day counted per network, shared between keyless and keyed use from that same network. Beyond that, pricing is prepaid credit at €0.0001 per request or an Unlimited key at €50 a month, with every endpoint, including every compatibility host, priced the same.

One thing worth testing directly rather than assuming: annotations. If your OpenCage integration reads extra annotation fields such as timezone or currency information bundled into the geocoding response, check the compatibility host's documented fields against what your parsing code expects, since some of that detail may need to come from a dedicated endpoint instead, like My Geocode's own timezone lookup, rather than being embedded in the geocoding response itself.

For a project that started small and grew, the simplicity that made OpenCage an easy first choice does not have to be something you give up by moving providers. A key that works in whatever style your client already sends it, a free daily allowance with no signup required to start testing, and one price across every endpoint keep the onboarding experience close to what a lot of OpenCage users are used to.