Reverse geocoding APIs compared: AtlasFetch, Google, Mapbox, OpenCage and Geoapify
“Reverse geocoding” covers two different jobs: turning a coordinate into a street address, and turning it into the administrative areas that contain it — country, state or province, municipality. The providers below are good at different ones. This page is written by AtlasFetch, so it says plainly where the others are the better choice.
Every provider fact checked against its own documentation and pricing on 17 September 2026. Sources at the end. Prices change — verify before you commit.
The short answer
- You need a street address or postcode from a coordinate: use Google, Mapbox, OpenCage or Geoapify. AtlasFetch does not do this.
- You need to store results long term and want that written into the terms: OpenCage allows permanent storage on every plan, including after you leave; Mapbox needs its paid permanent mode.
- You are already on Google Maps or Mapbox for maps and search: staying there is usually simpler than adding a provider.
- You need the country, region and municipality with codes, plus a check against your own polygons, in one call: that is what AtlasFetch is built for.
At a glance
| Street address | Region as ISO 3166-2 | Your own polygons | Free tier | Storing results | |
|---|---|---|---|---|---|
| AtlasFetch | No — stops at municipality | Yes (ZA-WC) | Yes, in the same lookup | 1,000 lookups/month | Allowed; ODbL attribution and share-alike apply if you publish or redistribute |
| Google Geocoding | Yes | Not guaranteed — short_name “will closely match” | Not in the Geocoding API | 10,000 requests/month | Restricted; place IDs exempt |
| Mapbox Geocoding | Yes | Yes (region_code_full) | Separately, via the Tilequery API | 100,000/month (temporary) | Temporary results may not be cached; permanent mode is paid |
| OpenCage | Yes | Yes (ISO_3166-2, a list) | No | 2,500/day, testing only | Permanent, on every plan |
| Geoapify | Yes | Not documented; returns state_code | Not in reverse geocoding | 3,000 credits/day | Not stated on its pricing page |
Pricing beyond the free tier
| Provider | Entry paid pricing | At higher volume |
|---|---|---|
| AtlasFetch | £9/month for 50,000 lookups | £29/month for 250,000 lookups |
| Google Geocoding | $5.00 per 1,000 (10,001-100,000/month) | Down to $0.38 per 1,000 above 5 million |
| Mapbox, temporary | $0.75 per 1,000 (100,001-500,000) | $0.45 per 1,000 above 1 million |
| Mapbox, permanent | $5.00 per 1,000, no free tier | $4.00 per 1,000 above 500,000 |
| OpenCage | €45/month for 10,000/day | €900/month for 300,000/day; no overage charges |
| Geoapify | $59/month for 10,000 credits/day | $609/month for 250,000 credits/day |
Monthly and daily allowances are not directly comparable: 10,000 a day is roughly 300,000 a month if you use it evenly. AtlasFetch plan caps are still provisional and may change.
Provider by provider
Google Geocoding API
The most complete street-address coverage of the group, with address components down to street number. Administrative areas come back as administrative_area_level_1 to _7; Google says level-1 short names “will closely match ISO 3166-2 subdivisions” but that this “is not guaranteed”. Caching results is restricted — place IDs are the exception and may be stored — and content shown outside a Google map needs Google’s attribution. You cannot supply your own polygons. 10,000 free requests a month, then $5.00 per 1,000 with volume discounts; 25 queries per second by default.
Mapbox Geocoding API
Returns a hierarchy from address up to country, with regions carrying ISO 3166-2 codes (region_code_full, e.g. US-UT). The catch is storage: by default results are “temporary” and may not be cached; storing them needs permanent geocoding, which has no free tier and costs $5.00 per 1,000. For your own polygons, Mapbox’s separate Tilequery API does point-in-polygon against tilesets you upload — 100,000 free requests a month, up to 50 results, and a point lying exactly on a polygon edge is not returned. That is two APIs and a tileset pipeline rather than one call.
OpenCage
Aggregates OpenStreetMap with national and regional datasets and returns address components plus both ISO 3166-1 and ISO 3166-2 codes (as a list, since some places have several). Its storage terms are the most generous here: you may store results permanently, even after you stop being a customer. Plans are daily caps with no overage billing. The free trial (2,500 requests a day, 1 per second) is for testing only. It returns bounding boxes, not polygons, and has no custom-polygon matching.
Geoapify
OpenStreetMap-based reverse geocoding with address fields, country_code (ISO 3166-1) and a state_codethat it notes “might be missing for some countries”; ISO 3166-2 is not documented. Its separate Boundaries API has a part-ofendpoint that returns the boundaries a location belongs to, with optional polygon geometry — the closest thing here to AtlasFetch’s administrative lookup. The free plan (3,000 credits a day, 5 requests a second) allows limited commercial use with attribution.
AtlasFetch
One call returns the country (ISO 3166-1), region (ISO 3166-2) and municipality containing a coordinate, and matches it against polygons you upload, with your own properties returned on each match. Every overlapping polygon matches, and a point exactly on an edge counts as inside. Coordinates you look up are not stored. See the municipality guide and the custom geofences guide.
Where AtlasFetch falls short
- No street addresses, postcodes or place search. If you need “12 Long Street”, use one of the others.
- “Municipal” is not a consistent unit. It is the finest level available: a city in Los Angeles, a county in rural Kansas.
- Many municipal codes are generated (
B-ZA-1) where OpenStreetMap has no ISO code, and those are not yet stable across a full data reload. Country and region codes are. - Boundary data is OpenStreetMap only, with ODbL attribution and share-alike obligations.
- One coordinate per request. There is no batch endpoint.
- Server-side only. Browser calls are not allowed from other websites (no CORS), so call it from your backend.
- Your own polygons must be single Polygons; a MultiPolygon is added part by part.
- It is a young service, and plan caps are still provisional.
Sources (checked 17 September 2026)
- Google — Reverse geocoding requests
- Google — Maps Platform pricing (Geocoding SKU)
- Google — Geocoding API policies
- Google — Geocoding usage and billing
- Mapbox — Geocoding API
- Mapbox — Pricing
- Mapbox — Tilequery API
- OpenCage — API documentation
- OpenCage — Pricing
- Geoapify — Reverse Geocoding API
- Geoapify — Boundaries API
- Geoapify — Pricing
Spotted something out of date? Tell us at atlasfetch@atlas-iq.co and we will correct it.