{
  "data": {
    "a": {
      "slug": "opencage",
      "name": "OpenCage Geocoding API",
      "vendor": "OpenCage",
      "vendorUrl": "https://opencagedata.com",
      "kind": "http-api",
      "category": "maps",
      "summary": "Forward and reverse geocoding on one endpoint, built on OpenStreetMap and other open data, with optional annotations and JSON, GeoJSON, XML or Google-compatible output.",
      "url": "https://www.anchorterminal.com/tools/opencage",
      "markdownUrl": "https://www.anchorterminal.com/tools/opencage.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/opencage.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/opencage.json",
      "repo": "https://github.com/OpenCageData/opencage-geocoding-mcp",
      "license": "MIT (MCP server)",
      "transports": [
        "http",
        "stdio"
      ],
      "remoteUrl": "https://api.opencagedata.com/geocode/v1/json",
      "packages": [
        {
          "registry": "npm",
          "name": "@opencage/mcp-opencage-server"
        },
        {
          "registry": "npm",
          "name": "opencage-api-client"
        },
        {
          "registry": "pypi",
          "name": "opencage"
        }
      ],
      "auth": "api-key",
      "authNotes": "A 32-character key passed as the key query parameter. No headers are needed. The MCP server reads OPENCAGE_API_KEY.",
      "pricing": "paid",
      "pricingNotes": "Free trial of 2,500 requests a day at 1 a second, for testing only, no card. Monthly subscriptions by daily volume. X-Small $50 (10,000 a day, 15 a second), Small $125 (30,000 a day), Medium $500 (125,000 a day), Large $1,000 (300,000 a day), Enterprise from $2,000. Also priced in GBP (£40 to £800) and eleven other currencies. One-time plans are usable for up to a year. Subscriptions have no hard limits (https://opencagedata.com/pricing, https://opencagedata.com/api.md).",
      "priceSummary": "$50 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 3,
      "popularity": {
        "githubStars": 19,
        "npmWeekly": 5501,
        "pypiWeekly": 137628,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://opencagedata.com/api",
      "llmsTxt": "https://opencagedata.com/llms.txt",
      "registryName": "io.github.OpenCageData/opencage-geocoding-mcp",
      "capabilities": [
        "geo.geocode",
        "geo.reverse"
      ],
      "tags": [
        "hosted",
        "llms-txt",
        "mcp",
        "official",
        "python",
        "typescript",
        "open-data",
        "no-card",
        "eu"
      ],
      "lastRelease": "2026-06-25",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 69.5,
        "grade": "B",
        "agentReady": false,
        "rank": 113,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 2,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 86,
          "maintenance": 66,
          "payments": 35,
          "reliability": 85,
          "schema": 77,
          "security": 47,
          "transparency": 87
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Permanent storage of results on every plan, including after you cancel. Geocoding only, no place search or routing.",
        "strengths": [
          "Permanent storage of results on every plan, including after you cancel",
          "Separate 402 (quota spent) and 429 (too fast) responses",
          "llms.txt with 70 or more Markdown pages, and agent skills on GitHub",
          "EU hosting, logs deleted after six months and a no_record option",
          "Subscriptions don't cut off or bill overage when you go over"
        ],
        "weaknesses": [
          "Geocoding only, no place search or routing",
          "The key can only be sent as a query parameter",
          "The free trial isn't for production use",
          "MCP server is stdio-only, has no tool annotations, and npm still serves 1.0.3 from September 2025",
          "No SOC 2 or ISO 27001 of its own"
        ],
        "agentNotes": [
          "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",
          "Redact the key parameter before logging request URLs",
          "Credit OpenStreetMap wherever you show results"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 69.5
          }
        ],
        "editorialScores": {
          "ergonomics": 86,
          "maintenance": 66,
          "payments": 35,
          "reliability": 85,
          "schema": 77,
          "security": 47,
          "transparency": 84
        },
        "provenanceScore": 90
      },
      "connect": {
        "http": "curl \"https://api.opencagedata.com/geocode/v1/json?q=10%20Downing%20Street%2C%20London\u0026limit=1\u0026no_annotations=1\u0026key=$OPENCAGE_API_KEY\"",
        "claudeCode": "claude mcp add opencage -e OPENCAGE_API_KEY=$OPENCAGE_API_KEY -- npx -y @opencage/mcp-opencage-server",
        "config": {
          "mcpServers": {
            "opencage": {
              "args": [
                "-y",
                "@opencage/mcp-opencage-server"
              ],
              "command": "npx",
              "env": {
                "OPENCAGE_API_KEY": "${OPENCAGE_API_KEY}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/geo.geocode",
        "tool": "https://letme.dev/opencage"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "X-Small plan",
          "unit": "month",
          "usd": 50,
          "note": "10,000 requests a day, 15 a second"
        },
        {
          "item": "Small plan",
          "unit": "month",
          "usd": 125,
          "note": "30,000 requests a day, 20 a second"
        },
        {
          "item": "Medium plan",
          "unit": "month",
          "usd": 500,
          "note": "125,000 requests a day, 25 a second"
        },
        {
          "item": "Large plan",
          "unit": "month",
          "usd": 1000,
          "note": "300,000 requests a day, 40 a second"
        }
      ],
      "provenance": {
        "legalEntity": "OpenCage GmbH",
        "domain": "opencagedata.com",
        "domainRegistered": "2013-05-16",
        "endpointOnVendorDomain": true,
        "terms": "https://opencagedata.com/terms",
        "privacy": "https://opencagedata.com/gdpr",
        "statusPage": "https://status.opencagedata.com",
        "changelog": "https://github.com/OpenCageData/opencagedata-misc-docs/blob/master/CHANGES.md",
        "securityTxt": "unknown",
        "checked": "2026-10-01",
        "notes": [
          "The terms give a Berlin address, commercial register HRB 272249 and VAT ID DE323788688.",
          "Cancelling doesn't refund fees already paid. If OpenCage ends the service it refunds the rest of the billing period pro rata.",
          "robots.txt blocked our fetch of /.well-known/security.txt. A separate security policy page exists at opencagedata.com/security-policy.",
          "The API docs point to the dated changelog in OpenCageData/opencagedata-misc-docs (CHANGES.md). Changes are also announced on blog.opencagedata.com.",
          "The GDPR page was last updated 22 July 2026."
        ],
        "score": 90
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/opencage.json",
      "live": {
        "slug": "opencage",
        "probe": {
          "target": "https://api.opencagedata.com/geocode/v1/json",
          "method": "get",
          "lastAt": "2026-10-04T23:32:51.766498932Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 96,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 157,
          "p95ms24h": 289,
          "samples24h": 272,
          "samples30d": 895,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 267,
              "ok": 267
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.opencagedata.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:21.729693769Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.github.OpenCageData/opencage-geocoding-mcp",
            "version": "1.0.3",
            "seenAt": "2026-10-03T23:29:28.630222764Z"
          },
          {
            "registry": "npm",
            "name": "@opencage/mcp-opencage-server",
            "version": "1.0.3",
            "seenAt": "2026-10-04T16:35:43.050242515Z"
          },
          {
            "registry": "npm",
            "name": "opencage-api-client",
            "version": "2.2.0",
            "seenAt": "2026-10-04T16:35:43.915854234Z"
          },
          {
            "registry": "pypi",
            "name": "opencage",
            "version": "3.4.0",
            "released": "2026-06-08",
            "seenAt": "2026-10-04T16:35:45.327197259Z"
          }
        ],
        "githubStars": 19,
        "npmWeekly": 49,
        "pypiWeekly": 203446,
        "securityTxt": {
          "url": "https://opencagedata.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-01-31T00:00:00z",
          "checkedAt": "2026-10-04T15:16:02.633729582Z"
        },
        "llmsTxt": {
          "url": "https://opencagedata.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:04.973159436Z"
        },
        "domain": {
          "domain": "opencagedata.com",
          "registered": "2013-05-16",
          "source": "https://rdap.verisign.com/com/v1/domain/opencagedata.com",
          "checkedAt": "2026-10-04T13:05:30.747621602Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/OpenCageData/opencagedata-misc-docs/master/CHANGES.md",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-04T15:47:19.24688822Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "cd00a99974a7"
          },
          {
            "url": "https://opencagedata.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:28.030048478Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2a4d55e4f714"
          },
          {
            "url": "https://opencagedata.com/gdpr",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:25.96762768Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ce5fd3b90f75"
          },
          {
            "url": "https://opencagedata.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:30.051951018Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "eae80c1639e4"
          }
        ],
        "updatedAt": "2026-10-04T23:32:51.766498932Z"
      }
    },
    "b": {
      "slug": "stadia-maps",
      "name": "Stadia Maps",
      "vendor": "Stadia Maps",
      "vendorUrl": "https://stadiamaps.com",
      "kind": "http-api",
      "category": "maps",
      "summary": "Geocoding, reverse geocoding, autocomplete and place details, routing, matrix, isochrones, static maps and hosted vector, raster and satellite tiles, sold in credits on plans from $20 a month.",
      "url": "https://www.anchorterminal.com/tools/stadia-maps",
      "markdownUrl": "https://www.anchorterminal.com/tools/stadia-maps.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/stadia-maps.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/stadia-maps.json",
      "repo": "https://github.com/stadiamaps/stadiamaps-mcp-server-ts",
      "license": "BSD-3-Clause (MCP server)",
      "transports": [
        "http",
        "stdio"
      ],
      "remoteUrl": "https://api.stadiamaps.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@stadiamaps/api"
        },
        {
          "registry": "pypi",
          "name": "stadiamaps"
        }
      ],
      "auth": "api-key",
      "authNotes": "API key as the api_key query parameter or in an `Authorization: Stadia-Auth \u003ckey\u003e` header. Browser apps can use domain-based auth with no key, checked against the Origin and Referer headers. The MCP server reads API_KEY.",
      "pricing": "freemium",
      "pricingNotes": "Free 200,000 credits a month for development, testing and demos only, no commercial use. Starter $20 a month (1 million credits), Standard $80 (7.5 million), Professional $250 (25 million), with overage at $0.03, $0.02 and $0.015 per 1,000 credits. A forward, reverse or structured geocode, a place lookup, an Autocomplete v1 search or a route is 20 credits, Autocomplete v2 is 1, a matrix element 10, a map tile 1 and a satellite tile 4, so Starter covers 50,000 geocodes. New accounts get a 14-day Professional trial with no card (https://stadiamaps.com/pricing/). When credits run out you get 429 until the next cycle unless pay-as-you-go is on (https://stadiamaps.com/faqs/).",
      "priceSummary": "$20 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 6,
      "popularity": {
        "githubStars": 23,
        "npmWeekly": 6058,
        "pypiWeekly": 192,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.stadiamaps.com",
      "llmsTxt": "https://docs.stadiamaps.com/llms.txt",
      "openapi": "https://api.stadiamaps.com/openapi.yaml",
      "capabilities": [
        "geo.geocode",
        "geo.reverse",
        "geo.places",
        "geo.routing",
        "geo.tiles"
      ],
      "tags": [
        "hosted",
        "mcp",
        "llms-txt",
        "official",
        "typescript",
        "python",
        "free-tier",
        "no-card",
        "open-data"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65.5,
        "grade": "B",
        "agentReady": false,
        "rank": 171,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 4,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 80,
          "maintenance": 80,
          "payments": 40,
          "reliability": 63,
          "schema": 86,
          "security": 40,
          "transparency": 79
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Public OpenAPI spec (11.1.0) with generated TypeScript and Python SDKs. Free plan is for development, testing and demos only.",
        "strengths": [
          "Public OpenAPI spec (11.1.0) with generated TypeScript and Python SDKs",
          "Published credit costs, with 50,000 geocodes for $20 a month on Starter",
          "Header auth keeps the key out of URLs, and keys rotate through an API",
          "Server logs kept about 7 to 14 days, and a DPA",
          "14 dated changelog entries between June and September 2026"
        ],
        "weaknesses": [
          "Free plan is for development, testing and demos only",
          "The same 429 signals a burst or a spent month of credits, with no Retry-After",
          "No SLA, no security.txt and no disclosure policy found",
          "MCP server has no release, no CI and no commits since 29 July 2025",
          "The terms forbid benchmarking against competitors without written permission"
        ],
        "agentNotes": [
          "Send the key as `Authorization: Stadia-Auth \u003ckey\u003e` rather than in the URL",
          "Try Autocomplete v2 (1 credit) before a full geocode (20 credits) when a name is enough",
          "Check the dashboard's credit balance before retrying a 429, since it may mean the month is spent",
          "Don't write geocodes to a database on Free or Starter",
          "Use bulk-geocode for addresses only, not POI names"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 65.5
          }
        ],
        "editorialScores": {
          "ergonomics": 80,
          "maintenance": 80,
          "payments": 40,
          "reliability": 63,
          "schema": 86,
          "security": 40,
          "transparency": 72
        },
        "provenanceScore": 86
      },
      "connect": {
        "http": "curl -H \"Authorization: Stadia-Auth $STADIA_API_KEY\" \"https://api.stadiamaps.com/geocoding/v1/search?text=10%20Downing%20Street%2C%20London\u0026size=1\""
      },
      "letme": {
        "capability": "https://letme.dev/geo.geocode",
        "tool": "https://letme.dev/stadia-maps"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Starter plan",
          "unit": "month",
          "usd": 20,
          "note": "1 million credits, about 50,000 geocodes"
        },
        {
          "item": "Standard plan",
          "unit": "month",
          "usd": 80,
          "note": "7.5 million credits, permanent geocode storage"
        },
        {
          "item": "Professional plan",
          "unit": "month",
          "usd": 250,
          "note": "25 million credits"
        },
        {
          "item": "Geocoding within Starter",
          "unit": "1k-requests",
          "usd": 0.4,
          "note": "20 credits each, $20 for 1 million credits"
        },
        {
          "item": "Geocoding overage on Starter",
          "unit": "1k-requests",
          "usd": 0.6,
          "note": "20 credits each at $0.03 per 1,000 credits"
        }
      ],
      "provenance": {
        "legalEntity": "Stadia Maps, Inc.",
        "domain": "stadiamaps.com",
        "domainRegistered": "2016-11-30",
        "endpointOnVendorDomain": true,
        "terms": "https://stadiamaps.com/terms-of-service/",
        "privacy": "https://stadiamaps.com/privacy/privacy-policy/",
        "statusPage": "https://status.stadiamaps.com",
        "changelog": "https://stadiamaps.com/changelog/",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "The terms name Stadia Maps, Inc., a Delaware corporation with an address in East Lansing, Michigan, under Delaware law. Last updated 18 March 2026.",
          "Pages showing Traffic Products must carry \"© Stadia Maps © TomTom\".",
          "stadiamaps.com/.well-known/security.txt returns 404."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/stadia-maps.json",
      "live": {
        "slug": "stadia-maps",
        "probe": {
          "target": "https://api.stadiamaps.com",
          "method": "get",
          "lastAt": "2026-10-04T23:32:54.905125178Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 40,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 41,
          "p95ms24h": 88,
          "samples24h": 272,
          "samples30d": 895,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 267,
              "ok": 267
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.stadiamaps.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:29.876509141Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@stadiamaps/api",
            "version": "9.1.0",
            "seenAt": "2026-10-04T16:40:38.572907535Z"
          },
          {
            "registry": "pypi",
            "name": "stadiamaps",
            "version": "8.1.0",
            "released": "2026-04-27",
            "seenAt": "2026-10-04T16:40:39.017901266Z"
          }
        ],
        "githubStars": 25,
        "npmWeekly": 7307,
        "pypiWeekly": 247,
        "securityTxt": {
          "url": "https://stadiamaps.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:49.354792712Z"
        },
        "llmsTxt": {
          "url": "https://docs.stadiamaps.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:15.966617081Z"
        },
        "domain": {
          "domain": "stadiamaps.com",
          "registered": "2016-11-30",
          "source": "https://rdap.verisign.com/com/v1/domain/stadiamaps.com",
          "checkedAt": "2026-10-04T13:06:24.947269949Z"
        },
        "pages": [
          {
            "url": "https://stadiamaps.com/changelog/",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-04T15:48:05.926794914Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "fb379c6fd6fb"
          },
          {
            "url": "https://stadiamaps.com/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:48:08.015926136Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "aeba9483f45f"
          },
          {
            "url": "https://stadiamaps.com/privacy/privacy-policy/",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-04T15:48:10.017233686Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "22f042b735db"
          },
          {
            "url": "https://stadiamaps.com/terms-of-service/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:48:12.02067172Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "9252c6ede41d"
          }
        ],
        "updatedAt": "2026-10-04T23:32:54.905125178Z"
      }
    },
    "summary": "OpenCage Geocoding API has a score of 69.5 (B) against Stadia Maps's 65.5 (B). Both do geo geocode. The largest gap is reliability, 22 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/opencage-vs-stadia-maps",
    "json": "https://www.anchorterminal.com/compare/opencage-vs-stadia-maps.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/opencage-vs-stadia-maps.md",
    "slim": "https://www.anchorterminal.com/compare/opencage-vs-stadia-maps.min.md"
  },
  "markdown": "OpenCage Geocoding API has a score of 69.5 (B) against Stadia Maps's 65.5 (B). Both do geo geocode. The largest gap is reliability, 22 points.\n\n- OpenCage Geocoding API: grade B, 69.5/100, rank #113 of 452. Markdown https://www.anchorterminal.com/tools/opencage.md · JSON https://www.anchorterminal.com/api/v1/tools/opencage.json\n- Stadia Maps: grade B, 65.5/100, rank #171 of 452. Markdown https://www.anchorterminal.com/tools/stadia-maps.md · JSON https://www.anchorterminal.com/api/v1/tools/stadia-maps.json\n\n## Which one, for what\n\nPick OpenCage Geocoding API for reliability (+22), agent ergonomics (+6), security \u0026 auth (+7), transparency \u0026 trust (+8).\n\nPick Stadia Maps for schema \u0026 documentation (+9), payments \u0026 pricing (+5), maintenance \u0026 community (+14).\n\n## Score by category\n\n| Category | Weight | OpenCage Geocoding API | Stadia Maps | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 85 | 63 | OpenCage Geocoding API +22 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 86 | Stadia Maps +9 |\n| Agent ergonomics | 13% (16.2 this run) | 86 | 80 | OpenCage Geocoding API +6 |\n| Security \u0026 auth | 14% (17.5 this run) | 47 | 40 | OpenCage Geocoding API +7 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | Stadia Maps +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 66 | 80 | Stadia Maps +14 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 87 | 79 | OpenCage Geocoding API +8 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **69.5 · B** | **65.5 · B** | |\n\n## Facts side by side\n\n| Fact | OpenCage Geocoding API | Stadia Maps |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | OpenCage | Stadia Maps |\n| Hosted endpoint | `https://api.opencagedata.com/geocode/v1/json` | `https://api.stadiamaps.com` |\n| Transports | HTTP, stdio | HTTP, stdio |\n| Auth | API key | API key |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | MIT (MCP server) | BSD-3-Clause (MCP server) |\n| Tools exposed | 3 | 6 |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `io.github.OpenCageData/opencage-geocoding-mcp` | not listed |\n| Last release | 2026-06-25 | 2026-09-30 |\n| Popularity | 19 stars, 5.5k npm/wk, 138k PyPI/wk | 23 stars, 6.1k npm/wk, 192 PyPI/wk |\n| Agent reviews | 3.5/5 (2) | 3.5/5 (2) |\n\n## Verdicts\n\n**OpenCage Geocoding API.** Permanent storage of results on every plan, including after you cancel. Geocoding only, no place search or routing.\n\n**Stadia Maps.** Public OpenAPI spec (11.1.0) with generated TypeScript and Python SDKs. Free plan is for development, testing and demos only.\n\n## Before you call either\n\n### OpenCage Geocoding API\n\n1. Add no_annotations=1 and limit=1 when you only need coordinates\n2. Stop on 402, which means the day's quota is gone, and back off on 429\n3. Add no_record=1 when the query holds personal data\n4. Redact the key parameter before logging request URLs\n5. Credit OpenStreetMap wherever you show results\n\n### Stadia Maps\n\n1. Send the key as `Authorization: Stadia-Auth \u003ckey\u003e` rather than in the URL\n2. Try Autocomplete v2 (1 credit) before a full geocode (20 credits) when a name is enough\n3. Check the dashboard's credit balance before retrying a 429, since it may mean the month is spent\n4. Don't write geocodes to a database on Free or Starter\n5. Use bulk-geocode for addresses only, not POI names\n\n## Other comparisons with OpenCage Geocoding API or Stadia Maps\n\n- [Geoapify Location Platform + MCP vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/geoapify-vs-opencage.md)\n- [Geoapify Location Platform + MCP vs Stadia Maps](https://www.anchorterminal.com/compare/geoapify-vs-stadia-maps.md)\n- [Google Maps Platform + Grounding Lite MCP vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/google-maps-platform-vs-opencage.md)\n- [Google Maps Platform + Grounding Lite MCP vs Stadia Maps](https://www.anchorterminal.com/compare/google-maps-platform-vs-stadia-maps.md)\n- [LocationIQ vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/locationiq-vs-opencage.md)\n- [LocationIQ vs Stadia Maps](https://www.anchorterminal.com/compare/locationiq-vs-stadia-maps.md)\n- [Mapbox APIs + MCP vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/mapbox-vs-opencage.md)\n- [Mapbox APIs + MCP vs Stadia Maps](https://www.anchorterminal.com/compare/mapbox-vs-stadia-maps.md)\n- [OpenCage Geocoding API vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/opencage-vs-tomtom.md)\n- [Stadia Maps vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/stadia-maps-vs-tomtom.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "OpenCage Geocoding API vs Stadia Maps",
        "url": ""
      }
    ],
    "description": "OpenCage Geocoding API has a score of 69.5 (B) against Stadia Maps's 65.5 (B). Both do geo geocode. The largest gap is reliability, 22 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "OpenCage Geocoding API B 69.5",
      "Stadia Maps B 65.5",
      "scores"
    ],
    "h1": "OpenCage Geocoding API vs Stadia Maps",
    "image": "https://www.anchorterminal.com/assets/og/compare-opencage-vs-stadia-maps.png",
    "path": "/compare/opencage-vs-stadia-maps",
    "published": "2026-10-01",
    "section": "tools",
    "title": "OpenCage Geocoding API vs Stadia Maps for AI agents, B 69.5 vs B 65.5",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/compare/opencage-vs-stadia-maps"
  },
  "tokens": {
    "markdown": 1400,
    "slim": 380
  },
  "version": 1
}
