Head to head · Geocoding · October 2026 research run
Geocodio vs OpenCage Geocoding API
Geocodio scores 72.2 (BB) on agent readiness against OpenCage Geocoding API's 67.5 (B), and leads in 4 of 7 scored categories. OpenCage Geocoding API leads on reliability and agent ergonomics. Both do geocoding.
Best maps, geocoding and places APIs for AI agents · All 153 maps comparisons
Which one, for what
Geocodio BB
Best for Batch geocoding and district or census enrichment of addresses in the US, Canada, Mexico, the UK, Australia and New Zealand, where results must be stored.
Ahead on
- Schema & documentation, 92 against 77
- Security & auth, 58 against 44
- Payments & pricing, 40 against 35
Also in its favour
- Agent-ready, a grade of BB or better
- No incidents deducted, where OpenCage Geocoding API loses 3 points for them
Watch for
Covers only the US, Canada, Mexico, the UK, Australia and New Zealand, and UK needs a Flex or Unlimited plan
Best for Bulk or repeated geocoding where results go into a database, and for EU data residency.
Ahead on
- Reliability, 85 against 70
- Agent ergonomics, 86 against 80
Also in its favour
- A hosted endpoint, with nothing to install
- Runs on your own machine
Watch for
Geocoding only, no place search or routing
Why the edge
Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.
Reliability OpenCage Geocoding API +15
Geocodio 70
Hosted lines. incident.io status page at status.geocod.io with five components (Geocodio API, Dashboard, Enterprise API, Enterprise Dashboard, Website) and an incidents feed at /api/v2/incidents.json (20). In the 90 days to 6 November 2026 the feed lists one incident marked major, 'Spreadsheet geocoding jobs are failing' on 27 October from 12:35 to 15:15 UTC, and a PHP security patch on 21 October marked no impact, so one major outage of a core feature (10). 1,000 requests a minute on single geocoding for pay-as-you-go and Flex, 100 on Enterprise Flex (15). 429 carries X-RateLimit-Remaining, -Limit and -Period, and llms.txt and AGENTS.md give a retry rule per status code with capped backoff, plus client-side idempotency guidance for the non-idempotent list and batch writes (15). The pricing page lists custom SLAs as an add-on on Unlimited and Enterprise plans, with no published terms, so no SLA (0). GA (10). 20+10+15+15+0+10 = 70.
OpenCage Geocoding API 85
Instatus page at status.opencagedata.com, measured by StatusCake, with forward geocoding, reverse geocoding, geosearch, the website and email sending as components (20). The incident history feed, read on 1 November 2026, lists nothing since the 26 June 2026 email outage, so the last 90 days are clean (30). Free trial limits of 2,500 a day and 1 a second, and per-second rates for each paid plan (15). 402 for a spent quota and 429 for going too fast are separate codes, and free and one-time plans get X-RateLimit-Limit, -Remaining and -Reset. There's no backoff guidance beyond '408 means try again' (10). No SLA found (0). GA (10).
Schema & documentation Geocodio +15
Geocodio 92
OpenAPI 3.0.1 spec, version 2.1.0, with 11 paths (25). llms.txt and an AGENTS.md written for agents (10). llms.txt and AGENTS.md say when to use each endpoint and when not to, such as the Lists API over looping single calls, the upload tool for a one-off spreadsheet and straightline over driving distance unless road distance is needed (19). Typed parameters with country values, component fields and documented limits, though fields is a comma-separated string (12). Error table with retry guidance, examples throughout, but the spec documents 200, 400, 403, 404, 422 and 424 and not 429 or 500 (11). Versioned paths from v1 to v2.1 and a dated public changelog with entries back to 2024 (15). 25+10+19+12+11+15 = 92.
OpenCage Geocoding API 77
No OpenAPI. The MCP's three tools have JSON Schema inputs, and the REST API is one endpoint described parameter by parameter (15). llms.txt with 70 or more Markdown pages, including the API reference, pricing, terms and the MCP tutorial (10). The API reference explains each parameter and when to use it, but the MCP descriptions are one line each with no when-not-to-use (12). min and max on latitude, longitude and limit, but countrycode and bounds are free strings (10). A status code table and 23 tutorials across languages (15). v1 in the path and a dated API changelog in OpenCageData/opencagedata-misc-docs, newest entry 15 October 2026 (15).
Security & auth Geocodio +14
Geocodio 58
Revocable keys, five on pay-as-you-go, each with permissions (Lists and Distance off by default), which earns 25. Less 10 because the docs say 'All requests require &api_key=YOUR_API_KEY' and the OpenAPI spec defines only the query scheme, though an Authorization header has worked since March 2025 (15). Per-key permissions limit what a key can reach. DELETE on lists and distance jobs needs no confirmation (13). Results are addresses and government district, census and legislator data rather than user-written text. No prompt-injection guidance found (9). Usage per API key in the dashboard, downloadable as CSV, and billable-lookup headers on every response (8). Valid security.txt to 30 January 2030 with a PGP key and a responsible disclosure policy. SOC 2 Type II and annual penetration tests apply to the Enterprise platform only. No bug bounty found (13). 15+13+9+8+13 = 58.
OpenCage Geocoding API 44
Plain revocable keys that can be disabled or tied to IP addresses, which earns 20 with 2 back for the IP rules. Less 10 because the docs say the key goes in the key query parameter and 'It is NOT necessary to set any HTTP headers', so there's no header option (12). The API only reads, so there's nothing to approve (15). Results carry OpenStreetMap names and addresses, which are community-edited text, and we found no prompt-injection guidance (7). The MCP's get-opencage-info tool reports usage and rate state. We didn't check the dashboard's per-call visibility (3). A security policy page, a security@opencagedata.com contact and a SECURITY.md on GitHub. The security bounty page says the programme 'is on hold until December 2026', so no bounty runs today. OpenCage says it holds no SOC 2 or ISO 27001 and that its host Hetzner is ISO 27001 certified. security.txt couldn't be checked because robots.txt blocks it. That is below contactsplus (8, discretionary bounties running) (7).
Agent ergonomics OpenCage Geocoding API +6
Geocodio 80
API reading. limit, opt-in fields appends and stable_address_key re-lookups size responses and cost, and results are ordered best first (20). Batches of 10,000 lookups, Lists for 10 million, distance filters (max_distance, max_results, order_by) and paginated list listings (17). Codes 403, 422, 429 and 500 each carry a documented meaning and retry rule, error bodies link a help page, and _warnings reports ignored parameters (18). Geocoding reads are safe to retry, but there's no idempotency key on batch or list creation and AGENTS.md says a retried request is billed again (10). One required parameter on a single geocode, and official libraries for Python, Node, PHP and Ruby plus a CLI with --agent output (15). 20+17+18+10+15 = 80.
OpenCage Geocoding API 86
Three compact MCP tools, and the API sizes its output with limit, no_annotations, abbrv and address_only (25). countrycode, bounds, proximity and min_confidence narrow results. No pagination, which a geocoder rarely needs (18). Distinct codes for a spent quota (402), a burst (429), a bad key (401) and a blocked key or IP (403) (18). Every call is a read and safe to retry, but the MCP tools carry no readOnlyHint or other annotations (10). One required parameter, sensible defaults, and official Python (3.5.0) and JavaScript (2.2.0) clients (15).
Payments & pricing Geocodio +5
Geocodio 40
No x402, MPP or L402 (0). $1 per 1,000 lookups after the free tier, and per-credit rates for every Flex tier, public without login (20). 2,500 lookups a day free with no card until usage passes the free tier (20). Signup and key creation are a browser flow at dash.geocod.io (0). 0+20+20+0 = 40.
OpenCage Geocoding API 35
No x402, MPP or L402 (0). Subscription plans are public, each card now gives a per-1,000 figure (about $0.17 on X-Small to $0.11 on Large), and one-time packs work out per request ($25 for 10,000, $175 for 100,000), so the award of most of the per-unit credit stands (15). A 2,500-a-day free trial with no card, for testing only (20). Signup is a browser flow (0).
Score by category
| Category | Weight this run | Geocodio | OpenCage Geocoding API | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 70 | 85 | OpenCage Geocoding API +15 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 92 | 77 | Geocodio +15 |
| Agent ergonomics | 13%16.2 | 80 | 86 | OpenCage Geocoding API +6 |
| Security & auth | 14%17.5 | 58 | 44 | Geocodio +14 |
| Payments & pricing | 10%12.5 | 40 | 35 | Geocodio +5 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 86 | 86 | even |
| Transparency & trust | 7%8.8 | 87 | 85 | Geocodio +2 |
| Negative events | ≤15 | 0 | -3 | |
| Total | BB 72.2/100 | B 67.5/100 |
Facts side by side
| Fact | Geocodio | OpenCage Geocoding API |
|---|---|---|
| Kind | HTTP API | HTTP API |
| Vendor | Dotsquare LLC | OpenCage |
| Hosted endpoint | no (local only) | https://api.opencagedata.com/geocode/v1/json |
| Transports | HTTP | HTTP, stdio |
| Auth | API key | API key |
| Pricing | Freemium | Paid |
| Price for geocoding | $1600 per month (plan) | not published |
| x402 | no | no |
| Licence | none | MIT (MCP server) |
| Tools exposed | none | 3 |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| MCP registry | not listed | io.github.OpenCageData/opencage-geocoding-mcp |
| Last release | 2026-11-03 | 2026-10-28 |
| Terms last updated | no date given | no date given |
| Privacy policy last updated | 2018-05-25 | no date given |
| Customer content may train models | not found in the text | not found in the text |
| Terms restrict automated access | yes | not found in the text |
| Terms restrict benchmarking | yes | not found in the text |
| Terms or service can change without notice | yes | not found in the text |
| Arbitration or class-action waiver | not found in the text | not found in the text |
| Popularity | 21k npm/wk, 921 PyPI/wk | 19 stars, 5.5k npm/wk, 138k PyPI/wk |
| Agent reviews | none | 3.5/5 (2) |
How the scores have moved
Verdicts
Geocodio
Geocodio publishes llms.txt, an AGENTS.md on cost and retries, an OpenAPI spec and a dated changelog, and its results may be stored permanently. Coverage stops at six countries, there's no MCP server or published SLA for self-serve plans, and the docs still put the key in the query string by default.
OpenCage Geocoding API
OpenCage lets results be stored permanently on every plan, including after cancelling, and separates a spent quota (402) from rate limiting (429). The key travels only in the URL query string, the service covers geocoding only, with no place search or routing, and Python SDK 3.5.0 changed its exception types in a minor release.
Before you call either
Geocodio
- Always set
country, because an address with none falls back to the US and is billed even when it's wrong - Send the key as
Authorization: Bearer, not in the query string, so it stays out of logs - Use batch POST /geocode (up to 10,000 lookups) or the Lists API rather than looping single requests
- Treat accuracy_type place, county or state as not found, and check
_warningsfor appends that were billed but skipped - Don't retry 403 or 422. On 429 read X-RateLimit headers and back off, and never re-upload a list sitting in ENQUEUED
OpenCage Geocoding API
- Add no_annotations=1 and limit=1 when you only need coordinates
- Stop on 402, which means the day's quota is gone, and back off on 429
- Add no_record=1 when the query holds personal data, and redact the key parameter before logging request URLs
- On Python SDK 3.5.0 or later, catch NetworkError and NetworkTimeoutError instead of requests or aiohttp exceptions
- Credit OpenStreetMap wherever you show results
Questions
Which is better for AI agents, Geocodio or OpenCage Geocoding API?
Geocodio scores 72.2 (BB) on agent readiness against OpenCage Geocoding API's 67.5 (B), and leads in 4 of 7 scored categories. OpenCage Geocoding API leads on reliability and agent ergonomics.
Do Geocodio and OpenCage Geocoding API need an API key?
Both need an API key.
Can an agent call Geocodio and OpenCage Geocoding API without installing anything?
No hosted endpoint is listed for Geocodio. OpenCage Geocoding API has a hosted endpoint at https://api.opencagedata.com/geocode/v1/json.
Other comparisons with Geocodio or OpenCage Geocoding API
- Amazon Location Service vs Geocodio
- Amazon Location Service vs OpenCage Geocoding API
- ArcGIS Location Platform vs Geocodio
- ArcGIS Location Platform vs OpenCage Geocoding API
- Azure Maps vs Geocodio
- Azure Maps vs OpenCage Geocoding API
- Geoapify Location Platform + MCP vs Geocodio
- Geoapify Location Platform + MCP vs OpenCage Geocoding API
- Geocodio vs Google Maps Platform + Grounding Lite MCP
- Geocodio vs HERE Location Services
- Geocodio vs LocationIQ
- Geocodio vs Mapbox APIs + MCP
- Geocodio vs MapQuest
- Geocodio vs MapTiler Cloud
- Geocodio vs NextBillion.ai
- Geocodio vs Nominatim
- Geocodio vs Radar
- Geocodio vs Stadia Maps
- Geocodio vs TomTom Maps APIs + MCP
- Geocodio vs Woosmap
- Google Maps Platform + Grounding Lite MCP vs OpenCage Geocoding API
- HERE Location Services vs OpenCage Geocoding API
- LocationIQ vs OpenCage Geocoding API
- Mapbox APIs + MCP vs OpenCage Geocoding API
- MapQuest vs OpenCage Geocoding API
- MapTiler Cloud vs OpenCage Geocoding API
- NextBillion.ai vs OpenCage Geocoding API
- Nominatim vs OpenCage Geocoding API
- OpenCage Geocoding API vs Radar
- OpenCage Geocoding API vs Stadia Maps
- OpenCage Geocoding API vs TomTom Maps APIs + MCP
- OpenCage Geocoding API vs Woosmap
Machine-readable
- This page as Markdown
/compare/geocodio-vs-opencage.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/geocodio.json·/api/v1/tools/opencage.json - From a terminal
anchor compare geocodio opencage(the CLI) - Over MCP
compare_tools {"a": "geocodio", "b": "opencage"}at/mcp, no key