{
  "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": "Azure Maps scores 67.1 (B) on agent readiness against Nominatim's 63.5 (B), and leads in 3 of 7 scored categories. Nominatim leads on payments \u0026 pricing.",
    "b": {
      "slug": "nominatim",
      "name": "Nominatim",
      "vendor": "Nominatim project (osm-search)",
      "vendorUrl": "https://nominatim.org",
      "kind": "http-api",
      "category": "maps",
      "summary": "Nominatim is open-source geocoding software that searches OpenStreetMap data by name and address and reverse geocodes coordinates. Operators self-host its HTTP API; the OpenStreetMap Foundation runs a free public instance under a strict usage policy.",
      "url": "https://www.anchorterminal.com/tools/nominatim",
      "markdownUrl": "https://www.anchorterminal.com/tools/nominatim.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/nominatim.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/nominatim.json",
      "dns": "nominatim.grade.anchorterminal.com",
      "repo": "https://github.com/osm-search/Nominatim",
      "license": "GPL-3.0-or-later",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "nominatim-api"
        },
        {
          "registry": "pypi",
          "name": "nominatim-db"
        }
      ],
      "auth": "none",
      "authNotes": "The server has no authentication; operators add it with their own proxy. The public instance at nominatim.openstreetmap.org takes no key but requires a valid User-Agent or Referer identifying the application.",
      "pricing": "free",
      "pricingNotes": "Free software. The public instance is free within its usage policy (at most 1 request a second, no bulk or systematic use). Commercial hosted Nominatim is sold by third parties, not by the project.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No payment protocol in the server or the docs (checked 2026-11-06). The software is free.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": 2052,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://nominatim.org/release-docs/latest/api/Overview/",
      "capabilities": [
        "geo.geocode",
        "geo.reverse",
        "geo.places"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "free",
        "no-auth",
        "no-key",
        "python",
        "open-data",
        "local"
      ],
      "lastRelease": "2026-10-14",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 63.5,
        "grade": "B",
        "agentReady": false,
        "rank": 513,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 9,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 75,
          "maintenance": 60,
          "payments": 60,
          "reliability": 82,
          "schema": 51,
          "security": 50,
          "transparency": 59
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Nominatim is the open-source OpenStreetMap geocoder, free to run with a documented search, reverse and lookup API, tested releases and two years of security support per release. It has no OpenAPI spec, no built-in authentication, and the public instance allows one request a second and restricts LLM-suggested use, so agents at scale need their own server.",
        "bestFor": "Self-hosted worldwide geocoding from OpenStreetMap data with no per-call cost or storage limits beyond ODbL.",
        "strengths": [
          "Open source under GPL, free to self-host with no key and nothing to buy",
          "Search, reverse, lookup and status endpoints with limit, layer, country and viewbox filters",
          "Release 5.3.3 on 14 October 2026, with a ChangeLog and two years of security updates per release line",
          "SECURITY.md with a security address, a 3-work-day acknowledgement and a disclosure process",
          "CI runs unit and BDD tests on every push across PostgreSQL 13 to 18"
        ],
        "weaknesses": [
          "No OpenAPI spec and no llms.txt",
          "The public instance allows at most one request a second, no autocomplete, no systematic queries and no reselling",
          "The usage policy says LLMs may suggest the public API only while pointing to the policy, and bars it from no-code and vibe-coding platforms",
          "No authentication in the server, so access control is the operator's job",
          "A full planet import needs substantial hardware and time to set up"
        ],
        "agentNotes": [
          "Don't send bulk or repeated queries to nominatim.openstreetmap.org; keep to one request a second, cache results and set an identifying User-Agent",
          "Tell the user about the OSMF usage policy before suggesting the public instance, as the policy requires",
          "For regular or large jobs, run your own Nominatim or use a commercial provider listed on the Nominatim wiki",
          "Pass format=jsonv2 or geojson and limit, since omitting format sends the request to the web UI",
          "Attribute OpenStreetMap and respect the ODbL share-alike terms when storing results"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 63.5
          }
        ],
        "editorialScores": {
          "ergonomics": 75,
          "maintenance": 60,
          "payments": 60,
          "reliability": 82,
          "schema": 51,
          "security": 50,
          "transparency": 81
        },
        "provenanceScore": 37,
        "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 nominatim-db nominatim-api",
        "http": "curl -A \"my-app/1.0 (contact@example.com)\" \"https://nominatim.openstreetmap.org/search?q=Dresden\u0026format=jsonv2\u0026limit=1\""
      },
      "letme": {
        "capability": "https://letme.dev/geo.geocode",
        "tool": "https://letme.dev/nominatim"
      },
      "area": "everyday",
      "provenance": {
        "legalEntity": "",
        "domain": "nominatim.org",
        "domainRegistered": "2010-05-20",
        "endpointOnVendorDomain": false,
        "terms": "https://operations.osmfoundation.org/policies/nominatim/",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/osm-search/Nominatim/blob/master/ChangeLog",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "No company stands behind the software. The nominatim.org imprint names its maintainer Sarah Hoffmann as the person who runs the site.",
          "The terms listed are the OSMF usage policy for the public instance, which is run by the OpenStreetMap Foundation and is also governed by the OSMF Terms of Use. The licence governs the software.",
          "nominatim.openstreetmap.org's robots.txt disallows /search, /reverse, /lookup, /details and /status, so no request was sent there.",
          "nominatim.org has no robots.txt (404) and no llms.txt. Security reports go to security@nominatim.org per SECURITY.md; no security.txt was looked for beyond that file.",
          "RDAP gives nominatim.org a registration date of 20 May 2010.",
          "A request to pypi.org/pypi/nominatim-api/json, disallowed by PyPI's robots.txt, was sent by mistake on 6 November 2026; release dates are taken from PyPI's allowed RSS release feed instead."
        ],
        "score": 37
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/nominatim.json",
      "live": {
        "slug": "nominatim",
        "versions": [
          {
            "registry": "github",
            "name": "osm-search/Nominatim",
            "version": "v5.3.3",
            "released": "2026-10-14",
            "seenAt": "2026-11-06T23:49:38.546585976Z"
          },
          {
            "registry": "pypi",
            "name": "nominatim-api",
            "version": "5.3.3",
            "released": "2026-10-14",
            "seenAt": "2026-11-06T23:49:36.460811725Z"
          },
          {
            "registry": "pypi",
            "name": "nominatim-db",
            "version": "5.3.3",
            "released": "2026-10-14",
            "seenAt": "2026-11-06T23:49:36.677899359Z"
          }
        ],
        "githubStars": 4553,
        "pypiWeekly": 2052,
        "securityTxt": {
          "url": "https://nominatim.org/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:36.659918342Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/osm-search/Nominatim/master/ChangeLog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:22:43.498875362Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d293d5592f9f"
          },
          {
            "url": "https://operations.osmfoundation.org/policies/nominatim/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:15:39.38384818Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e7342ba42b14"
          }
        ],
        "updatedAt": "2026-11-07T16:00:36.659918342Z"
      }
    },
    "edges": [
      {
        "by": 40,
        "category": "payments",
        "leads": "nominatim",
        "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": "Self-hosted rule. No payment protocol (0). Free software with nothing to buy (20 + 20 + 20). The public instance is also free and keyless, within its usage policy. 0+20+20+20 = 60."
        },
        "scores": {
          "a": 20,
          "b": 60
        }
      },
      {
        "by": 32,
        "category": "schema",
        "leads": "azure-maps",
        "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": "No OpenAPI or machine-readable contract (0). nominatim.org/llms.txt returns 404, and the manual is HTML, though its Markdown sources sit in the repository's docs folder (0). The API reference explains each endpoint and parameter and when not to use one, such as the details endpoint being for debugging (14). Types, enums and limits are documented, such as format, layer and limit (at most 40), but there's no schema to validate against (12). Example queries and outputs per endpoint, with errors described in prose (10). A versioned manual per release, a ChangeLog and a migration guide (15). 0+0+14+12+10+15 = 51."
        },
        "scores": {
          "a": 83,
          "b": 51
        }
      },
      {
        "by": 16,
        "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": "The server has no authentication of its own; an operator puts it behind their own proxy. The public instance takes no key and identifies callers by User-Agent or Referer (5). Every endpoint reads, so there's nothing to approve (18). Results are OpenStreetMap names and tags, community-edited text, with no prompt-injection guidance (7). Query logging to a file is available through NOMINATIM_LOG_FILE and off by default (8). SECURITY.md gives security@nominatim.org, an acknowledgement within 3 work days, a disclosure process and two years of security updates per release. No bug bounty (12). 5+18+7+8+12 = 50."
        },
        "scores": {
          "a": 66,
          "b": 50
        }
      },
      {
        "by": 16,
        "category": "transparency",
        "leads": "azure-maps",
        "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": "Open source, GPL-3.0-or-later for the Python code, GPL-2.0 for other files and Apache-2.0 for the osm2pgsql Lua styles (30). A self-hosted server keeps data where the operator runs it. The public instance falls under the OSMF privacy policy and asks users not to send personal data. We didn't read the OSMF policy itself (20). SECURITY.md lists the end of security support for each release line with dates, and a migration guide covers each version (16). No telemetry found in the settings, and request logging is opt-in (15). 30+20+16+15 = 81."
        },
        "scores": {
          "a": 75,
          "b": 59
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Microsoft",
        "b": "Nominatim project (osm-search)",
        "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": "None",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "$4.50 per 1,000 requests",
        "b": "free",
        "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": "GPL-3.0-or-later",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-30",
        "b": "2026-10-14",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-01",
        "b": "no document linked",
        "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": "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": "9.1k npm/wk, 25k PyPI/wk",
        "b": "2.1k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "3.3/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Azure Maps scores 67.1 (B) on agent readiness against Nominatim's 63.5 (B), and leads in 3 of 7 scored categories. Nominatim leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Azure Maps or Nominatim?"
      },
      {
        "answer": "Nominatim, at free against $4.50 per 1,000 requests for Azure Maps. These are the vendors' published prices for the job.",
        "question": "Which is cheaper for geocoding, Azure Maps or Nominatim?"
      },
      {
        "answer": "Azure Maps takes an API key or an OAuth sign-in. Nominatim needs no key.",
        "question": "Do Azure Maps and Nominatim need an API key?"
      },
      {
        "answer": "Azure Maps has a hosted endpoint at https://atlas.microsoft.com. No hosted endpoint is listed for Nominatim.",
        "question": "Can an agent call Azure Maps and Nominatim without installing anything?"
      },
      {
        "answer": "No open-source release is listed for Azure Maps. Nominatim is open source (GPL-3.0-or-later).",
        "question": "Are Azure Maps and Nominatim open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 83 against 51",
          "Security \u0026 auth, 66 against 50",
          "Transparency \u0026 trust, 75 against 59"
        ],
        "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": [
          "Payments \u0026 pricing, 60 against 20"
        ],
        "also": [
          "No key needed to call it",
          "Open source"
        ],
        "goodFor": "Self-hosted worldwide geocoding from OpenStreetMap data with no per-call cost or storage limits beyond ODbL.",
        "slug": "nominatim",
        "watchFor": "No OpenAPI spec and no llms.txt"
      }
    ],
    "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"
        }
      ],
      "nominatim": 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-nominatim.json",
        "title": "Amazon Location Service vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/amazon-location-vs-nominatim"
      },
      {
        "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-nominatim.json",
        "title": "ArcGIS Location Platform vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/arcgis-vs-nominatim"
      },
      {
        "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-geocodio.json",
        "title": "Azure Maps vs Geocodio",
        "url": "https://www.anchorterminal.com/compare/azure-maps-vs-geocodio"
      },
      {
        "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-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-nominatim.json",
        "title": "Geoapify Location Platform + MCP vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/geoapify-vs-nominatim"
      },
      {
        "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/google-maps-platform-vs-nominatim.json",
        "title": "Google Maps Platform + Grounding Lite MCP vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/google-maps-platform-vs-nominatim"
      },
      {
        "json": "https://www.anchorterminal.com/compare/here-location-services-vs-nominatim.json",
        "title": "HERE Location Services vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/here-location-services-vs-nominatim"
      },
      {
        "json": "https://www.anchorterminal.com/compare/locationiq-vs-nominatim.json",
        "title": "LocationIQ vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/locationiq-vs-nominatim"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mapbox-vs-nominatim.json",
        "title": "Mapbox APIs + MCP vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/mapbox-vs-nominatim"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mapquest-vs-nominatim.json",
        "title": "MapQuest vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/mapquest-vs-nominatim"
      },
      {
        "json": "https://www.anchorterminal.com/compare/maptiler-vs-nominatim.json",
        "title": "MapTiler Cloud vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/maptiler-vs-nominatim"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nextbillion-vs-nominatim.json",
        "title": "NextBillion.ai vs Nominatim",
        "url": "https://www.anchorterminal.com/compare/nextbillion-vs-nominatim"
      },
      {
        "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-radar.json",
        "title": "Nominatim vs Radar",
        "url": "https://www.anchorterminal.com/compare/nominatim-vs-radar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nominatim-vs-stadia-maps.json",
        "title": "Nominatim vs Stadia Maps",
        "url": "https://www.anchorterminal.com/compare/nominatim-vs-stadia-maps"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nominatim-vs-tomtom.json",
        "title": "Nominatim vs TomTom Maps APIs + MCP",
        "url": "https://www.anchorterminal.com/compare/nominatim-vs-tomtom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nominatim-vs-woosmap.json",
        "title": "Nominatim vs Woosmap",
        "url": "https://www.anchorterminal.com/compare/nominatim-vs-woosmap"
      }
    ],
    "panel": null,
    "scores": [
      {
        "azure-maps": 81,
        "by": 1,
        "edge": "nominatim",
        "key": "reliability",
        "name": "Reliability",
        "nominatim": 82,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "azure-maps": 83,
        "by": 32,
        "edge": "azure-maps",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "nominatim": 51,
        "weight": 13
      },
      {
        "azure-maps": 73,
        "by": 2,
        "edge": "nominatim",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "nominatim": 75,
        "weight": 13
      },
      {
        "azure-maps": 66,
        "by": 16,
        "edge": "azure-maps",
        "key": "security",
        "name": "Security \u0026 auth",
        "nominatim": 50,
        "weight": 14
      },
      {
        "azure-maps": 20,
        "by": 40,
        "edge": "nominatim",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "nominatim": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "azure-maps": 57,
        "by": 3,
        "edge": "nominatim",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "nominatim": 60,
        "weight": 7
      },
      {
        "azure-maps": 75,
        "by": 16,
        "edge": "azure-maps",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "nominatim": 59,
        "weight": 7
      }
    ],
    "summary": "Azure Maps scores 67.1 (B) on agent readiness against Nominatim's 63.5 (B), and leads in 3 of 7 scored categories. Nominatim leads on payments \u0026 pricing. 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.",
      "nominatim": "Nominatim is the open-source OpenStreetMap geocoder, free to run with a documented search, reverse and lookup API, tested releases and two years of security support per release. It has no OpenAPI spec, no built-in authentication, and the public instance allows one request a second and restricts LLM-suggested use, so agents at scale need their own server."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/azure-maps-vs-nominatim",
    "json": "https://www.anchorterminal.com/compare/azure-maps-vs-nominatim.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/azure-maps-vs-nominatim.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/azure-maps-vs-nominatim.min.md"
  },
  "markdown": "Azure Maps scores 67.1 (B) on agent readiness against Nominatim's 63.5 (B), and leads in 3 of 7 scored categories. Nominatim leads on payments \u0026 pricing. 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- Nominatim: grade B, 63.5/100, rank #513 of 1510. Markdown https://www.anchorterminal.com/tools/nominatim.md · JSON https://www.anchorterminal.com/api/v1/tools/nominatim.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- Schema \u0026 documentation, 83 against 51\n- Security \u0026 auth, 66 against 50\n- Transparency \u0026 trust, 75 against 59\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### Nominatim (B)\n\nGood for: Self-hosted worldwide geocoding from OpenStreetMap data with no per-call cost or storage limits beyond ODbL.\n\nAhead on:\n- Payments \u0026 pricing, 60 against 20\n\nAlso in its favour:\n- No key needed to call it\n- Open source\n\nWatch for: No OpenAPI spec and no llms.txt\n\n\n## Why the edge\n\n### Payments \u0026 pricing: Nominatim +40\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- Nominatim (60): Self-hosted rule. No payment protocol (0). Free software with nothing to buy (20 + 20 + 20). The public instance is also free and keyless, within its usage policy. 0+20+20+20 = 60.\n\n### Schema \u0026 documentation: Azure Maps +32\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- Nominatim (51): No OpenAPI or machine-readable contract (0). nominatim.org/llms.txt returns 404, and the manual is HTML, though its Markdown sources sit in the repository's docs folder (0). The API reference explains each endpoint and parameter and when not to use one, such as the details endpoint being for debugging (14). Types, enums and limits are documented, such as format, layer and limit (at most 40), but there's no schema to validate against (12). Example queries and outputs per endpoint, with errors described in prose (10). A versioned manual per release, a ChangeLog and a migration guide (15). 0+0+14+12+10+15 = 51.\n\n### Security \u0026 auth: Azure Maps +16\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- Nominatim (50): The server has no authentication of its own; an operator puts it behind their own proxy. The public instance takes no key and identifies callers by User-Agent or Referer (5). Every endpoint reads, so there's nothing to approve (18). Results are OpenStreetMap names and tags, community-edited text, with no prompt-injection guidance (7). Query logging to a file is available through NOMINATIM_LOG_FILE and off by default (8). SECURITY.md gives security@nominatim.org, an acknowledgement within 3 work days, a disclosure process and two years of security updates per release. No bug bounty (12). 5+18+7+8+12 = 50.\n\n### Transparency \u0026 trust: Azure Maps +16\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- Nominatim (59): Open source, GPL-3.0-or-later for the Python code, GPL-2.0 for other files and Apache-2.0 for the osm2pgsql Lua styles (30). A self-hosted server keeps data where the operator runs it. The public instance falls under the OSMF privacy policy and asks users not to send personal data. We didn't read the OSMF policy itself (20). SECURITY.md lists the end of security support for each release line with dates, and a migration guide covers each version (16). No telemetry found in the settings, and request logging is opt-in (15). 30+20+16+15 = 81.\n\n## Score by category\n\n| Category | Weight | Azure Maps | Nominatim | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 81 | 82 | Nominatim +1 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 83 | 51 | Azure Maps +32 |\n| Agent ergonomics | 13% (16.2 this run) | 73 | 75 | Nominatim +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 66 | 50 | Azure Maps +16 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 60 | Nominatim +40 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 57 | 60 | Nominatim +3 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 75 | 59 | Azure Maps +16 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **67.1 · B** | **63.5 · B** | |\n\n## Facts side by side\n\n| Fact | Azure Maps | Nominatim |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Microsoft | Nominatim project (osm-search) |\n| Hosted endpoint | `https://atlas.microsoft.com` | no (local only) |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | None |\n| Pricing | Freemium | Free |\n| Price for geocoding | $4.50 per 1,000 requests | free |\n| x402 | no | no |\n| Licence | Proprietary service under Microsoft's Product Terms. The Azure SDK client libraries are MIT | GPL-3.0-or-later |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-09-30 | 2026-10-14 |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | 2026-09-01 | no document linked |\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 | 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 | 9.1k npm/wk, 25k PyPI/wk | 2.1k 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### Nominatim\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**Nominatim.** Nominatim is the open-source OpenStreetMap geocoder, free to run with a documented search, reverse and lookup API, tested releases and two years of security support per release. It has no OpenAPI spec, no built-in authentication, and the public instance allows one request a second and restricts LLM-suggested use, so agents at scale need their own server.\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### Nominatim\n\n1. Don't send bulk or repeated queries to nominatim.openstreetmap.org; keep to one request a second, cache results and set an identifying User-Agent\n2. Tell the user about the OSMF usage policy before suggesting the public instance, as the policy requires\n3. For regular or large jobs, run your own Nominatim or use a commercial provider listed on the Nominatim wiki\n4. Pass format=jsonv2 or geojson and limit, since omitting format sends the request to the web UI\n5. Attribute OpenStreetMap and respect the ODbL share-alike terms when storing results\n\n## Questions\n\n### Which is better for AI agents, Azure Maps or Nominatim?\n\nAzure Maps scores 67.1 (B) on agent readiness against Nominatim's 63.5 (B), and leads in 3 of 7 scored categories. Nominatim leads on payments \u0026 pricing.\n\n### Which is cheaper for geocoding, Azure Maps or Nominatim?\n\nNominatim, at free against $4.50 per 1,000 requests for Azure Maps. These are the vendors' published prices for the job.\n\n### Do Azure Maps and Nominatim need an API key?\n\nAzure Maps takes an API key or an OAuth sign-in. Nominatim needs no key.\n\n### Can an agent call Azure Maps and Nominatim without installing anything?\n\nAzure Maps has a hosted endpoint at https://atlas.microsoft.com. No hosted endpoint is listed for Nominatim.\n\n### Are Azure Maps and Nominatim open source?\n\nNo open-source release is listed for Azure Maps. Nominatim is open source (GPL-3.0-or-later).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/azure-maps-vs-nominatim.json, and with the fewest tokens: https://www.anchorterminal.com/compare/azure-maps-vs-nominatim.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"azure-maps\", \"b\": \"nominatim\"}`. From a terminal: `anchor compare azure-maps nominatim`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/azure-maps.json and https://www.anchorterminal.com/api/v1/tools/nominatim.json\n\n## Other comparisons with Azure Maps or Nominatim\n\n- [Amazon Location Service vs Azure Maps](https://www.anchorterminal.com/compare/amazon-location-vs-azure-maps.md)\n- [Amazon Location Service vs Nominatim](https://www.anchorterminal.com/compare/amazon-location-vs-nominatim.md)\n- [ArcGIS Location Platform vs Azure Maps](https://www.anchorterminal.com/compare/arcgis-vs-azure-maps.md)\n- [ArcGIS Location Platform vs Nominatim](https://www.anchorterminal.com/compare/arcgis-vs-nominatim.md)\n- [Azure Maps vs Geoapify Location Platform + MCP](https://www.anchorterminal.com/compare/azure-maps-vs-geoapify.md)\n- [Azure Maps vs Geocodio](https://www.anchorterminal.com/compare/azure-maps-vs-geocodio.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 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 Nominatim](https://www.anchorterminal.com/compare/geoapify-vs-nominatim.md)\n- [Geocodio vs Nominatim](https://www.anchorterminal.com/compare/geocodio-vs-nominatim.md)\n- [Google Maps Platform + Grounding Lite MCP vs Nominatim](https://www.anchorterminal.com/compare/google-maps-platform-vs-nominatim.md)\n- [HERE Location Services vs Nominatim](https://www.anchorterminal.com/compare/here-location-services-vs-nominatim.md)\n- [LocationIQ vs Nominatim](https://www.anchorterminal.com/compare/locationiq-vs-nominatim.md)\n- [Mapbox APIs + MCP vs Nominatim](https://www.anchorterminal.com/compare/mapbox-vs-nominatim.md)\n- [MapQuest vs Nominatim](https://www.anchorterminal.com/compare/mapquest-vs-nominatim.md)\n- [MapTiler Cloud vs Nominatim](https://www.anchorterminal.com/compare/maptiler-vs-nominatim.md)\n- [NextBillion.ai vs Nominatim](https://www.anchorterminal.com/compare/nextbillion-vs-nominatim.md)\n- [Nominatim vs OpenCage Geocoding API](https://www.anchorterminal.com/compare/nominatim-vs-opencage.md)\n- [Nominatim vs Radar](https://www.anchorterminal.com/compare/nominatim-vs-radar.md)\n- [Nominatim vs Stadia Maps](https://www.anchorterminal.com/compare/nominatim-vs-stadia-maps.md)\n- [Nominatim vs TomTom Maps APIs + MCP](https://www.anchorterminal.com/compare/nominatim-vs-tomtom.md)\n- [Nominatim vs Woosmap](https://www.anchorterminal.com/compare/nominatim-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 Nominatim",
        "url": ""
      }
    ],
    "description": "Azure Maps scores 67.1 (B) to Nominatim's 63.5 (B) for geocoding. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Azure Maps B 67.1",
      "Nominatim B 63.5",
      "scores"
    ],
    "h1": "Azure Maps vs Nominatim",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/azure-maps-vs-nominatim",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Azure Maps vs Nominatim for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/azure-maps-vs-nominatim"
  },
  "tokens": {
    "markdown": 4250,
    "slim": 2080
  },
  "version": 1
}
