{
  "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",
      "dns": "opencage.grade.anchorterminal.com",
      "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-10-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.5,
        "grade": "B",
        "agentReady": false,
        "rank": 320,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 86,
          "maintenance": 86,
          "payments": 35,
          "reliability": 85,
          "schema": 77,
          "security": 44,
          "transparency": 85
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-11-01"
        },
        "negative": -3,
        "negativeNotes": [
          "-3, one term for a breaking change marked in a minor release of the listing's own Python package with no advance notice found. opencage 3.5.0 (28 October 2026) raises network errors from requests and aiohttp as the new NetworkError and NetworkTimeoutError, and its changelog says 'Code catching requests.exceptions.* or aiohttp.ClientError must catch these instead'. The same release raised the minimum Python to 3.10, which isn't counted, as runtime-floor raises weren't for massive or vespa. https://github.com/OpenCageData/python-opencage-geocoder/blob/master/Changes.txt and https://pypi.org/project/opencage"
        ],
        "verdict": "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.",
        "bestFor": "Bulk or repeated geocoding where results go into a database, and for EU data residency.",
        "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",
          "Python SDK 3.5.0 (28 October 2026) replaced the network exceptions callers catch, in a minor release",
          "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, and the security bounty is on hold until December 2026"
        ],
        "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, 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"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.5
          }
        ],
        "editorialScores": {
          "ergonomics": 86,
          "maintenance": 86,
          "payments": 35,
          "reliability": 85,
          "schema": 77,
          "security": 44,
          "transparency": 84
        },
        "provenanceScore": 86,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-11-01",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 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-11-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": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/opencage.json",
      "live": {
        "slug": "opencage",
        "probe": {
          "target": "https://api.opencagedata.com/geocode/v1/json",
          "method": "get",
          "lastAt": "2026-11-07T18:20:44.523465145Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 158,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 195,
          "p95ms24h": 389,
          "samples24h": 239,
          "samples30d": 7910,
          "days": [
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.opencagedata.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:31.928505068Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.github.OpenCageData/opencage-geocoding-mcp",
            "version": "1.0.3",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "@opencage/mcp-opencage-server",
            "version": "1.0.3",
            "seenAt": "2026-11-06T23:52:21.882746366Z"
          },
          {
            "registry": "npm",
            "name": "opencage-api-client",
            "version": "2.2.0",
            "seenAt": "2026-11-06T23:52:22.72317589Z"
          },
          {
            "registry": "pypi",
            "name": "opencage",
            "version": "3.5.0",
            "released": "2026-10-28",
            "seenAt": "2026-11-06T23:52:24.090076618Z"
          }
        ],
        "githubStars": 19,
        "npmWeekly": 45,
        "pypiWeekly": 346657,
        "securityTxt": {
          "url": "https://opencagedata.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-01-31T00:00:00z",
          "checkedAt": "2026-11-07T16:01:09.068391294Z"
        },
        "llmsTxt": {
          "url": "https://opencagedata.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:30.784821868Z"
        },
        "domain": {
          "domain": "opencagedata.com",
          "registered": "2013-05-16",
          "source": "https://rdap.verisign.com/com/v1/domain/opencagedata.com",
          "checkedAt": "2026-11-01T14:26:05.491227039Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/OpenCageData/opencagedata-misc-docs/master/CHANGES.md",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-11-07T14:19:03.194124022Z",
            "changedAt": "2026-11-05T13:03:27.937602667Z",
            "fingerprint": "e945174b90a2"
          },
          {
            "url": "https://opencagedata.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:15:27.242684147Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2a4d55e4f714"
          },
          {
            "url": "https://opencagedata.com/gdpr",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:15:25.157944889Z",
            "changedAt": "2026-10-07T18:07:57.615589937Z",
            "fingerprint": "a8a426817cc3"
          },
          {
            "url": "https://opencagedata.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:15:29.307317397Z",
            "changedAt": "2026-10-07T18:08:01.691588303Z",
            "fingerprint": "30104a7082ce"
          }
        ],
        "github": {
          "repo": "opencagedata/opencage-geocoding-mcp",
          "checkedAt": "2026-11-02T09:13:16.433427419Z",
          "stars": 19,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-01T17:35:18Z",
          "openIssues": 0,
          "openPRs": 1,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 21,
          "ci": {
            "branch": "master",
            "runs": 50,
            "success": 50,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-11-01T17:36:13Z"
          }
        },
        "updatedAt": "2026-11-07T18:20:44.523465145Z"
      }
    },
    "answer": "OpenCage Geocoding API scores 67.5 (B) on agent readiness against Woosmap's 59.4 (C), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "woosmap",
      "name": "Woosmap",
      "vendor": "WOOSMAP SAS",
      "vendorUrl": "https://www.woosmap.com",
      "kind": "http-api",
      "category": "maps",
      "summary": "Woosmap is a French location platform with REST APIs for address autocomplete and geocoding (Localities), store search, distance and routing, geolocation, indoor maps and map display, plus a hosted MCP server for AI assistants.",
      "url": "https://www.anchorterminal.com/tools/woosmap",
      "markdownUrl": "https://www.anchorterminal.com/tools/woosmap.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/woosmap.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/woosmap.json",
      "dns": "woosmap.grade.anchorterminal.com",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.woosmap.com/mcp",
      "packages": [],
      "auth": "api-key",
      "authNotes": "Keys from the Woosmap Console after a browser signup. Public keys (woos-...) are read-only and must be restricted to domains or IPs. Private keys are read-only or read and write, fixed at creation, restricted by IP, iOS or Android, and sent as the X-Api-Key header or the private_key query parameter. The MCP server takes a private key in the X-Api-Key header.",
      "pricing": "freemium",
      "pricingNotes": "Free plan up to 10,000 API requests a month with no credit card. Pro uses public volume tiers per API, shown in a calculator, and can be bought through AWS Marketplace. Enterprise is by quote with volume discounts, data caching options and a 99.9% SLA.",
      "priceSummary": "Freemium",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the OpenAPI spec, llms.txt or pricing page (checked 2026-11-06). The spec documents a 402 response for billing, not a payment protocol.",
        "endpoints": []
      },
      "toolCount": 9,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://developers.woosmap.com/",
      "llmsTxt": "https://developers.woosmap.com/llms.txt",
      "openapi": "https://developers.woosmap.com/assets/woosmap-openapi3.json",
      "capabilities": [
        "geo.geocode",
        "geo.reverse",
        "geo.places",
        "geo.routing",
        "geo.tiles"
      ],
      "tags": [
        "hosted",
        "mcp",
        "remote-mcp",
        "api-key",
        "freemium",
        "free-tier",
        "no-card",
        "llms-txt",
        "openapi",
        "official",
        "status-page",
        "enterprise",
        "sla",
        "eu",
        "android",
        "ios",
        "closed-source"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59.4,
        "grade": "C",
        "agentReady": false,
        "rank": 704,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 12,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 76,
          "maintenance": 26,
          "payments": 30,
          "reliability": 78,
          "schema": 81,
          "security": 43,
          "transparency": 54
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Woosmap publishes an OpenAPI 3.1 spec, llms.txt with Markdown pages, per-endpoint rate limits and 429 retry rules, plus a hosted nine-tool MCP server. No changelog, security.txt, API data retention statement or readable per-request price was found, and private keys can travel in the query string.",
        "bestFor": "Store locators, address autocomplete and distance for retail and logistics teams that keep their own location data in the platform, with an MCP server for agents.",
        "strengths": [
          "OpenAPI 3.1 spec with 47 paths, llms.txt routing index and Markdown twins of every page",
          "Per-endpoint rate limits with RateLimit headers and explicit 429 retry rules and sample code",
          "Hosted MCP server at api.woosmap.com/mcp with nine tools, including search over the customer's own store data",
          "Read-only and read/write private keys with IP, iOS or Android restrictions and an X-Api-Key header",
          "Free plan of 10,000 requests a month with no card"
        ],
        "weaknesses": [
          "No public changelog or release notes for the APIs",
          "No security.txt, disclosure policy or certification found",
          "The privacy policy covers the website only, with nothing on API data retention",
          "Per-request prices aren't readable without the script-driven calculator",
          "`private_key` in the query string is documented and is the spec's default scheme"
        ],
        "agentNotes": [
          "Send the private key in the X-Api-Key header, not the private_key query parameter",
          "Use a read-only private key for the MCP server unless the task writes stores or datasets",
          "On 429 wait the `t` seconds from the RateLimit header, retry at most three times, and pause batches when `r` reaches 0",
          "Use find_stores_nearby for the customer's own locations and find_nearby for public POIs",
          "Read endpoint parameters from the /api-reference/ Markdown pages, which llms.txt marks as authoritative"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59.4
          }
        ],
        "editorialScores": {
          "ergonomics": 76,
          "maintenance": 26,
          "payments": 30,
          "reliability": 78,
          "schema": 81,
          "security": 43,
          "transparency": 31
        },
        "provenanceScore": 76,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -H \"X-Api-Key: $WOOSMAP_PRIVATE_KEY\" \"https://api.woosmap.com/localities/geocode?address=Place+de+la+Comedie+Montpellier\"",
        "config": {
          "mcpServers": {
            "woosmap": {
              "args": [
                "mcp-remote",
                "https://api.woosmap.com/mcp",
                "--header",
                "X-Api-Key: PRIVATE_KEY"
              ],
              "command": "npx"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/geo.geocode",
        "tool": "https://letme.dev/woosmap"
      },
      "area": "everyday",
      "provenance": {
        "legalEntity": "WOOSMAP SAS",
        "domain": "woosmap.com",
        "domainRegistered": "2010-06-04",
        "endpointOnVendorDomain": true,
        "terms": "https://www.woosmap.com/policies/terms-online",
        "privacy": "https://www.woosmap.com/policies/privacy",
        "statusPage": "https://status.woosmap.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The online terms name WOOSMAP, a French SAS at 5 rue du Plan du Palais, 34000 Montpellier, RCS Montpellier 983 770 405, represented by its CEO Jean-Thomas Rouzin. The legal notice (effective 1 July 2024) gives SAS capital of €10,821,200 and AWS as the site host.",
          "status.woosmap.com's robots.txt disallows /api/ and /embed/. A request to /api/v2/incidents.json was sent by mistake on 6 November 2026 before robots.txt was read; its contents are not used anywhere in this listing.",
          "www.woosmap.com/.well-known/security.txt returns 404.",
          "No public API changelog was found. developers.woosmap.com/changelog/ and /release-notes/ return 404.",
          "RDAP gives woosmap.com a registration date of 4 June 2010. robots.txt on www.woosmap.com and developers.woosmap.com allows these pages, and the developer site's robots.txt allows llms.txt by name."
        ],
        "score": 76
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/woosmap.json",
      "live": {
        "slug": "woosmap",
        "probe": {
          "target": "https://api.woosmap.com/mcp",
          "method": "get",
          "lastAt": "2026-11-07T18:21:05.894098339Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 219,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 48,
          "p95ms24h": 118,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.woosmap.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T18:22:11.709282208Z"
        },
        "securityTxt": {
          "url": "https://woosmap.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:21.81706489Z"
        },
        "llmsTxt": {
          "url": "https://developers.woosmap.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:23.501072242Z"
        },
        "pages": [
          {
            "url": "https://www.woosmap.com/policies/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:37:14.116262014Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "99523833ae5e"
          },
          {
            "url": "https://www.woosmap.com/policies/terms-online",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:37:19.402817389Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6252e1bc3d91"
          }
        ],
        "updatedAt": "2026-11-07T18:22:11.709282208Z"
      }
    },
    "edges": [
      {
        "by": 60,
        "category": "maintenance",
        "leads": "opencage",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "The newest API changelog entry is 15 October 2026 (SMDG port terminal codes), and the Python SDK released 3.5.0 on 28 October 2026, both within 30 days (30). Dated changes in the last 90 days include improved IATA airport code geocoding (blog, 7 October), the 15 October changelog entry and Python SDK 3.5.0, with spreadsheet upload improvements on 14 August (20). Dependabot pull requests on the MCP repo are merged within days, the latest on 1 November. We couldn't see issue reply times from git (15). In the official MCP registry as io.github.OpenCageData/opencage-geocoding-mcp, and the Python SDK is current at 3.5.0 (15). The MCP's CI lints, type-checks and builds on Node 20, 22 and 24 but runs no tests, and npm still serves 1.0.3 from 11 September 2025 while the repo is at 1.0.5 (6).",
          "b": "No dated API release, changelog or release note found. The newest dated activity we saw is the public woosmap-samples repository on 16 September 2026, which isn't an API release (10). No dated changes to count in the last 90 days (0). Support by email and a support centre, with no public changelog (5). Official JavaScript, iOS and Android SDKs exist, but we couldn't check their versions because the GitHub API was rate-limited and two SDK repository names didn't resolve; the MCP server isn't in the official MCP registry (8). The samples carry tests, per the rate-limits page (3). 10+0+5+8+3 = 26."
        },
        "scores": {
          "a": 86,
          "b": 26
        }
      },
      {
        "by": 31,
        "category": "transparency",
        "leads": "opencage",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service with clear terms, an MIT MCP server and open-source SDKs (20). Results may be stored permanently, even after cancelling. Query logs are deleted after six months and never used to train AI, no_record turns query logging off, and the DPA is public on GitHub. The GDPR page was updated 22 July 2026 with its change history (30). A dated API changelog that announces deprecations, such as the jsonp parameter on 11 May 2026, which keeps working for existing customers. No written deprecation policy (14). Seven subprocessors with locations, and hosting at Hetzner in Germany and Finland with backups in Switzerland (20).",
          "b": "Editorial half only. Closed service under online terms that name WOOSMAP SAS of Montpellier and the Commercial Court of Paris (15). The privacy policy covers website visitors only, and we found no statement on how long API request data is kept (5). The pricing page says the Address API is 'being deprecated for Pro Plan subscriptions', with no date (5). The legal notice says the site is hosted by Amazon Web Services; no sub-processor list or data location for the APIs was found (6). 15+5+5+6 = 31."
        },
        "scores": {
          "a": 85,
          "b": 54
        }
      },
      {
        "by": 10,
        "category": "ergonomics",
        "leads": "opencage",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "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).",
          "b": "API reading, with the hosted MCP server's nine tools as a second surface. Localities and Stores responses can be narrowed by type, components and fields, and the MCP set is small (20). Store search takes query filters, radius and paging, and the Distance Matrix has an async mode for large jobs (17). Documented error codes including 402 for billing and 429 with reset timing (17). Reads are safe to retry, but no idempotency key was found for the Datasets and Stores write endpoints, and the MCP docs don't mention tool annotations (10). Official JavaScript, iOS and Android SDKs and samples in Python and JavaScript, with few required parameters (12). 20+17+17+10+12 = 76."
        },
        "scores": {
          "a": 86,
          "b": 76
        }
      },
      {
        "by": 7,
        "category": "reliability",
        "leads": "opencage",
        "name": "Reliability",
        "reasons": {
          "a": "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).",
          "b": "Hosted lines. Atlassian Statuspage at status.woosmap.com with seven components (Localities, Store Search, Geolocation, Distance, Address, Map and Indoor APIs) (20). The status home page lists no incidents from 23 October to 6 November 2026. The full history page loads by script and the site's robots.txt disallows /api/, so the rest of the 90 days wasn't read and the line is held between the unreadable and minor tiers (10). Each endpoint's reference states its own rate limit, such as 50 a second, shared by a project's keys (15). Every response carries RateLimit-Policy and RateLimit headers, and the rate-limits page says to wait `t` seconds after a 429, retry at most three times and back off 1, 2 and 4 seconds when the header is missing, with sample code (15). A 99.9% SLA on the Enterprise plan per the pricing page; we didn't read its terms (8). GA (10). 20+10+15+15+8+10 = 78."
        },
        "scores": {
          "a": 85,
          "b": 78
        }
      },
      {
        "by": 5,
        "category": "payments",
        "leads": "opencage",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "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).",
          "b": "No x402, MPP or L402 (0). Plans and per-API tier breakpoints are public, but per-request prices sit in a script-driven calculator we couldn't read, so plan-only credit (10). Free plan up to 10,000 requests a month with 'No Credit Card Required' (20). A person signs up and creates a key in the console (0). 0+10+20+0 = 30."
        },
        "scores": {
          "a": 35,
          "b": 30
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "OpenCage",
        "b": "WOOSMAP SAS",
        "name": "Vendor"
      },
      {
        "a": "https://api.opencagedata.com/geocode/v1/json",
        "b": "https://api.woosmap.com/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, stdio",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT (MCP server)",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "3",
        "b": "9",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "io.github.OpenCageData/opencage-geocoding-mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-28",
        "b": "none",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2024-07-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "19 stars, 5.5k npm/wk, 138k PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "3.5/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "OpenCage Geocoding API scores 67.5 (B) on agent readiness against Woosmap's 59.4 (C), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, OpenCage Geocoding API or Woosmap?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do OpenCage Geocoding API and Woosmap need an API key?"
      },
      {
        "answer": "Yes. OpenCage Geocoding API has a hosted endpoint at https://api.opencagedata.com/geocode/v1/json and Woosmap at https://api.woosmap.com/mcp.",
        "question": "Can an agent call OpenCage Geocoding API and Woosmap without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 85 against 78",
          "Agent ergonomics, 86 against 76",
          "Payments \u0026 pricing, 35 against 30",
          "Maintenance \u0026 community, 86 against 26",
          "Transparency \u0026 trust, 85 against 54"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "Bulk or repeated geocoding where results go into a database, and for EU data residency.",
        "slug": "opencage",
        "watchFor": "Geocoding only, no place search or routing"
      },
      {
        "aheadOn": null,
        "also": [
          "No incidents deducted, where OpenCage Geocoding API loses 3 points for them"
        ],
        "goodFor": "Store locators, address autocomplete and distance for retail and logistics teams that keep their own location data in the platform, with an MCP server for agents.",
        "slug": "woosmap",
        "watchFor": "No public changelog or release notes for the APIs"
      }
    ],
    "history": {
      "opencage": [
        {
          "causes": [
            "security",
            "product",
            "event"
          ],
          "date": "2026-11-01",
          "delta": -1.8,
          "from": 69.3,
          "fromGrade": "B",
          "to": 67.5,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 69.2,
          "fromGrade": "B",
          "to": 69.3,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.3,
          "from": 69.5,
          "fromGrade": "B",
          "to": 69.2,
          "toGrade": "B"
        }
      ],
      "woosmap": null
    },
    "job": {
      "capability": "geo.geocode",
      "name": "Geocoding"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-location-vs-opencage.json",
        "title": "Amazon Location Service vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/amazon-location-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-location-vs-woosmap.json",
        "title": "Amazon Location Service vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/amazon-location-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/arcgis-vs-opencage.json",
        "title": "ArcGIS Location Platform vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/arcgis-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/arcgis-vs-woosmap.json",
        "title": "ArcGIS Location Platform vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/arcgis-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-opencage.json",
        "title": "Azure Maps vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-woosmap.json",
        "title": "Azure Maps vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geoapify-vs-opencage.json",
        "title": "Geoapify Location Platform + MCP vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/geoapify-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geoapify-vs-woosmap.json",
        "title": "Geoapify Location Platform + MCP vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/geoapify-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-opencage.json",
        "title": "Geocodio vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-woosmap.json",
        "title": "Geocodio vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-maps-platform-vs-opencage.json",
        "title": "Google Maps Platform + Grounding Lite MCP vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/google-maps-platform-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-maps-platform-vs-woosmap.json",
        "title": "Google Maps Platform + Grounding Lite MCP vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/google-maps-platform-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/here-location-services-vs-opencage.json",
        "title": "HERE Location Services vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/here-location-services-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/here-location-services-vs-woosmap.json",
        "title": "HERE Location Services vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/here-location-services-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/locationiq-vs-opencage.json",
        "title": "LocationIQ vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/locationiq-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/locationiq-vs-woosmap.json",
        "title": "LocationIQ vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/locationiq-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mapbox-vs-opencage.json",
        "title": "Mapbox APIs + MCP vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/mapbox-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mapbox-vs-woosmap.json",
        "title": "Mapbox APIs + MCP vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/mapbox-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mapquest-vs-opencage.json",
        "title": "MapQuest vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/mapquest-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mapquest-vs-woosmap.json",
        "title": "MapQuest vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/mapquest-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/maptiler-vs-opencage.json",
        "title": "MapTiler Cloud vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/maptiler-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/maptiler-vs-woosmap.json",
        "title": "MapTiler Cloud vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/maptiler-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nextbillion-vs-opencage.json",
        "title": "NextBillion.ai vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/nextbillion-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nominatim-vs-opencage.json",
        "title": "Nominatim vs OpenCage Geocoding API",
        "url": "https://www.anchorterminal.com/compare/nominatim-vs-opencage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nominatim-vs-woosmap.json",
        "title": "Nominatim vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/nominatim-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencage-vs-radar.json",
        "title": "OpenCage Geocoding API vs Radar",
        "url": "https://www.anchorterminal.com/compare/opencage-vs-radar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencage-vs-stadia-maps.json",
        "title": "OpenCage Geocoding API vs Stadia Maps",
        "url": "https://www.anchorterminal.com/compare/opencage-vs-stadia-maps"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencage-vs-tomtom.json",
        "title": "OpenCage Geocoding API vs TomTom Maps APIs + MCP",
        "url": "https://www.anchorterminal.com/compare/opencage-vs-tomtom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/radar-vs-woosmap.json",
        "title": "Radar vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/radar-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/stadia-maps-vs-woosmap.json",
        "title": "Stadia Maps vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/stadia-maps-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/tomtom-vs-woosmap.json",
        "title": "TomTom Maps APIs + MCP vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/tomtom-vs-woosmap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nextbillion-vs-woosmap.json",
        "title": "NextBillion.ai vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/nextbillion-vs-woosmap"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 7,
        "edge": "opencage",
        "key": "reliability",
        "name": "Reliability",
        "opencage": 85,
        "weight": 16,
        "woosmap": 78
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 4,
        "edge": "woosmap",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "opencage": 77,
        "weight": 13,
        "woosmap": 81
      },
      {
        "by": 10,
        "edge": "opencage",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "opencage": 86,
        "weight": 13,
        "woosmap": 76
      },
      {
        "by": 1,
        "edge": "opencage",
        "key": "security",
        "name": "Security \u0026 auth",
        "opencage": 44,
        "weight": 14,
        "woosmap": 43
      },
      {
        "by": 5,
        "edge": "opencage",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "opencage": 35,
        "weight": 10,
        "woosmap": 30
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 60,
        "edge": "opencage",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "opencage": 86,
        "weight": 7,
        "woosmap": 26
      },
      {
        "by": 31,
        "edge": "opencage",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "opencage": 85,
        "weight": 7,
        "woosmap": 54
      }
    ],
    "summary": "OpenCage Geocoding API scores 67.5 (B) on agent readiness against Woosmap's 59.4 (C), and leads in 6 of 7 scored categories. Both do geocoding.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "opencage": "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.",
      "woosmap": "Woosmap publishes an OpenAPI 3.1 spec, llms.txt with Markdown pages, per-endpoint rate limits and 429 retry rules, plus a hosted nine-tool MCP server. No changelog, security.txt, API data retention statement or readable per-request price was found, and private keys can travel in the query string."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/opencage-vs-woosmap",
    "json": "https://www.anchorterminal.com/compare/opencage-vs-woosmap.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/opencage-vs-woosmap.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/opencage-vs-woosmap.min.md"
  },
  "markdown": "OpenCage Geocoding API scores 67.5 (B) on agent readiness against Woosmap's 59.4 (C), and leads in 6 of 7 scored categories. Both do geocoding.\n\n- OpenCage Geocoding API: grade B, 67.5/100, rank #320 of 1486. Markdown https://www.anchorterminal.com/tools/opencage.md · JSON https://www.anchorterminal.com/api/v1/tools/opencage.json\n- Woosmap: grade C, 59.4/100, rank #704 of 1486. Markdown https://www.anchorterminal.com/tools/woosmap.md · JSON https://www.anchorterminal.com/api/v1/tools/woosmap.json\n- Best maps, geocoding and places APIs for AI agents: https://www.anchorterminal.com/best/maps/index.md\n- All 153 maps comparisons: https://www.anchorterminal.com/compare/maps/index.md\n\n## Which one, for what\n\n### OpenCage Geocoding API (B)\n\nGood for: Bulk or repeated geocoding where results go into a database, and for EU data residency.\n\nAhead on:\n- Reliability, 85 against 78\n- Agent ergonomics, 86 against 76\n- Payments \u0026 pricing, 35 against 30\n- Maintenance \u0026 community, 86 against 26\n- Transparency \u0026 trust, 85 against 54\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: Geocoding only, no place search or routing\n\n### Woosmap (C)\n\nGood for: Store locators, address autocomplete and distance for retail and logistics teams that keep their own location data in the platform, with an MCP server for agents.\n\nAlso in its favour:\n- No incidents deducted, where OpenCage Geocoding API loses 3 points for them\n\nWatch for: No public changelog or release notes for the APIs\n\n\n## Why the edge\n\n### Maintenance \u0026 community: OpenCage Geocoding API +60\n\n- OpenCage Geocoding API (86): The newest API changelog entry is 15 October 2026 (SMDG port terminal codes), and the Python SDK released 3.5.0 on 28 October 2026, both within 30 days (30). Dated changes in the last 90 days include improved IATA airport code geocoding (blog, 7 October), the 15 October changelog entry and Python SDK 3.5.0, with spreadsheet upload improvements on 14 August (20). Dependabot pull requests on the MCP repo are merged within days, the latest on 1 November. We couldn't see issue reply times from git (15). In the official MCP registry as io.github.OpenCageData/opencage-geocoding-mcp, and the Python SDK is current at 3.5.0 (15). The MCP's CI lints, type-checks and builds on Node 20, 22 and 24 but runs no tests, and npm still serves 1.0.3 from 11 September 2025 while the repo is at 1.0.5 (6).\n- Woosmap (26): No dated API release, changelog or release note found. The newest dated activity we saw is the public woosmap-samples repository on 16 September 2026, which isn't an API release (10). No dated changes to count in the last 90 days (0). Support by email and a support centre, with no public changelog (5). Official JavaScript, iOS and Android SDKs exist, but we couldn't check their versions because the GitHub API was rate-limited and two SDK repository names didn't resolve; the MCP server isn't in the official MCP registry (8). The samples carry tests, per the rate-limits page (3). 10+0+5+8+3 = 26.\n\n### Transparency \u0026 trust: OpenCage Geocoding API +31\n\n- OpenCage Geocoding API (85): Closed service with clear terms, an MIT MCP server and open-source SDKs (20). Results may be stored permanently, even after cancelling. Query logs are deleted after six months and never used to train AI, no_record turns query logging off, and the DPA is public on GitHub. The GDPR page was updated 22 July 2026 with its change history (30). A dated API changelog that announces deprecations, such as the jsonp parameter on 11 May 2026, which keeps working for existing customers. No written deprecation policy (14). Seven subprocessors with locations, and hosting at Hetzner in Germany and Finland with backups in Switzerland (20).\n- Woosmap (54): Editorial half only. Closed service under online terms that name WOOSMAP SAS of Montpellier and the Commercial Court of Paris (15). The privacy policy covers website visitors only, and we found no statement on how long API request data is kept (5). The pricing page says the Address API is 'being deprecated for Pro Plan subscriptions', with no date (5). The legal notice says the site is hosted by Amazon Web Services; no sub-processor list or data location for the APIs was found (6). 15+5+5+6 = 31.\n\n### Agent ergonomics: OpenCage Geocoding API +10\n\n- 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).\n- Woosmap (76): API reading, with the hosted MCP server's nine tools as a second surface. Localities and Stores responses can be narrowed by type, components and fields, and the MCP set is small (20). Store search takes query filters, radius and paging, and the Distance Matrix has an async mode for large jobs (17). Documented error codes including 402 for billing and 429 with reset timing (17). Reads are safe to retry, but no idempotency key was found for the Datasets and Stores write endpoints, and the MCP docs don't mention tool annotations (10). Official JavaScript, iOS and Android SDKs and samples in Python and JavaScript, with few required parameters (12). 20+17+17+10+12 = 76.\n\n### Reliability: OpenCage Geocoding API +7\n\n- 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).\n- Woosmap (78): Hosted lines. Atlassian Statuspage at status.woosmap.com with seven components (Localities, Store Search, Geolocation, Distance, Address, Map and Indoor APIs) (20). The status home page lists no incidents from 23 October to 6 November 2026. The full history page loads by script and the site's robots.txt disallows /api/, so the rest of the 90 days wasn't read and the line is held between the unreadable and minor tiers (10). Each endpoint's reference states its own rate limit, such as 50 a second, shared by a project's keys (15). Every response carries RateLimit-Policy and RateLimit headers, and the rate-limits page says to wait `t` seconds after a 429, retry at most three times and back off 1, 2 and 4 seconds when the header is missing, with sample code (15). A 99.9% SLA on the Enterprise plan per the pricing page; we didn't read its terms (8). GA (10). 20+10+15+15+8+10 = 78.\n\n### Payments \u0026 pricing: OpenCage Geocoding API +5\n\n- 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).\n- Woosmap (30): No x402, MPP or L402 (0). Plans and per-API tier breakpoints are public, but per-request prices sit in a script-driven calculator we couldn't read, so plan-only credit (10). Free plan up to 10,000 requests a month with 'No Credit Card Required' (20). A person signs up and creates a key in the console (0). 0+10+20+0 = 30.\n\n## Score by category\n\n| Category | Weight | OpenCage Geocoding API | Woosmap | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 85 | 78 | OpenCage Geocoding API +7 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 81 | Woosmap +4 |\n| Agent ergonomics | 13% (16.2 this run) | 86 | 76 | OpenCage Geocoding API +10 |\n| Security \u0026 auth | 14% (17.5 this run) | 44 | 43 | OpenCage Geocoding API +1 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 30 | OpenCage Geocoding API +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 86 | 26 | OpenCage Geocoding API +60 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 85 | 54 | OpenCage Geocoding API +31 |\n| Negative events | ≤15 | -3 | 0 | |\n| **Total** | | **67.5 · B** | **59.4 · C** | |\n\n## Facts side by side\n\n| Fact | OpenCage Geocoding API | Woosmap |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | OpenCage | WOOSMAP SAS |\n| Hosted endpoint | `https://api.opencagedata.com/geocode/v1/json` | `https://api.woosmap.com/mcp` |\n| Transports | HTTP, stdio | HTTP, Streamable HTTP |\n| Auth | API key | API key |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | MIT (MCP server) | none |\n| Tools exposed | 3 | 9 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | `io.github.OpenCageData/opencage-geocoding-mcp` | not listed |\n| Last release | 2026-10-28 | none |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | no date given | 2024-07-01 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 19 stars, 5.5k npm/wk, 138k PyPI/wk | none |\n| Agent reviews | 3.5/5 (2) | none |\n\n## How the scores have moved\n\n### OpenCage Geocoding API\n\n- -1.8 on 1 November 2026: security, product, negative event\n- +0.1 on 27 October 2026: checklist\n- -0.3 on 8 October 2026: checklist\n\n### Woosmap\n\nNo score change since it was listed.\n\n## Verdicts\n\n**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.\n\n**Woosmap.** Woosmap publishes an OpenAPI 3.1 spec, llms.txt with Markdown pages, per-endpoint rate limits and 429 retry rules, plus a hosted nine-tool MCP server. No changelog, security.txt, API data retention statement or readable per-request price was found, and private keys can travel in the query string.\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, and redact the key parameter before logging request URLs\n4. On Python SDK 3.5.0 or later, catch NetworkError and NetworkTimeoutError instead of requests or aiohttp exceptions\n5. Credit OpenStreetMap wherever you show results\n\n### Woosmap\n\n1. Send the private key in the X-Api-Key header, not the private_key query parameter\n2. Use a read-only private key for the MCP server unless the task writes stores or datasets\n3. On 429 wait the `t` seconds from the RateLimit header, retry at most three times, and pause batches when `r` reaches 0\n4. Use find_stores_nearby for the customer's own locations and find_nearby for public POIs\n5. Read endpoint parameters from the /api-reference/ Markdown pages, which llms.txt marks as authoritative\n\n## Questions\n\n### Which is better for AI agents, OpenCage Geocoding API or Woosmap?\n\nOpenCage Geocoding API scores 67.5 (B) on agent readiness against Woosmap's 59.4 (C), and leads in 6 of 7 scored categories.\n\n### Do OpenCage Geocoding API and Woosmap need an API key?\n\nBoth need an API key.\n\n### Can an agent call OpenCage Geocoding API and Woosmap without installing anything?\n\nYes. OpenCage Geocoding API has a hosted endpoint at https://api.opencagedata.com/geocode/v1/json and Woosmap at https://api.woosmap.com/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/opencage-vs-woosmap.json, and with the fewest tokens: https://www.anchorterminal.com/compare/opencage-vs-woosmap.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"opencage\", \"b\": \"woosmap\"}`. From a terminal: `anchor compare opencage woosmap`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/opencage.json and https://www.anchorterminal.com/api/v1/tools/woosmap.json\n\n## Other comparisons with OpenCage Geocoding API or Woosmap\n\n- [Amazon Location Service vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/amazon-location-vs-opencage.md)\n- [Amazon Location Service vs Woosmap](https://www.anchorterminal.com/compare/amazon-location-vs-woosmap.md)\n- [ArcGIS Location Platform vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/arcgis-vs-opencage.md)\n- [ArcGIS Location Platform vs Woosmap](https://www.anchorterminal.com/compare/arcgis-vs-woosmap.md)\n- [Azure Maps vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/azure-maps-vs-opencage.md)\n- [Azure Maps vs Woosmap](https://www.anchorterminal.com/compare/azure-maps-vs-woosmap.md)\n- [Geoapify Location Platform + MCP vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/geoapify-vs-opencage.md)\n- [Geoapify Location Platform + MCP vs Woosmap](https://www.anchorterminal.com/compare/geoapify-vs-woosmap.md)\n- [Geocodio vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/geocodio-vs-opencage.md)\n- [Geocodio vs Woosmap](https://www.anchorterminal.com/compare/geocodio-vs-woosmap.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 Woosmap](https://www.anchorterminal.com/compare/google-maps-platform-vs-woosmap.md)\n- [HERE Location Services vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/here-location-services-vs-opencage.md)\n- [HERE Location Services vs Woosmap](https://www.anchorterminal.com/compare/here-location-services-vs-woosmap.md)\n- [LocationIQ vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/locationiq-vs-opencage.md)\n- [LocationIQ vs Woosmap](https://www.anchorterminal.com/compare/locationiq-vs-woosmap.md)\n- [Mapbox APIs + MCP vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/mapbox-vs-opencage.md)\n- [Mapbox APIs + MCP vs Woosmap](https://www.anchorterminal.com/compare/mapbox-vs-woosmap.md)\n- [MapQuest vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/mapquest-vs-opencage.md)\n- [MapQuest vs Woosmap](https://www.anchorterminal.com/compare/mapquest-vs-woosmap.md)\n- [MapTiler Cloud vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/maptiler-vs-opencage.md)\n- [MapTiler Cloud vs Woosmap](https://www.anchorterminal.com/compare/maptiler-vs-woosmap.md)\n- [NextBillion.ai vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/nextbillion-vs-opencage.md)\n- [Nominatim vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/nominatim-vs-opencage.md)\n- [Nominatim vs Woosmap](https://www.anchorterminal.com/compare/nominatim-vs-woosmap.md)\n- [OpenCage Geocoding API vs Radar](https://www.anchorterminal.com/compare/opencage-vs-radar.md)\n- [OpenCage Geocoding API vs Stadia Maps](https://www.anchorterminal.com/compare/opencage-vs-stadia-maps.md)\n- [OpenCage Geocoding API vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/opencage-vs-tomtom.md)\n- [Radar vs Woosmap](https://www.anchorterminal.com/compare/radar-vs-woosmap.md)\n- [Stadia Maps vs Woosmap](https://www.anchorterminal.com/compare/stadia-maps-vs-woosmap.md)\n- [TomTom Maps APIs + MCP vs Woosmap](https://www.anchorterminal.com/compare/tomtom-vs-woosmap.md)\n- [NextBillion.ai vs Woosmap](https://www.anchorterminal.com/compare/nextbillion-vs-woosmap.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "OpenCage Geocoding API vs Woosmap",
        "url": ""
      }
    ],
    "description": "OpenCage Geocoding scores 67.5 (B) to Woosmap's 59.4 (C) for geocoding. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "OpenCage Geocoding API B 67.5",
      "Woosmap C 59.4",
      "scores"
    ],
    "h1": "OpenCage Geocoding API vs Woosmap",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/opencage-vs-woosmap",
    "published": "2026-10-01",
    "section": "tools",
    "title": "OpenCage Geocoding vs Woosmap for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/opencage-vs-woosmap"
  },
  "tokens": {
    "markdown": 4300,
    "slim": 2230
  },
  "version": 1
}
