Skip to content
All data sources

Worldwide Address Search API and MCP server

No authglobal-geocoder

Worldwide address search and reverse geocoding from OpenStreetMap Nominatim. Use this to turn place text into coordinates before querying local property sources.

Worldwide Address Search is published by OpenStreetMap Nominatim and covers Worldwide.

It refreshes on a schedule the publisher sets.

Last verified . That is when these facts were last rebuilt from the ParcelOps source registry, not when OpenStreetMap Nominatim last refreshed the data itself.

API access

Your AI client reaches Worldwide Address Search through one ParcelOps MCP endpoint, so there is no separate key to hold for it and no per-source client to write. Reaching it takes no credentials of your own.

Where it came from

Freshness and coverage

FreshnessScheduled · Reflects the upstream OpenStreetMap/Nominatim index.
Places coveredWorldwide
Time coveredNot declared
CredentialsNo credentials required

What this source cannot tell you

  • Anything outside Worldwide. A request past that edge comes back empty rather than approximated.
  • Which years it spans, because the covered period is not declared.
  • Anything OpenStreetMap Nominatim does not publish. ParcelOps returns this source as it stands and never fills a blank field from a different one.
  • Open-map address context is not a legal cadastral or ownership record.

Methods (3)

A method is one call your agent can make against this source.

  • searchAddress

    read

    Search a worldwide address or place and return WGS84 GeoJSON.

    What you must providequery
    Records returnedaddress, place
    How to get more resultsnone
    Coordinate systemEPSG:4326
    FreshnessScheduled (source-level)
    Input schema
    {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "maxLength": 300
        },
        "countryCodes": {
          "description": "Optional ISO alpha-2 country codes: \"us,ca\" or [\"US\", \"CA\"].",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "bbox": {
          "type": "array",
          "description": "[minLongitude, minLatitude, maxLongitude, maxLatitude] in WGS84.",
          "minItems": 4,
          "maxItems": 4,
          "items": {
            "type": "number"
          }
        },
        "bounded": {
          "type": "boolean"
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 25
        }
      },
      "required": [
        "query"
      ],
      "additionalProperties": false
    }
    Output schema
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "parcelops.public-data"
        },
        "schemaVersion": {
          "type": "string"
        },
        "dataset": {
          "type": "object",
          "additionalProperties": true
        },
        "query": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string"
            },
            "limit": {
              "type": "integer"
            }
          },
          "additionalProperties": true
        },
        "records": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "const": "Feature"
              },
              "geometry": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": true
              },
              "properties": {
                "type": "object",
                "properties": {
                  "placeId": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "latitude": {
                    "type": "number",
                    "minimum": -90,
                    "maximum": 90
                  },
                  "longitude": {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180
                  },
                  "displayName": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "address": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": true
                  },
                  "source": {
                    "type": "string"
                  },
                  "coverageTier": {
                    "type": "string"
                  }
                },
                "required": [
                  "latitude",
                  "longitude",
                  "source"
                ],
                "additionalProperties": true
              }
            },
            "required": [
              "type",
              "geometry",
              "properties"
            ],
            "additionalProperties": true
          }
        },
        "summary": {
          "type": "object",
          "properties": {
            "matchedRecords": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            },
            "returnedRecords": {
              "type": "integer",
              "minimum": 0
            },
            "truncated": {
              "type": "boolean"
            }
          },
          "required": [
            "matchedRecords",
            "returnedRecords",
            "truncated"
          ],
          "additionalProperties": true
        },
        "pagination": {
          "type": "object",
          "additionalProperties": true
        },
        "source": {
          "type": "object",
          "additionalProperties": true
        },
        "caveats": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "kind",
        "schemaVersion",
        "query",
        "records",
        "summary",
        "source",
        "caveats"
      ],
      "additionalProperties": true
    }
    • Open-map address matches require confirmation before they are used as legal parcel identity.
    • A miss returns records: [] with a caveat naming a cause you can act on, not a bare empty result.
    • When a query carries a postcode and matches nothing, one retry runs without it; that answer says so in a caveat and is not postcode-verified.
  • reverseGeocode

    read

    Resolve coordinates to the nearest mapped address, street, or place.

    What you must providelatitudelongitude
    Records returnedaddress, place
    How to get more resultsnone
    Coordinate systemEPSG:4326
    FreshnessScheduled (source-level)
    Input schema
    {
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        },
        "zoom": {
          "type": "integer",
          "minimum": 1,
          "maximum": 18
        },
        "layer": {
          "type": "string",
          "description": "Comma-separated Nominatim layers: address, poi, railway, natural, manmade. Defaults to 'address' so a lookup lands on a building, street, or place. Add 'poi' only to reach mapped points of interest such as benches or phones."
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "additionalProperties": false
    }
    Output schema
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "parcelops.public-data"
        },
        "schemaVersion": {
          "type": "string"
        },
        "dataset": {
          "type": "object",
          "additionalProperties": true
        },
        "query": {
          "type": "object",
          "properties": {
            "latitude": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "longitude": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "layer": {
              "type": "string"
            },
            "zoom": {
              "type": "integer"
            }
          },
          "required": [
            "latitude",
            "longitude"
          ],
          "additionalProperties": true
        },
        "records": {
          "type": "array",
          "maxItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "place_id": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "lat": {
                "type": [
                  "string",
                  "number"
                ]
              },
              "lon": {
                "type": [
                  "string",
                  "number"
                ]
              },
              "display_name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "address": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": true
              },
              "geojson": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": true
              },
              "queriedCoordinates": {
                "type": "object",
                "properties": {
                  "latitude": {
                    "type": "number",
                    "minimum": -90,
                    "maximum": 90
                  },
                  "longitude": {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180
                  }
                },
                "required": [
                  "latitude",
                  "longitude"
                ],
                "additionalProperties": false
              },
              "layer": {
                "type": "string"
              }
            },
            "required": [
              "lat",
              "lon"
            ],
            "additionalProperties": true
          }
        },
        "summary": {
          "type": "object",
          "properties": {
            "matchedRecords": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            },
            "returnedRecords": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1
            },
            "truncated": {
              "type": "boolean"
            }
          },
          "required": [
            "matchedRecords",
            "returnedRecords",
            "truncated"
          ],
          "additionalProperties": true
        },
        "source": {
          "type": "object",
          "additionalProperties": true
        },
        "caveats": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "kind",
        "schemaVersion",
        "query",
        "records",
        "summary",
        "source",
        "caveats"
      ],
      "additionalProperties": true
    }
    • The nearest mapped address is a resolver result, not proof of parcel identity or occupancy.
    • Returned lat/lon belong to the matched object, not to the coordinate asked about; queriedCoordinates echoes the input so the offset stays visible.
    • A coordinate with nothing mapped nearby returns records: [] with a caveat; that means OpenStreetMap has nothing mapped in this layer here, not that nothing exists at the location.
  • getServiceInfo

    read

    Return source, coverage, and legal-use notes.

    FreshnessScheduled (source-level)
    Input schema
    {
      "type": "object",
      "properties": {},
      "required": [],
      "additionalProperties": false
    }

Where this source is used