{
  "data": {
    "a": {
      "slug": "azure-maps",
      "name": "Azure Maps",
      "vendor": "Microsoft",
      "vendorUrl": "https://azure.microsoft.com/en-us/products/azure-maps",
      "kind": "http-api",
      "category": "maps",
      "summary": "Microsoft Azure's mapping service. Its REST APIs at `atlas.microsoft.com` cover geocoding, reverse geocoding, place search, routing with traffic, map tiles, time zones and weather, with access by subscription key, SAS token or Microsoft Entra ID.",
      "url": "https://www.anchorterminal.com/tools/azure-maps",
      "markdownUrl": "https://www.anchorterminal.com/tools/azure-maps.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/azure-maps.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/azure-maps.json",
      "dns": "azure-maps.grade.anchorterminal.com",
      "repo": "https://github.com/Azure/azure-rest-api-specs",
      "license": "Proprietary service under Microsoft's Product Terms. The Azure SDK client libraries are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://atlas.microsoft.com",
      "packages": [
        {
          "registry": "pypi",
          "name": "azure-maps-search"
        },
        {
          "registry": "pypi",
          "name": "azure-maps-route"
        },
        {
          "registry": "npm",
          "name": "@azure-rest/maps-search"
        },
        {
          "registry": "npm",
          "name": "@azure-rest/maps-route"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. A person creates an Azure subscription and an Azure Maps account in the portal, which issues a primary and a secondary subscription key. The key goes in the `subscription-key` header or as a URL parameter and reaches every REST API on the account. Microsoft Entra ID tokens (scope `https://atlas.microsoft.com/.default`, with the `x-ms-client-id` header) are authorised by Azure roles such as Azure Maps Data Reader or a custom role for one service. SAS tokens (`Authorization: jwt-sas`) last 24 hours at most and carry a rate cap and allowed regions. `disableLocalAuth` turns keys and SAS tokens off.",
      "pricing": "freemium",
      "pricingNotes": "$4.50 per 1,000 transactions on every Gen2 meter, after a free monthly amount of 5,000 transactions for Search, Geolocation, Timezone and base map tiles and 1,000 for Routing, Traffic, Weather, imagery tiles and static images (https://prices.azure.com/api/retail/prices, read 8 October 2026). Fifteen tiles count as one transaction, four route matrix cells as one, and ten autocomplete requests as one. The pricing page says discounts start at 100,000 transactions a month through sales. An Azure account needs a card for identity checks, so there is no card-free start. Gen1 pricing retired on 15 September 2026.",
      "priceSummary": "$4.50 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Azure Maps docs, the OpenAPI documents or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 9084,
        "pypiWeekly": 24564,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://learn.microsoft.com/en-us/rest/api/maps/",
      "openapi": "https://github.com/Azure/azure-rest-api-specs/blob/main/specification/maps/data-plane/Search/stable/2026-01-01/search.json",
      "capabilities": [
        "geo.geocode",
        "geo.reverse",
        "geo.places",
        "geo.routing",
        "geo.tiles",
        "weather.current",
        "weather.forecast"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "freemium",
        "free-tier",
        "card-required",
        "openapi",
        "oauth",
        "python",
        "typescript",
        "dotnet",
        "java",
        "enterprise",
        "sla",
        "eu"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.1,
        "grade": "B",
        "agentReady": false,
        "rank": 339,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 6,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 57,
          "payments": 20,
          "reliability": 81,
          "schema": 83,
          "security": 66,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": 0,
        "verdict": "Azure Maps publishes OpenAPI documents for every service, per-service rate limits, a 99.9 per cent SLA and written rules on storing results, and Entra ID roles can limit a caller to one service. Place search exists only in Search 1.0, which the newer version has superseded, and the REST client libraries are all beta.",
        "bestFor": "Teams already on Azure that want geocoding and routing under Entra ID roles and one flat price.",
        "strengths": [
          "Public OpenAPI documents for Search, Route, Render, Traffic, Weather, Timezone and Geolocation in `Azure/azure-rest-api-specs`, with examples on every operation",
          "Three credential types. Entra ID with built-in and custom roles, SAS tokens with a 24-hour limit, a rate cap and allowed regions, and two rotatable keys",
          "Default rate limits published per service, 500 requests a second for search, 250 for reverse geocoding and 50 for routing",
          "The product terms state storage rules in writing. Geocodes may be kept while the Azure account is active, other results for six months at most",
          "Responses with 5xx, 401, 403, 408 and 429 are not billed, and the October 2026 SLA commits to 99.9 per cent"
        ],
        "weaknesses": [
          "Place and category search exist only in Search 1.0. Search 2026-01-01, which supersedes it, has geocoding, autocomplete, reverse geocoding and polygons",
          "Every REST client library is a beta. `azure-maps-search` 2.0.0b2, the newest Python release, dates from 12 December 2024",
          "The authentication guide tells callers to put the subscription key in the URL, and the key reaches every REST API on the account",
          "An Azure account needs a card and a browser signup before the free monthly transactions apply",
          "No Retry-After header or backoff guidance for 429 was found in the reviewed documentation, and no API changelog page"
        ],
        "agentNotes": [
          "Send the key in the `subscription-key` header, or use `Authorization: Bearer` with `x-ms-client-id`. The key also works as a URL parameter, which leaks into logs.",
          "Call `GET /geocode?api-version=2026-01-01` for addresses. It can return 200 with no results, so check `confidence`, `matchCodes` and the entity type before use.",
          "Use Search 1.0 (`/search/poi/json`, `/search/nearby/json`, `/search/fuzzy/json`) for places. The 2026-01-01 version has no place search.",
          "Use `eu.atlas.microsoft.com` or `us.atlas.microsoft.com` to keep request data in that geography.",
          "Don't store route or tile results beyond six months, and never for serving several users. The product terms allow keeping geocodes while the account is active."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.1
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 57,
          "payments": 20,
          "reliability": 81,
          "schema": 83,
          "security": 66,
          "transparency": 69
        },
        "provenanceScore": 81,
        "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": {
        "install": "pip install azure-maps-search   # or: npm i @azure-rest/maps-search",
        "http": "curl \"https://atlas.microsoft.com/geocode?api-version=2026-01-01\u0026query=15127%20NE%2024th%20Street%2C%20Redmond%2C%20WA\" \\\n  -H \"subscription-key: $AZURE_MAPS_KEY\""
      },
      "letme": {
        "capability": "https://letme.dev/geo.geocode",
        "tool": "https://letme.dev/azure-maps"
      },
      "sameCompany": [
        "azure-openai",
        "azure-foundry-fine-tuning",
        "azure-ai-content-safety",
        "azure-speech-to-text",
        "azure-text-to-speech",
        "microsoft-agent-framework",
        "microsoft-execution-containers",
        "microsoft-entra-agent-id",
        "azure-key-vault",
        "bing-grounding",
        "azure-document-intelligence",
        "azure-devops-mcp",
        "microsoft-learn-mcp",
        "tokeneconomizer",
        "playwright-mcp",
        "azure-mcp",
        "azure-translator",
        "microsoft-graph-calendar",
        "azure-blob-storage",
        "onedrive-sharepoint",
        "microsoft-teams",
        "dynamics-365-sales",
        "copilot-studio-mcp",
        "power-automate",
        "foundry-local",
        "microsoft-decision-1",
        "microsoft-advertising-api",
        "microsoft-excel-graph",
        "outlook-mail-graph",
        "microsoft-graph-people",
        "mage-vl-cowork"
      ],
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Search (geocoding, reverse geocoding, places)",
          "unit": "1k-requests",
          "usd": 4.5,
          "note": "5,000 free a month. Ten autocomplete requests count as one"
        },
        {
          "item": "Routing",
          "unit": "1k-requests",
          "usd": 4.5,
          "note": "1,000 free a month. Four matrix cells count as one"
        },
        {
          "item": "Base map tiles",
          "unit": "1k-requests",
          "usd": 4.5,
          "note": "5,000 free a month. One transaction is 15 tiles"
        },
        {
          "item": "Traffic",
          "unit": "1k-requests",
          "usd": 4.5,
          "note": "1,000 free a month"
        },
        {
          "item": "Weather",
          "unit": "1k-requests",
          "usd": 4.5,
          "note": "1,000 free a month"
        },
        {
          "item": "Static map images",
          "unit": "1k-requests",
          "usd": 4.5,
          "note": "1,000 free a month"
        }
      ],
      "provenance": {
        "legalEntity": "Microsoft Corporation",
        "domain": "microsoft.com",
        "domainRegistered": "1991-05-02",
        "domainNote": "The API answers at atlas.microsoft.com, with eu.atlas.microsoft.com and us.atlas.microsoft.com for a chosen geography. Docs are on learn.microsoft.com.",
        "endpointOnVendorDomain": true,
        "terms": "https://www.microsoft.com/licensing/terms/productoffering/MicrosoftAzure/MCA",
        "privacy": "https://www.microsoft.com/en-us/privacy/privacystatement",
        "statusPage": "https://azure.status.microsoft/en-us/status",
        "changelog": "",
        "securityTxt": "expired",
        "checked": "2026-10-08",
        "notes": [
          "The Product Terms page for Microsoft Azure carries the Azure Maps service-specific terms (navigation, database, caching and storage, attribution, print and broadcast rules) and points to the Data Protection Addendum and the SLA. Our reader saw no effective date on the page.",
          "The privacy statement (last updated September 2026) names Microsoft Corporation, One Microsoft Way, Redmond, Washington 98052, and Microsoft Ireland Operations Limited in Dublin. It lists Microsoft Azure among the enterprise online services and says the customer's agreement controls where the two conflict.",
          "No changelog for the REST APIs was found in the Azure Maps docs. The release notes there cover the Web SDK map control, drawing tools and spatial module only, and the docs link to the general Azure updates page.",
          "https://www.microsoft.com/.well-known/security.txt shows Expires 2026-09-23T16:00:00.000Z. It points to the MSRC researcher portal, the bounty policy and the coordinated disclosure policy.",
          "RDAP for microsoft.com gives a registration date of 1991-05-02.",
          "The Azure status page is shared by all Azure services and its history lists only broad incidents."
        ],
        "score": 81
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/azure-maps.json",
      "live": {
        "slug": "azure-maps",
        "probe": {
          "target": "https://atlas.microsoft.com",
          "method": "get",
          "lastAt": "2026-11-07T19:21:54.212487981Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 360,
          "authRequired": false,
          "uptime24h": 89.08,
          "uptime30d": 89.83,
          "p50ms24h": 275,
          "p95ms24h": 702,
          "samples24h": 238,
          "samples30d": 7430,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 50,
              "ok": 45
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 233
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 227
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 223
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 215
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 229
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 246
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 229
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 219
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 234
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 220
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 234
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 228
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 228
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 228
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 210
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 217
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 206
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 216
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 222
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 214
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 226
            },
            {
              "date": "2026-10-30",
              "probes": 248,
              "ok": 218
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 230
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 218
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 221
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 222
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 234
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 176
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 226
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 180
            }
          ],
          "outages": [
            {
              "start": "2026-11-06T23:38:49.41634389Z",
              "end": "2026-11-06T23:57:26.28502585Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-11-06T19:56:32.009507551Z",
              "end": "2026-11-06T20:50:07.414718035Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-11-03T04:17:57.523224864Z",
              "end": "2026-11-03T04:35:11.582236245Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-29T03:08:02.529899979Z",
              "end": "2026-10-29T03:25:39.740723735Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-27T11:12:49.143432695Z",
              "end": "2026-10-27T11:29:20.885602329Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-27T01:05:25.227867537Z",
              "end": "2026-10-27T01:22:54.298162675Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-25T13:54:00.847577794Z",
              "end": "2026-10-25T14:11:36.600193368Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-25T06:35:10.977191994Z",
              "end": "2026-10-25T06:53:12.996987294Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-25T01:29:12.94395092Z",
              "end": "2026-10-25T01:46:29.721056389Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-24T19:50:10.547657121Z",
              "end": "2026-10-24T20:07:10.880498447Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-23T03:59:50.926067071Z",
              "end": "2026-10-23T04:22:08.375456624Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-23T02:27:58.231896774Z",
              "end": "2026-10-23T02:45:07.857935828Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-23T01:13:24.148172267Z",
              "end": "2026-10-23T01:30:30.025360611Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-22T23:30:14.373107087Z",
              "end": "2026-10-22T23:53:27.153057679Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-18T21:01:46.561533935Z",
              "end": "2026-10-18T21:17:57.60912809Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-16T06:43:08.334148796Z",
              "end": "2026-10-16T06:59:53.121780705Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-12T23:39:57.205562741Z",
              "end": "2026-10-12T23:56:50.609463459Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-12T05:59:23.155877549Z",
              "end": "2026-10-12T06:28:35.303512395Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-11T14:41:50.607109515Z",
              "end": "2026-10-11T15:00:06.414603338Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-11T00:19:34.629724477Z",
              "end": "2026-10-11T00:41:36.334041072Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-10T18:39:25.188409923Z",
              "end": "2026-10-10T18:57:01.812075669Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-10T06:02:11.503108065Z",
              "end": "2026-10-10T06:19:56.319674553Z",
              "note": "HTTP 503 server error"
            },
            {
              "start": "2026-10-09T21:15:56.246049703Z",
              "end": "2026-10-09T21:34:12.491890137Z",
              "note": "HTTP 503 server error"
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@azure-rest/maps-route",
            "version": "1.0.0-beta.5",
            "seenAt": "2026-11-06T23:09:20.651075075Z"
          },
          {
            "registry": "npm",
            "name": "@azure-rest/maps-search",
            "version": "2.0.0-beta.3",
            "seenAt": "2026-11-06T23:09:20.391197685Z"
          },
          {
            "registry": "pypi",
            "name": "azure-maps-route",
            "version": "1.0.0b3",
            "released": "2024-12-12",
            "seenAt": "2026-11-06T23:09:18.512287526Z"
          },
          {
            "registry": "pypi",
            "name": "azure-maps-search",
            "version": "2.0.0b2",
            "released": "2024-12-12",
            "seenAt": "2026-11-06T23:09:18.297533897Z"
          }
        ],
        "githubStars": 3113,
        "npmWeekly": 8144,
        "pypiWeekly": 23750,
        "securityTxt": {
          "url": "https://microsoft.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-10-27T16:00:00.000Z",
          "checkedAt": "2026-11-07T16:02:01.196666056Z"
        },
        "domain": {
          "domain": "microsoft.com",
          "registered": "1991-05-02",
          "source": "https://rdap.verisign.com/com/v1/domain/microsoft.com",
          "checkedAt": "2026-11-01T14:14:19.336136409Z"
        },
        "pages": [
          {
            "url": "https://learn.microsoft.com/en-us/azure/azure-maps/how-to-manage-pricing-tier",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:12:59.562562403Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "529cf7e7ea9e"
          },
          {
            "url": "https://learn.microsoft.com/en-us/rest/api/maps/route/get-route-directions?view=rest-maps-1.0",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:24.120195335Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "5a5461c99de1"
          },
          {
            "url": "https://learn.microsoft.com/en-us/rest/api/maps/traffic/get-traffic-flow-tile?view=rest-maps-1.0",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:25.647542129Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2bcc9979ac01"
          },
          {
            "url": "https://www.microsoft.com/licensing/terms/productoffering/MicrosoftAzure/MCA",
            "kind": "terms",
            "status": 502,
            "checkedAt": "2026-11-07T14:31:48.305809075Z",
            "changedAt": "0001-01-01T00:00:00Z"
          }
        ],
        "github": {
          "repo": "azure/azure-rest-api-specs",
          "checkedAt": "2026-11-02T08:33:52.314773773Z",
          "stars": 3111,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-02T08:18:41Z",
          "openIssues": 1796,
          "openPRs": 315,
          "issuesOpened90d": 252,
          "issuesClosed90d": 839,
          "prsMerged90d": 1555,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 40,
            "failure": 10,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-10T02:09:14Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 22,
            "medianDays": 1.8
          }
        },
        "updatedAt": "2026-11-07T19:21:54.212487981Z"
      }
    },
    "answer": "Geocodio scores 72.2 (BB) on agent readiness against Azure Maps's 67.1 (B), and leads in 5 of 7 scored categories. Azure Maps leads on reliability and security \u0026 auth.",
    "b": {
      "slug": "geocodio",
      "name": "Geocodio",
      "vendor": "Dotsquare LLC",
      "vendorUrl": "https://www.geocod.io",
      "kind": "http-api",
      "category": "maps",
      "summary": "Geocodio is a hosted geocoding API from Dotsquare LLC for addresses in the US, Canada, Mexico, the UK, Australia and New Zealand. It does forward, reverse and batch geocoding, distance matrices and census, district and timezone data appends.",
      "url": "https://www.anchorterminal.com/tools/geocodio",
      "markdownUrl": "https://www.anchorterminal.com/tools/geocodio.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/geocodio.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/geocodio.json",
      "dns": "geocodio.grade.anchorterminal.com",
      "repo": "https://github.com/Geocodio/geocodio-cli",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "geocodio-library-python"
        },
        {
          "registry": "npm",
          "name": "geocodio-library-node"
        }
      ],
      "auth": "api-key",
      "authNotes": "API key from the dashboard at dash.geocod.io after a browser signup, sent as `Authorization: Bearer` (since March 2025) or the `api_key` query parameter, which the docs and the OpenAPI spec still lead with. Five keys on pay-as-you-go. A new key reaches single and batch geocoding only; the Lists and Distance APIs must be enabled per key.",
      "pricing": "freemium",
      "pricingNotes": "2,500 lookups a day free on pay-as-you-go with no card until usage passes the free tier, then $1 per 1,000 lookups billed on the 1st of the next month. Each data append is one more lookup. Flex plans from $315 a month for 350,000 credits, Unlimited from $1,600 a month per dedicated instance.",
      "priceSummary": "$1 / 1k req",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms.txt, AGENTS.md, the docs or the OpenAPI spec (checked 2026-11-06). Billing is by card on file, monthly in arrears on pay-as-you-go.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 20984,
        "pypiWeekly": 921,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://www.geocod.io/docs/",
      "llmsTxt": "https://www.geocod.io/llms.txt",
      "openapi": "https://api.geocod.io/openapi-spec.json",
      "capabilities": [
        "geo.geocode",
        "geo.reverse",
        "geo.routing"
      ],
      "tags": [
        "hosted",
        "api-key",
        "freemium",
        "free-tier",
        "no-card",
        "llms-txt",
        "openapi",
        "official",
        "cli",
        "agent-skills",
        "python",
        "typescript",
        "php",
        "ruby",
        "batch",
        "async-jobs",
        "status-page",
        "security-txt",
        "enterprise",
        "soc2",
        "closed-source"
      ],
      "lastRelease": "2026-11-03",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 72.2,
        "grade": "BB",
        "agentReady": true,
        "rank": 138,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 4,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 80,
          "maintenance": 86,
          "payments": 40,
          "reliability": 70,
          "schema": 92,
          "security": 58,
          "transparency": 87
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Geocodio publishes llms.txt, an AGENTS.md on cost and retries, an OpenAPI spec and a dated changelog, and its results may be stored permanently. Coverage stops at six countries, there's no MCP server or published SLA for self-serve plans, and the docs still put the key in the query string by default.",
        "bestFor": "Batch geocoding and district or census enrichment of addresses in the US, Canada, Mexico, the UK, Australia and New Zealand, where results must be stored.",
        "strengths": [
          "llms.txt and AGENTS.md cover billing arithmetic, retry rules, idempotency on the client and when not to use the API",
          "2,500 free lookups a day with no card, then $1 per 1,000, and zero-result lookups aren't billed",
          "Results may be stored and reused permanently, except UK reverse geocoding addresses",
          "Dated API changelog with versioned paths, and replaced versions kept for at least 12 months",
          "Official Python, Node, PHP and Ruby libraries and a CLI with an agent output mode, all MIT"
        ],
        "weaknesses": [
          "Covers only the US, Canada, Mexico, the UK, Australia and New Zealand, and UK needs a Flex or Unlimited plan",
          "The docs lead with the api_key query parameter, and the OpenAPI spec defines only that scheme",
          "No idempotency key on batch or list creation, so a retried upload is billed again",
          "No MCP server, and no published SLA on self-serve plans",
          "SOC 2 Type II and penetration tests apply to the separate Enterprise platform only"
        ],
        "agentNotes": [
          "Always set `country`, because an address with none falls back to the US and is billed even when it's wrong",
          "Send the key as `Authorization: Bearer`, not in the query string, so it stays out of logs",
          "Use batch POST /geocode (up to 10,000 lookups) or the Lists API rather than looping single requests",
          "Treat accuracy_type place, county or state as not found, and check `_warnings` for appends that were billed but skipped",
          "Don't retry 403 or 422. On 429 read X-RateLimit headers and back off, and never re-upload a list sitting in ENQUEUED"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 72.2
          }
        ],
        "editorialScores": {
          "ergonomics": 80,
          "maintenance": 86,
          "payments": 40,
          "reliability": 70,
          "schema": 92,
          "security": 58,
          "transparency": 80
        },
        "provenanceScore": 93,
        "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": {
        "install": "pip install geocodio-library-python",
        "http": "curl -H \"Authorization: Bearer $GEOCODIO_API_KEY\" \"https://api.geocod.io/v2.1/geocode?q=1109+N+Highland+St,+Arlington+VA\u0026country=USA\""
      },
      "letme": {
        "capability": "https://letme.dev/geo.geocode",
        "tool": "https://letme.dev/geocodio"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Lookup after the free tier, pay-as-you-go",
          "unit": "1k-requests",
          "usd": 1,
          "note": "2,500 lookups a day free. A lookup is one address or coordinate, and each data append is one more"
        },
        {
          "item": "Flex 350 plan",
          "unit": "month",
          "usd": 315,
          "note": "350,000 credits a month ($0.90 per 1,000), rolling over while subscribed"
        },
        {
          "item": "Unlimited Geocoding plan",
          "unit": "month",
          "usd": 1600,
          "note": "One dedicated instance, up to 5 million lookups a day; distance credits extra at $1 per 1,000"
        }
      ],
      "provenance": {
        "legalEntity": "Dotsquare LLC",
        "domain": "geocod.io",
        "domainRegistered": "2013-06-05",
        "endpointOnVendorDomain": true,
        "terms": "https://www.geocod.io/terms-of-use",
        "privacy": "https://www.geocod.io/privacy-policy",
        "statusPage": "https://status.geocod.io",
        "changelog": "https://www.geocod.io/docs/#changelog",
        "securityTxt": "valid",
        "checked": "2026-11-06",
        "notes": [
          "The terms name Dotsquare LLC, dba Geocodio, 440 Monticello Ave Ste 1802 #43146, Norfolk, Virginia, and choose Virginia law.",
          "The terms' acceptable use section bars customers from 'web scraping or data scraping on or related to the System, including ... any bot or web crawler'. Recorded as a fact; robots.txt on www.geocod.io allows all agents.",
          "security.txt at www.geocod.io/security.txt names security@geocod.io, a PGP key and a responsible disclosure policy, and expires 30 January 2030.",
          "RDAP gives geocod.io a registration date of 5 June 2013. The about page says Geocodio launched in 2014.",
          "llms.txt links https://www.geocod.io/pricing.md as the current pricing in Markdown, but that URL returned a 404 page on 6 November 2026, so prices come from the HTML pricing page."
        ],
        "score": 93
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/geocodio.json",
      "live": {
        "slug": "geocodio",
        "vendorStatus": {
          "page": "https://status.geocod.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T19:22:12.77760537Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "Geocodio/geocodio-cli",
            "version": "v3.3.0",
            "released": "2026-08-31",
            "seenAt": "2026-11-06T23:28:00.884456202Z"
          },
          {
            "registry": "npm",
            "name": "geocodio-library-node",
            "version": "2.2.0",
            "seenAt": "2026-11-06T23:28:00.414999469Z"
          },
          {
            "registry": "pypi",
            "name": "geocodio-library-python",
            "version": "1.6.0",
            "released": "2026-10-16",
            "seenAt": "2026-11-06T23:27:57.978816079Z"
          }
        ],
        "githubStars": 3,
        "npmWeekly": 20984,
        "pypiWeekly": 921,
        "securityTxt": {
          "url": "https://geocod.io/.well-known/security.txt",
          "state": "valid",
          "expires": "2030-01-30T00:00:00.000Z",
          "checkedAt": "2026-11-07T16:01:17.012285777Z"
        },
        "llmsTxt": {
          "url": "https://www.geocod.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:35.723551581Z"
        },
        "pages": [
          {
            "url": "https://www.geocod.io/docs/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:29:02.899876797Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "9bcdba9ab6f4"
          },
          {
            "url": "https://www.geocod.io/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:29:05.843886759Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "712b2145deac"
          },
          {
            "url": "https://www.geocod.io/terms-of-use",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:29:07.288294893Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ff5d2a37483d"
          }
        ],
        "updatedAt": "2026-11-07T19:22:12.77760537Z"
      }
    },
    "edges": [
      {
        "by": 29,
        "category": "maintenance",
        "leads": "geocodio",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Read as a closed service with official SDKs. The spec repository's newest Maps API or description changes are from 30 September 2026, removing Render 1.0 after its retirement on 17 September and clarifying autocomplete result types, 32 days before 1 November. The commits since then under the Maps folder (8 and 14 October) only change TypeSpec tooling and linter settings, so they don't count (20). Dated Maps changes since 3 August include description and example fixes on 28 August, 1 September, 14, 16 and 23 September and the two of 30 September, plus the Gen1 pricing retirement on 15 September (20). No API changelog. Microsoft Q\u0026A and a feedback forum are linked from each docs page, which we did not read (8 of 15). The REST client libraries are all beta and lag the service. The azure-sdk changelogs date `azure-maps-search` 2.0.0b2 and `azure-maps-route` 1.0.0b3 to 12 December 2024 and `@azure-rest/maps-search` 2.0.0-beta.4 and `@azure-rest/maps-route` 1.0.0-beta.6 to 22 August 2025, with the next betas unreleased (5 of 15). The libraries live in the azure-sdk monorepos, CI not checked (4 of 10). 20+20+8+5+4 = 57.",
          "b": "API v2.1 released 3 November 2026 (Australia and New Zealand), and PHP library 3.4.1 on 4 November (30). Dated changelog entries on 8 September, 1, 8, 9, 19, 22 and 31 October and 3 November 2026, plus library releases in October (20). Public changelog, support by email and a team-staffed help desk named on the pricing page. We didn't read GitHub issue reply times (12). Official Python 1.6.0 and Node 2.3.0 from 12 October and PHP 3.4.1 from 4 November are current (15). Each library and the CLI run CI on GitHub Actions; we didn't check whether the runs pass (9). 30+20+12+15+9 = 86."
        },
        "scores": {
          "a": 57,
          "b": 86
        }
      },
      {
        "by": 20,
        "category": "payments",
        "leads": "geocodio",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Per-1,000-transaction prices are public without a login through the Azure Retail Prices API, $4.50 on each Gen2 meter. The pricing page showed our reader the free amounts but no dollar figures (20), re-read on 1 November. Free monthly transactions exist, 5,000 for search and 1,000 for routing, but an Azure account asks for a card to verify identity (0). A person signs up in a browser and creates the Maps account (0). 0+20+0+0 = 20.",
          "b": "No x402, MPP or L402 (0). $1 per 1,000 lookups after the free tier, and per-credit rates for every Flex tier, public without login (20). 2,500 lookups a day free with no card until usage passes the free tier (20). Signup and key creation are a browser flow at dash.geocod.io (0). 0+20+20+0 = 40."
        },
        "scores": {
          "a": 20,
          "b": 40
        }
      },
      {
        "by": 12,
        "category": "transparency",
        "leads": "geocodio",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service under Microsoft's Product Terms, which carry a section of Azure Maps rules on storage, navigation and attribution, with MIT client libraries (15 of 30). The docs say requests and input data are stored only in the chosen geography and that queries go to TomTom without a link to the customer. No retention period for request data was found, and we did not read the Data Protection Addendum (22 of 30). The Modern Lifecycle Policy promises 12 months' notice before support ends. Gen1 pricing and Render 1.0 retired on stated dates in September 2026, while Search 1.0 is superseded with no date (16 of 20). TomTom is named as a subprocessor, and European and United States endpoints fix the data location. The full sub-processor list sits on the Service Trust Portal, which we did not read (16 of 20). 15+22+16+16 = 69.",
          "b": "Editorial half only. Closed service with clear, dated terms under Virginia law, and libraries and CLI under MIT (20). The privacy policy says API and spreadsheet input and results are deleted within 45 days, error logs kept 90 days, and customer data isn't used to train AI models. A separate data retention policy and llms.txt put Lists API data at 72 hours. Results may be stored permanently by the customer (27). Replaced API versions are guaranteed for at least 12 months, breaking changes come only with a new version, and the changelog marks each one 'Breaking' (18). The privacy policy names its processors, such as Sentry and Laravel Nightwatch, and the security page says self-serve is hosted in Europe (15). 20+27+18+15 = 80."
        },
        "scores": {
          "a": 75,
          "b": 87
        }
      },
      {
        "by": 11,
        "category": "reliability",
        "leads": "azure-maps",
        "name": "Reliability",
        "reasons": {
          "a": "Hosted reading. Azure status page with a history of post-incident reviews (20). The history, re-read on 1 November, lists two reviews in the 90 days from 3 August and none since 1 October, Azure OpenAI and AI services in Sweden Central on 29 September and gateway services in several regions from 20:30 UTC on 30 September to 02:15 UTC on 1 October. The West US review of 23 July has left the window. None names Azure Maps. The page lists only broad incidents, so there is no service-level history for Maps, and we count the record as minor (20 of 30), as the other Azure listings do. Default limits published per service, 500 requests a second for search, 250 for reverse geocoding and 50 for routing, on the limits page re-read on 1 November (15). The service answers 429 over the limit and doesn't bill 429, 408 or 5xx responses, and data-plane calls are reads, so a retry is safe. No Retry-After header or backoff guidance was found in the reviewed documentation (6 of 15). The SLA for Online Services of 1 October 2026 commits to 99.9 per cent per API, with 10 and 25 per cent credits, per the 8 October check (10). Search 2026-01-01 and Route 2025-01-01 are stable versions. The REST index still labels autocomplete a preview (10). 20+20+15+6+10+10 = 81.",
          "b": "Hosted lines. incident.io status page at status.geocod.io with five components (Geocodio API, Dashboard, Enterprise API, Enterprise Dashboard, Website) and an incidents feed at /api/v2/incidents.json (20). In the 90 days to 6 November 2026 the feed lists one incident marked major, 'Spreadsheet geocoding jobs are failing' on 27 October from 12:35 to 15:15 UTC, and a PHP security patch on 21 October marked no impact, so one major outage of a core feature (10). 1,000 requests a minute on single geocoding for pay-as-you-go and Flex, 100 on Enterprise Flex (15). 429 carries X-RateLimit-Remaining, -Limit and -Period, and llms.txt and AGENTS.md give a retry rule per status code with capped backoff, plus client-side idempotency guidance for the non-idempotent list and batch writes (15). The pricing page lists custom SLAs as an add-on on Unlimited and Enterprise plans, with no published terms, so no SLA (0). GA (10). 20+10+15+15+0+10 = 70."
        },
        "scores": {
          "a": 81,
          "b": 70
        }
      },
      {
        "by": 9,
        "category": "schema",
        "leads": "geocodio",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI 2.0 documents for each service are public in `Azure/azure-rest-api-specs`, generated from TypeSpec since April 2026 (25). learn.microsoft.com returns each page as Markdown when `?accept=text/markdown` is added, though `llms.txt` returns 404 (10). Operation descriptions state purpose, and the geocoding and migration pages say when to use geocoding, autocomplete or batch and when not to (16 of 20). Typed parameters with ranges such as `top` from 1 to 20, 18 enums in the Search document and 48 in Route, and required fields marked (13 of 15). Examples on all 16 Search and Route operations, but errors are one default response with an `x-ms-error-code` header and no list of codes found (10 of 15). Dated `api-version` values and migration guides for Search, Route, Render and Traffic 1.0, but no API changelog page. The release notes cover the Web SDK only (9 of 15). 25+10+16+13+10+9 = 83.",
          "b": "OpenAPI 3.0.1 spec, version 2.1.0, with 11 paths (25). llms.txt and an AGENTS.md written for agents (10). llms.txt and AGENTS.md say when to use each endpoint and when not to, such as the Lists API over looping single calls, the upload tool for a one-off spreadsheet and straightline over driving distance unless road distance is needed (19). Typed parameters with country values, component fields and documented limits, though `fields` is a comma-separated string (12). Error table with retry guidance, examples throughout, but the spec documents 200, 400, 403, 404, 422 and 424 and not 429 or 500 (11). Versioned paths from v1 to v2.1 and a dated public changelog with entries back to 2024 (15). 25+10+19+12+11+15 = 92."
        },
        "scores": {
          "a": 83,
          "b": 92
        }
      },
      {
        "by": 8,
        "category": "security",
        "leads": "azure-maps",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Microsoft Entra ID OAuth tokens with Azure roles, SAS tokens limited to 24 hours with a rate cap and allowed regions, and two subscription keys that can be regenerated in turn (30). Less 10 because the authentication guide tells callers to add the subscription key as a URL parameter, and Search 1.0 declares the key as a query parameter (20). Built-in reader roles, custom roles down to one service such as `Microsoft.Maps/accounts/services/search/read`, and `disableLocalAuth` to turn keys off. The data-plane APIs only read. A subscription key reaches every API on the account (18 of 20). Place names, addresses and traffic incident text come from third parties, and no prompt-injection guidance was found (5 of 15). Azure Monitor metrics show usage, errors and availability for 93 days. Per-request logs were not found in the Azure Maps docs (6 of 15). MSRC coordinated disclosure and bounty policies, and Azure Maps is on the FedRAMP High audit scope list dated 21 September 2026. The microsoft.com security.txt passed its Expires date on 23 September 2026 and still carries it on 1 November, and we did not confirm Maps on a SOC 2 scope list. An MSRC search on 1 November finds no CVE naming Azure Maps since November 2025 (17 of 20). 20+18+5+6+17 = 66.",
          "b": "Revocable keys, five on pay-as-you-go, each with permissions (Lists and Distance off by default), which earns 25. Less 10 because the docs say 'All requests require \u0026api_key=YOUR_API_KEY' and the OpenAPI spec defines only the query scheme, though an Authorization header has worked since March 2025 (15). Per-key permissions limit what a key can reach. DELETE on lists and distance jobs needs no confirmation (13). Results are addresses and government district, census and legislator data rather than user-written text. No prompt-injection guidance found (9). Usage per API key in the dashboard, downloadable as CSV, and billable-lookup headers on every response (8). Valid security.txt to 30 January 2030 with a PGP key and a responsible disclosure policy. SOC 2 Type II and annual penetration tests apply to the Enterprise platform only. No bug bounty found (13). 15+13+9+8+13 = 58."
        },
        "scores": {
          "a": 66,
          "b": 58
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Microsoft",
        "b": "Dotsquare LLC",
        "name": "Vendor"
      },
      {
        "a": "https://atlas.microsoft.com",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "$4.50 per 1,000 requests",
        "b": "$1600 per month (plan)",
        "name": "Price for geocoding"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Microsoft's Product Terms. The Azure SDK client libraries are MIT",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-30",
        "b": "2026-11-03",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-01",
        "b": "2018-05-25",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "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": "9.1k npm/wk, 25k PyPI/wk",
        "b": "21k npm/wk, 921 PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "3.3/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Geocodio scores 72.2 (BB) on agent readiness against Azure Maps's 67.1 (B), and leads in 5 of 7 scored categories. Azure Maps leads on reliability and security \u0026 auth.",
        "question": "Which is better for AI agents, Azure Maps or Geocodio?"
      },
      {
        "answer": "Azure Maps takes an API key or an OAuth sign-in. Geocodio needs an API key.",
        "question": "Do Azure Maps and Geocodio need an API key?"
      },
      {
        "answer": "Azure Maps has a hosted endpoint at https://atlas.microsoft.com. No hosted endpoint is listed for Geocodio.",
        "question": "Can an agent call Azure Maps and Geocodio without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 81 against 70",
          "Security \u0026 auth, 66 against 58"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "Teams already on Azure that want geocoding and routing under Entra ID roles and one flat price.",
        "slug": "azure-maps",
        "watchFor": "Place and category search exist only in Search 1.0. Search 2026-01-01, which supersedes it, has geocoding, autocomplete, reverse geocoding and polygons"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 92 against 83",
          "Agent ergonomics, 80 against 73",
          "Payments \u0026 pricing, 40 against 20",
          "Maintenance \u0026 community, 86 against 57",
          "Transparency \u0026 trust, 87 against 75"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Free to start without a card"
        ],
        "goodFor": "Batch geocoding and district or census enrichment of addresses in the US, Canada, Mexico, the UK, Australia and New Zealand, where results must be stored.",
        "slug": "geocodio",
        "watchFor": "Covers only the US, Canada, Mexico, the UK, Australia and New Zealand, and UK needs a Flex or Unlimited plan"
      }
    ],
    "history": {
      "azure-maps": [
        {
          "causes": [
            "time"
          ],
          "date": "2026-11-01",
          "delta": -0.9,
          "from": 68,
          "fromGrade": "B",
          "to": 67.1,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 67.9,
          "fromGrade": "B",
          "to": 68,
          "toGrade": "B"
        }
      ],
      "geocodio": null
    },
    "job": {
      "capability": "geo.geocode",
      "name": "Geocoding"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-location-vs-azure-maps.json",
        "title": "Amazon Location Service vs Azure Maps",
        "url": "https://www.anchorterminal.com/compare/amazon-location-vs-azure-maps"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-location-vs-geocodio.json",
        "title": "Amazon Location Service vs Geocodio",
        "url": "https://www.anchorterminal.com/compare/amazon-location-vs-geocodio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/arcgis-vs-azure-maps.json",
        "title": "ArcGIS Location Platform vs Azure Maps",
        "url": "https://www.anchorterminal.com/compare/arcgis-vs-azure-maps"
      },
      {
        "json": "https://www.anchorterminal.com/compare/arcgis-vs-geocodio.json",
        "title": "ArcGIS Location Platform vs Geocodio",
        "url": "https://www.anchorterminal.com/compare/arcgis-vs-geocodio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-geoapify.json",
        "title": "Azure Maps vs Geoapify Location Platform + MCP",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-geoapify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-google-maps-platform.json",
        "title": "Azure Maps vs Google Maps Platform + Grounding Lite MCP",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-google-maps-platform"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-here-location-services.json",
        "title": "Azure Maps vs HERE Location Services",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-here-location-services"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-locationiq.json",
        "title": "Azure Maps vs LocationIQ",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-locationiq"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-mapbox.json",
        "title": "Azure Maps vs Mapbox APIs + MCP",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-mapbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-mapquest.json",
        "title": "Azure Maps vs MapQuest",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-mapquest"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-maptiler.json",
        "title": "Azure Maps vs MapTiler Cloud",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-maptiler"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-nextbillion.json",
        "title": "Azure Maps vs NextBillion.ai",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-nextbillion"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-nominatim.json",
        "title": "Azure Maps vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-nominatim"
      },
      {
        "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-radar.json",
        "title": "Azure Maps vs Radar",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-radar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-stadia-maps.json",
        "title": "Azure Maps vs Stadia Maps",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-stadia-maps"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-maps-vs-tomtom.json",
        "title": "Azure Maps vs TomTom Maps APIs + MCP",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-tomtom"
      },
      {
        "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-geocodio.json",
        "title": "Geoapify Location Platform + MCP vs Geocodio",
        "url": "https://www.anchorterminal.com/compare/geoapify-vs-geocodio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-google-maps-platform.json",
        "title": "Geocodio vs Google Maps Platform + Grounding Lite MCP",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-google-maps-platform"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-here-location-services.json",
        "title": "Geocodio vs HERE Location Services",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-here-location-services"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-locationiq.json",
        "title": "Geocodio vs LocationIQ",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-locationiq"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-mapbox.json",
        "title": "Geocodio vs Mapbox APIs + MCP",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-mapbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-mapquest.json",
        "title": "Geocodio vs MapQuest",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-mapquest"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-maptiler.json",
        "title": "Geocodio vs MapTiler Cloud",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-maptiler"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-nextbillion.json",
        "title": "Geocodio vs NextBillion.ai",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-nextbillion"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-nominatim.json",
        "title": "Geocodio vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-nominatim"
      },
      {
        "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-radar.json",
        "title": "Geocodio vs Radar",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-radar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-stadia-maps.json",
        "title": "Geocodio vs Stadia Maps",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-stadia-maps"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-tomtom.json",
        "title": "Geocodio vs TomTom Maps APIs + MCP",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-tomtom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/geocodio-vs-woosmap.json",
        "title": "Geocodio vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/geocodio-vs-woosmap"
      }
    ],
    "panel": null,
    "scores": [
      {
        "azure-maps": 81,
        "by": 11,
        "edge": "azure-maps",
        "geocodio": 70,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "azure-maps": 83,
        "by": 9,
        "edge": "geocodio",
        "geocodio": 92,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "azure-maps": 73,
        "by": 7,
        "edge": "geocodio",
        "geocodio": 80,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "azure-maps": 66,
        "by": 8,
        "edge": "azure-maps",
        "geocodio": 58,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "azure-maps": 20,
        "by": 20,
        "edge": "geocodio",
        "geocodio": 40,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "azure-maps": 57,
        "by": 29,
        "edge": "geocodio",
        "geocodio": 86,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "azure-maps": 75,
        "by": 12,
        "edge": "geocodio",
        "geocodio": 87,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Geocodio scores 72.2 (BB) on agent readiness against Azure Maps's 67.1 (B), and leads in 5 of 7 scored categories. Azure Maps leads on reliability and security \u0026 auth. Both do geocoding.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "azure-maps": "Azure Maps publishes OpenAPI documents for every service, per-service rate limits, a 99.9 per cent SLA and written rules on storing results, and Entra ID roles can limit a caller to one service. Place search exists only in Search 1.0, which the newer version has superseded, and the REST client libraries are all beta.",
      "geocodio": "Geocodio publishes llms.txt, an AGENTS.md on cost and retries, an OpenAPI spec and a dated changelog, and its results may be stored permanently. Coverage stops at six countries, there's no MCP server or published SLA for self-serve plans, and the docs still put the key in the query string by default."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/azure-maps-vs-geocodio",
    "json": "https://www.anchorterminal.com/compare/azure-maps-vs-geocodio.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/azure-maps-vs-geocodio.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/azure-maps-vs-geocodio.min.md"
  },
  "markdown": "Geocodio scores 72.2 (BB) on agent readiness against Azure Maps's 67.1 (B), and leads in 5 of 7 scored categories. Azure Maps leads on reliability and security \u0026 auth. Both do geocoding.\n\n- Azure Maps: grade B, 67.1/100, rank #339 of 1510. Markdown https://www.anchorterminal.com/tools/azure-maps.md · JSON https://www.anchorterminal.com/api/v1/tools/azure-maps.json\n- Geocodio: grade BB, 72.2/100, rank #138 of 1510. Markdown https://www.anchorterminal.com/tools/geocodio.md · JSON https://www.anchorterminal.com/api/v1/tools/geocodio.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### Azure Maps (B)\n\nGood for: Teams already on Azure that want geocoding and routing under Entra ID roles and one flat price.\n\nAhead on:\n- Reliability, 81 against 70\n- Security \u0026 auth, 66 against 58\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: Place and category search exist only in Search 1.0. Search 2026-01-01, which supersedes it, has geocoding, autocomplete, reverse geocoding and polygons\n\n### Geocodio (BB)\n\nGood for: Batch geocoding and district or census enrichment of addresses in the US, Canada, Mexico, the UK, Australia and New Zealand, where results must be stored.\n\nAhead on:\n- Schema \u0026 documentation, 92 against 83\n- Agent ergonomics, 80 against 73\n- Payments \u0026 pricing, 40 against 20\n- Maintenance \u0026 community, 86 against 57\n- Transparency \u0026 trust, 87 against 75\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Free to start without a card\n\nWatch for: Covers only the US, Canada, Mexico, the UK, Australia and New Zealand, and UK needs a Flex or Unlimited plan\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Geocodio +29\n\n- Azure Maps (57): Read as a closed service with official SDKs. The spec repository's newest Maps API or description changes are from 30 September 2026, removing Render 1.0 after its retirement on 17 September and clarifying autocomplete result types, 32 days before 1 November. The commits since then under the Maps folder (8 and 14 October) only change TypeSpec tooling and linter settings, so they don't count (20). Dated Maps changes since 3 August include description and example fixes on 28 August, 1 September, 14, 16 and 23 September and the two of 30 September, plus the Gen1 pricing retirement on 15 September (20). No API changelog. Microsoft Q\u0026A and a feedback forum are linked from each docs page, which we did not read (8 of 15). The REST client libraries are all beta and lag the service. The azure-sdk changelogs date `azure-maps-search` 2.0.0b2 and `azure-maps-route` 1.0.0b3 to 12 December 2024 and `@azure-rest/maps-search` 2.0.0-beta.4 and `@azure-rest/maps-route` 1.0.0-beta.6 to 22 August 2025, with the next betas unreleased (5 of 15). The libraries live in the azure-sdk monorepos, CI not checked (4 of 10). 20+20+8+5+4 = 57.\n- Geocodio (86): API v2.1 released 3 November 2026 (Australia and New Zealand), and PHP library 3.4.1 on 4 November (30). Dated changelog entries on 8 September, 1, 8, 9, 19, 22 and 31 October and 3 November 2026, plus library releases in October (20). Public changelog, support by email and a team-staffed help desk named on the pricing page. We didn't read GitHub issue reply times (12). Official Python 1.6.0 and Node 2.3.0 from 12 October and PHP 3.4.1 from 4 November are current (15). Each library and the CLI run CI on GitHub Actions; we didn't check whether the runs pass (9). 30+20+12+15+9 = 86.\n\n### Payments \u0026 pricing: Geocodio +20\n\n- Azure Maps (20): No x402, MPP or L402 (0). Per-1,000-transaction prices are public without a login through the Azure Retail Prices API, $4.50 on each Gen2 meter. The pricing page showed our reader the free amounts but no dollar figures (20), re-read on 1 November. Free monthly transactions exist, 5,000 for search and 1,000 for routing, but an Azure account asks for a card to verify identity (0). A person signs up in a browser and creates the Maps account (0). 0+20+0+0 = 20.\n- Geocodio (40): No x402, MPP or L402 (0). $1 per 1,000 lookups after the free tier, and per-credit rates for every Flex tier, public without login (20). 2,500 lookups a day free with no card until usage passes the free tier (20). Signup and key creation are a browser flow at dash.geocod.io (0). 0+20+20+0 = 40.\n\n### Transparency \u0026 trust: Geocodio +12\n\n- Azure Maps (75): Closed service under Microsoft's Product Terms, which carry a section of Azure Maps rules on storage, navigation and attribution, with MIT client libraries (15 of 30). The docs say requests and input data are stored only in the chosen geography and that queries go to TomTom without a link to the customer. No retention period for request data was found, and we did not read the Data Protection Addendum (22 of 30). The Modern Lifecycle Policy promises 12 months' notice before support ends. Gen1 pricing and Render 1.0 retired on stated dates in September 2026, while Search 1.0 is superseded with no date (16 of 20). TomTom is named as a subprocessor, and European and United States endpoints fix the data location. The full sub-processor list sits on the Service Trust Portal, which we did not read (16 of 20). 15+22+16+16 = 69.\n- Geocodio (87): Editorial half only. Closed service with clear, dated terms under Virginia law, and libraries and CLI under MIT (20). The privacy policy says API and spreadsheet input and results are deleted within 45 days, error logs kept 90 days, and customer data isn't used to train AI models. A separate data retention policy and llms.txt put Lists API data at 72 hours. Results may be stored permanently by the customer (27). Replaced API versions are guaranteed for at least 12 months, breaking changes come only with a new version, and the changelog marks each one 'Breaking' (18). The privacy policy names its processors, such as Sentry and Laravel Nightwatch, and the security page says self-serve is hosted in Europe (15). 20+27+18+15 = 80.\n\n### Reliability: Azure Maps +11\n\n- Azure Maps (81): Hosted reading. Azure status page with a history of post-incident reviews (20). The history, re-read on 1 November, lists two reviews in the 90 days from 3 August and none since 1 October, Azure OpenAI and AI services in Sweden Central on 29 September and gateway services in several regions from 20:30 UTC on 30 September to 02:15 UTC on 1 October. The West US review of 23 July has left the window. None names Azure Maps. The page lists only broad incidents, so there is no service-level history for Maps, and we count the record as minor (20 of 30), as the other Azure listings do. Default limits published per service, 500 requests a second for search, 250 for reverse geocoding and 50 for routing, on the limits page re-read on 1 November (15). The service answers 429 over the limit and doesn't bill 429, 408 or 5xx responses, and data-plane calls are reads, so a retry is safe. No Retry-After header or backoff guidance was found in the reviewed documentation (6 of 15). The SLA for Online Services of 1 October 2026 commits to 99.9 per cent per API, with 10 and 25 per cent credits, per the 8 October check (10). Search 2026-01-01 and Route 2025-01-01 are stable versions. The REST index still labels autocomplete a preview (10). 20+20+15+6+10+10 = 81.\n- Geocodio (70): Hosted lines. incident.io status page at status.geocod.io with five components (Geocodio API, Dashboard, Enterprise API, Enterprise Dashboard, Website) and an incidents feed at /api/v2/incidents.json (20). In the 90 days to 6 November 2026 the feed lists one incident marked major, 'Spreadsheet geocoding jobs are failing' on 27 October from 12:35 to 15:15 UTC, and a PHP security patch on 21 October marked no impact, so one major outage of a core feature (10). 1,000 requests a minute on single geocoding for pay-as-you-go and Flex, 100 on Enterprise Flex (15). 429 carries X-RateLimit-Remaining, -Limit and -Period, and llms.txt and AGENTS.md give a retry rule per status code with capped backoff, plus client-side idempotency guidance for the non-idempotent list and batch writes (15). The pricing page lists custom SLAs as an add-on on Unlimited and Enterprise plans, with no published terms, so no SLA (0). GA (10). 20+10+15+15+0+10 = 70.\n\n### Schema \u0026 documentation: Geocodio +9\n\n- Azure Maps (83): OpenAPI 2.0 documents for each service are public in `Azure/azure-rest-api-specs`, generated from TypeSpec since April 2026 (25). learn.microsoft.com returns each page as Markdown when `?accept=text/markdown` is added, though `llms.txt` returns 404 (10). Operation descriptions state purpose, and the geocoding and migration pages say when to use geocoding, autocomplete or batch and when not to (16 of 20). Typed parameters with ranges such as `top` from 1 to 20, 18 enums in the Search document and 48 in Route, and required fields marked (13 of 15). Examples on all 16 Search and Route operations, but errors are one default response with an `x-ms-error-code` header and no list of codes found (10 of 15). Dated `api-version` values and migration guides for Search, Route, Render and Traffic 1.0, but no API changelog page. The release notes cover the Web SDK only (9 of 15). 25+10+16+13+10+9 = 83.\n- Geocodio (92): OpenAPI 3.0.1 spec, version 2.1.0, with 11 paths (25). llms.txt and an AGENTS.md written for agents (10). llms.txt and AGENTS.md say when to use each endpoint and when not to, such as the Lists API over looping single calls, the upload tool for a one-off spreadsheet and straightline over driving distance unless road distance is needed (19). Typed parameters with country values, component fields and documented limits, though `fields` is a comma-separated string (12). Error table with retry guidance, examples throughout, but the spec documents 200, 400, 403, 404, 422 and 424 and not 429 or 500 (11). Versioned paths from v1 to v2.1 and a dated public changelog with entries back to 2024 (15). 25+10+19+12+11+15 = 92.\n\n### Security \u0026 auth: Azure Maps +8\n\n- Azure Maps (66): Microsoft Entra ID OAuth tokens with Azure roles, SAS tokens limited to 24 hours with a rate cap and allowed regions, and two subscription keys that can be regenerated in turn (30). Less 10 because the authentication guide tells callers to add the subscription key as a URL parameter, and Search 1.0 declares the key as a query parameter (20). Built-in reader roles, custom roles down to one service such as `Microsoft.Maps/accounts/services/search/read`, and `disableLocalAuth` to turn keys off. The data-plane APIs only read. A subscription key reaches every API on the account (18 of 20). Place names, addresses and traffic incident text come from third parties, and no prompt-injection guidance was found (5 of 15). Azure Monitor metrics show usage, errors and availability for 93 days. Per-request logs were not found in the Azure Maps docs (6 of 15). MSRC coordinated disclosure and bounty policies, and Azure Maps is on the FedRAMP High audit scope list dated 21 September 2026. The microsoft.com security.txt passed its Expires date on 23 September 2026 and still carries it on 1 November, and we did not confirm Maps on a SOC 2 scope list. An MSRC search on 1 November finds no CVE naming Azure Maps since November 2025 (17 of 20). 20+18+5+6+17 = 66.\n- Geocodio (58): Revocable keys, five on pay-as-you-go, each with permissions (Lists and Distance off by default), which earns 25. Less 10 because the docs say 'All requests require \u0026api_key=YOUR_API_KEY' and the OpenAPI spec defines only the query scheme, though an Authorization header has worked since March 2025 (15). Per-key permissions limit what a key can reach. DELETE on lists and distance jobs needs no confirmation (13). Results are addresses and government district, census and legislator data rather than user-written text. No prompt-injection guidance found (9). Usage per API key in the dashboard, downloadable as CSV, and billable-lookup headers on every response (8). Valid security.txt to 30 January 2030 with a PGP key and a responsible disclosure policy. SOC 2 Type II and annual penetration tests apply to the Enterprise platform only. No bug bounty found (13). 15+13+9+8+13 = 58.\n\n## Score by category\n\n| Category | Weight | Azure Maps | Geocodio | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 81 | 70 | Azure Maps +11 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 83 | 92 | Geocodio +9 |\n| Agent ergonomics | 13% (16.2 this run) | 73 | 80 | Geocodio +7 |\n| Security \u0026 auth | 14% (17.5 this run) | 66 | 58 | Azure Maps +8 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 40 | Geocodio +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 57 | 86 | Geocodio +29 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 75 | 87 | Geocodio +12 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **67.1 · B** | **72.2 · BB** | |\n\n## Facts side by side\n\n| Fact | Azure Maps | Geocodio |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Microsoft | Dotsquare LLC |\n| Hosted endpoint | `https://atlas.microsoft.com` | no (local only) |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Freemium |\n| Price for geocoding | $4.50 per 1,000 requests | $1600 per month (plan) |\n| x402 | no | no |\n| Licence | Proprietary service under Microsoft's Product Terms. The Azure SDK client libraries are MIT | none |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-09-30 | 2026-11-03 |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | 2026-09-01 | 2018-05-25 |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 9.1k npm/wk, 25k PyPI/wk | 21k npm/wk, 921 PyPI/wk |\n| Agent reviews | 3.3/5 (4) | none |\n\n## How the scores have moved\n\n### Azure Maps\n\n- -0.9 on 1 November 2026: time\n- +0.1 on 27 October 2026: checklist\n\n### Geocodio\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Azure Maps.** Azure Maps publishes OpenAPI documents for every service, per-service rate limits, a 99.9 per cent SLA and written rules on storing results, and Entra ID roles can limit a caller to one service. Place search exists only in Search 1.0, which the newer version has superseded, and the REST client libraries are all beta.\n\n**Geocodio.** Geocodio publishes llms.txt, an AGENTS.md on cost and retries, an OpenAPI spec and a dated changelog, and its results may be stored permanently. Coverage stops at six countries, there's no MCP server or published SLA for self-serve plans, and the docs still put the key in the query string by default.\n\n## Before you call either\n\n### Azure Maps\n\n1. Send the key in the `subscription-key` header, or use `Authorization: Bearer` with `x-ms-client-id`. The key also works as a URL parameter, which leaks into logs.\n2. Call `GET /geocode?api-version=2026-01-01` for addresses. It can return 200 with no results, so check `confidence`, `matchCodes` and the entity type before use.\n3. Use Search 1.0 (`/search/poi/json`, `/search/nearby/json`, `/search/fuzzy/json`) for places. The 2026-01-01 version has no place search.\n4. Use `eu.atlas.microsoft.com` or `us.atlas.microsoft.com` to keep request data in that geography.\n5. Don't store route or tile results beyond six months, and never for serving several users. The product terms allow keeping geocodes while the account is active.\n\n### Geocodio\n\n1. Always set `country`, because an address with none falls back to the US and is billed even when it's wrong\n2. Send the key as `Authorization: Bearer`, not in the query string, so it stays out of logs\n3. Use batch POST /geocode (up to 10,000 lookups) or the Lists API rather than looping single requests\n4. Treat accuracy_type place, county or state as not found, and check `_warnings` for appends that were billed but skipped\n5. Don't retry 403 or 422. On 429 read X-RateLimit headers and back off, and never re-upload a list sitting in ENQUEUED\n\n## Questions\n\n### Which is better for AI agents, Azure Maps or Geocodio?\n\nGeocodio scores 72.2 (BB) on agent readiness against Azure Maps's 67.1 (B), and leads in 5 of 7 scored categories. Azure Maps leads on reliability and security \u0026 auth.\n\n### Do Azure Maps and Geocodio need an API key?\n\nAzure Maps takes an API key or an OAuth sign-in. Geocodio needs an API key.\n\n### Can an agent call Azure Maps and Geocodio without installing anything?\n\nAzure Maps has a hosted endpoint at https://atlas.microsoft.com. No hosted endpoint is listed for Geocodio.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/azure-maps-vs-geocodio.json, and with the fewest tokens: https://www.anchorterminal.com/compare/azure-maps-vs-geocodio.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"azure-maps\", \"b\": \"geocodio\"}`. From a terminal: `anchor compare azure-maps geocodio`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/azure-maps.json and https://www.anchorterminal.com/api/v1/tools/geocodio.json\n\n## Other comparisons with Azure Maps or Geocodio\n\n- [Amazon Location Service vs Azure Maps](https://www.anchorterminal.com/compare/amazon-location-vs-azure-maps.md)\n- [Amazon Location Service vs Geocodio](https://www.anchorterminal.com/compare/amazon-location-vs-geocodio.md)\n- [ArcGIS Location Platform vs Azure Maps](https://www.anchorterminal.com/compare/arcgis-vs-azure-maps.md)\n- [ArcGIS Location Platform vs Geocodio](https://www.anchorterminal.com/compare/arcgis-vs-geocodio.md)\n- [Azure Maps vs Geoapify Location Platform + MCP](https://www.anchorterminal.com/compare/azure-maps-vs-geoapify.md)\n- [Azure Maps vs Google Maps Platform + Grounding Lite MCP](https://www.anchorterminal.com/compare/azure-maps-vs-google-maps-platform.md)\n- [Azure Maps vs HERE Location Services](https://www.anchorterminal.com/compare/azure-maps-vs-here-location-services.md)\n- [Azure Maps vs LocationIQ](https://www.anchorterminal.com/compare/azure-maps-vs-locationiq.md)\n- [Azure Maps vs Mapbox APIs + MCP](https://www.anchorterminal.com/compare/azure-maps-vs-mapbox.md)\n- [Azure Maps vs MapQuest](https://www.anchorterminal.com/compare/azure-maps-vs-mapquest.md)\n- [Azure Maps vs MapTiler Cloud](https://www.anchorterminal.com/compare/azure-maps-vs-maptiler.md)\n- [Azure Maps vs NextBillion.ai](https://www.anchorterminal.com/compare/azure-maps-vs-nextbillion.md)\n- [Azure Maps vs Nominatim](https://www.anchorterminal.com/compare/azure-maps-vs-nominatim.md)\n- [Azure Maps vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/azure-maps-vs-opencage.md)\n- [Azure Maps vs Radar](https://www.anchorterminal.com/compare/azure-maps-vs-radar.md)\n- [Azure Maps vs Stadia Maps](https://www.anchorterminal.com/compare/azure-maps-vs-stadia-maps.md)\n- [Azure Maps vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/azure-maps-vs-tomtom.md)\n- [Azure Maps vs Woosmap](https://www.anchorterminal.com/compare/azure-maps-vs-woosmap.md)\n- [Geoapify Location Platform + MCP vs Geocodio](https://www.anchorterminal.com/compare/geoapify-vs-geocodio.md)\n- [Geocodio vs Google Maps Platform + Grounding Lite MCP](https://www.anchorterminal.com/compare/geocodio-vs-google-maps-platform.md)\n- [Geocodio vs HERE Location Services](https://www.anchorterminal.com/compare/geocodio-vs-here-location-services.md)\n- [Geocodio vs LocationIQ](https://www.anchorterminal.com/compare/geocodio-vs-locationiq.md)\n- [Geocodio vs Mapbox APIs + MCP](https://www.anchorterminal.com/compare/geocodio-vs-mapbox.md)\n- [Geocodio vs MapQuest](https://www.anchorterminal.com/compare/geocodio-vs-mapquest.md)\n- [Geocodio vs MapTiler Cloud](https://www.anchorterminal.com/compare/geocodio-vs-maptiler.md)\n- [Geocodio vs NextBillion.ai](https://www.anchorterminal.com/compare/geocodio-vs-nextbillion.md)\n- [Geocodio vs Nominatim](https://www.anchorterminal.com/compare/geocodio-vs-nominatim.md)\n- [Geocodio vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/geocodio-vs-opencage.md)\n- [Geocodio vs Radar](https://www.anchorterminal.com/compare/geocodio-vs-radar.md)\n- [Geocodio vs Stadia Maps](https://www.anchorterminal.com/compare/geocodio-vs-stadia-maps.md)\n- [Geocodio vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/geocodio-vs-tomtom.md)\n- [Geocodio vs Woosmap](https://www.anchorterminal.com/compare/geocodio-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": "Azure Maps vs Geocodio",
        "url": ""
      }
    ],
    "description": "Geocodio scores 72.2 (BB) to Azure Maps's 67.1 (B) for geocoding. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Azure Maps B 67.1",
      "Geocodio BB 72.2",
      "scores"
    ],
    "h1": "Azure Maps vs Geocodio",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/azure-maps-vs-geocodio",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Azure Maps vs Geocodio for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/azure-maps-vs-geocodio"
  },
  "tokens": {
    "markdown": 5400,
    "slim": 3280
  },
  "version": 1
}
