OS Places API

Address search and geocoding over AddressBase Premium - every UPRN in the United Kingdom, Jersey, Guernsey, and the Isle of Man, with current, provisional, and historic address records and TOID cross-references. Premium or PSGA licensed; no OpenAPI is published.

OpenAPI Specification

ordnance-survey-places-openapi.json Raw ↑
{
  "openapi": "3.0.1",
  "info": {
    "title": "OS Places API",
    "version": "v1.0",
    "x-apievangelist-provenance": {
      "method": "searched",
      "generated": "2026-07-26",
      "assembly": "Assembled by the API Evangelist enrichment pipeline from the per-operation OpenAPI 3.0.1 documents Ordnance Survey publishes inline on each docs.os.uk technical-specification page. Paths, parameters, schemas, security schemes and responses are verbatim from those published documents; only the per-page fragments were merged into one document per API.",
      "sources": [
        "https://docs.os.uk/os-apis/accessing-os-apis/os-places-api/technical-specification/bbox.md",
        "https://docs.os.uk/os-apis/accessing-os-apis/os-places-api/technical-specification/find.md",
        "https://docs.os.uk/os-apis/accessing-os-apis/os-places-api/technical-specification/nearest.md",
        "https://docs.os.uk/os-apis/accessing-os-apis/os-places-api/technical-specification/polygon.md",
        "https://docs.os.uk/os-apis/accessing-os-apis/os-places-api/technical-specification/postcode.md",
        "https://docs.os.uk/os-apis/accessing-os-apis/os-places-api/technical-specification/radius.md",
        "https://docs.os.uk/os-apis/accessing-os-apis/os-places-api/technical-specification/uprn.md"
      ]
    }
  },
  "servers": [
    {
      "url": "https://api.os.uk/search/places/v1"
    }
  ],
  "security": [
    {
      "api-key": [],
      "api-key-header": [],
      "oauth2": []
    }
  ],
  "tags": [
    {
      "name": "Bounding box",
      "description": "Find all addresses inside a bounding box."
    },
    {
      "name": "Find",
      "description": "A free text search designed for quick use."
    },
    {
      "name": "Nearest",
      "description": "Find the closest address to a given point."
    },
    {
      "name": "Polygon",
      "description": "Find all addresses in a polygon or multi-polygon object."
    },
    {
      "name": "Postcode",
      "description": "A search based on a property’s postcode"
    },
    {
      "name": "Radius",
      "description": "Find all addresses that intersect a given circle."
    },
    {
      "name": "UPRN",
      "description": "A search that takes a UPRN as the search parameter."
    }
  ],
  "paths": {
    "/bbox": {
      "get": {
        "tags": [
          "Bounding box"
        ],
        "summary": "Returns matched addresses within a bounding box.",
        "operationId": "getBbox",
        "parameters": [
          {
            "name": "bbox",
            "in": "query",
            "description": "A pair of comma-separated coordinates with an accuracy of two decimal places or less, that specify the lower left and upper right coordinates of the bounding box. The maximum size of the bounding box is 1 km2. If the bounding box exceeds this, an error message is returned. The precision of the coordinates is to an accuracy of 8 metres.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The format the response will be returned in. Default: JSON.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "JSON",
              "enum": [
                "JSON",
                "XML"
              ]
            }
          },
          {
            "name": "maxresults",
            "in": "query",
            "description": "The maximum number of results to return. Default: 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "100",
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset the list of returned results by this amount.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            }
          },
          {
            "name": "dataset",
            "in": "query",
            "description": "The dataset to return. Multiple values can be sent, separated by a comma. Default: DPA.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "DPA",
              "enum": [
                "DPA",
                "LPI"
              ]
            }
          },
          {
            "name": "lr",
            "in": "query",
            "description": "Which language of addresses to return. Default: EN, CY.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "EN",
                "CY"
              ]
            }
          },
          {
            "name": "output_srs",
            "in": "query",
            "description": "The intended output spatial reference system. Default: EPSG:27700",
            "required": false,
            "schema": {
              "type": "string",
              "default": "EPSG:27700",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "srs",
            "in": "query",
            "description": "The spatial reference system for the input coordinate set.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "fq",
            "in": "query",
            "description": "Filter for classification code, logical status code, LPI logical status code and/or country code. Filtering for classification code will accept wildcard ( * ) searches. Multiple searches can be done by separating the codes with a space. Multiple filters can be used together by including the parameter multiple times",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieves matched addresses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              }
            }
          }
        }
      }
    },
    "/find": {
      "get": {
        "tags": [
          "Find"
        ],
        "summary": "Returns matched addresses based on a free text search.",
        "operationId": "getFind",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Free text search parameter.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The format the response will be returned in. Default: JSON.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "JSON",
              "enum": [
                "JSON",
                "XML"
              ]
            }
          },
          {
            "name": "maxresults",
            "in": "query",
            "description": "The maximum number of results to return. Default: 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "100",
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset the list of returned results by this amount.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            }
          },
          {
            "name": "dataset",
            "in": "query",
            "description": "The dataset to return. Multiple values can be sent, separated by a comma. Default: DPA.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "DPA",
              "enum": [
                "DPA",
                "LPI"
              ]
            }
          },
          {
            "name": "bbox",
            "in": "query",
            "description": "Limits results to only those contained within the supplied British National Grid bounding box. The bounding box must be specified with four comma-separated numbers, indicating the lower-left and upper-right coordinates in the format bbox=left,bottom,right,top. The bounding box must be entirely within the British National Grid.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lr",
            "in": "query",
            "description": "Which language of addresses to return. Default: EN, CY.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "EN",
                "CY"
              ]
            }
          },
          {
            "name": "minmatch",
            "in": "query",
            "description": "The minimum match score a result has to have to be returned.",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 0.1,
              "maximum": 1
            }
          },
          {
            "name": "matchprecision",
            "in": "query",
            "description": "The decimal point position at which the match score value is to be truncated.",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 10
            }
          },
          {
            "name": "output_srs",
            "in": "query",
            "description": "The intended output spatial reference system. Default: EPSG:27700",
            "required": false,
            "schema": {
              "type": "string",
              "default": "EPSG:27700",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "fq",
            "in": "query",
            "description": "Filter for classification code, logical status code, LPI logical status code and/or country code. Filtering for classification code will accept wildcard ( * ) searches. Multiple searches can be done by separating the codes with a space. Multiple filters can be used together by including the parameter multiple times",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieves matched addresses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              }
            }
          }
        }
      }
    },
    "/nearest": {
      "get": {
        "tags": [
          "Nearest"
        ],
        "summary": "Returns closest addresses to a pair of coordinates (X and Y).",
        "operationId": "getNearest",
        "parameters": [
          {
            "name": "point",
            "in": "query",
            "description": "One comma-separated coordinate set that specifies the coordinate to which the nearest record in a straight line should be found. The maximum distance the search will try is 1,000 metres. The precision of the coordinates is to two decimal places (that is, 1 cm accuracy).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "radius",
            "in": "query",
            "description": "The radius in metres to search within. The precision of the distance is to two decimal places (that is, 1 cm accuracy). Minimum = 0.01, Maximum = 1,000 . Default = 100",
            "schema": {
              "type": "number",
              "minimum": 0.01,
              "maximum": 1000
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The format the response will be returned in. Default: JSON.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "JSON",
              "enum": [
                "JSON",
                "XML"
              ]
            }
          },
          {
            "name": "dataset",
            "in": "query",
            "description": "The dataset to return. Multiple values can be sent, separated by a comma. Default: DPA.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "DPA",
              "enum": [
                "DPA",
                "LPI"
              ]
            }
          },
          {
            "name": "lr",
            "in": "query",
            "description": "Which language of addresses to return. Default: EN, CY.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "EN",
                "CY"
              ]
            }
          },
          {
            "name": "output_srs",
            "in": "query",
            "description": "The intended output spatial reference system. Default: EPSG:27700",
            "required": false,
            "schema": {
              "type": "string",
              "default": "EPSG:27700",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "srs",
            "in": "query",
            "description": "The spatial reference system for the input coordinate set.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "fq",
            "in": "query",
            "description": "Filter for classification code, logical status code, LPI logical status code and/or country code. Filtering for classification code will accept wildcard ( * ) searches. Multiple searches can be done by separating the codes with a space. Multiple filters can be used together by including the parameter multiple times",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieves matched addresses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              }
            }
          }
        }
      }
    },
    "/polygon": {
      "post": {
        "tags": [
          "Polygon"
        ],
        "summary": "Returns matched addresses within a geoJSON polygon or multi-polygon object.",
        "operationId": "postPolygon",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string"
                  },
                  "geometry": {
                    "type": "object"
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ]
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Content-Type",
            "in": "header",
            "description": "The media type of the request body",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "application/json"
              ]
            }
          },
          {
            "name": "referencepoint",
            "in": "query",
            "description": "Reference point geometry is the basis from which the distance value is calculated. Output is ordered by ascending distance from given reference point only if parameter has been specified.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "maxresults",
            "in": "query",
            "description": "The maximum number of results to return. Default: 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "100",
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset the list of returned results by this amount.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            }
          },
          {
            "name": "dataset",
            "in": "query",
            "description": "The dataset to return. Multiple values can be sent, separated by a comma. Default: DPA.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "DPA",
              "enum": [
                "DPA",
                "LPI"
              ]
            }
          },
          {
            "name": "lr",
            "in": "query",
            "description": "Which language of addresses to return. Default: EN, CY.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "EN",
                "CY"
              ]
            }
          },
          {
            "name": "output_srs",
            "in": "query",
            "description": "The intended output spatial reference system. Default: EPSG:27700",
            "required": false,
            "schema": {
              "type": "string",
              "default": "EPSG:27700",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "srs",
            "in": "query",
            "description": "The spatial reference system for the input coordinate set.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "fq",
            "in": "query",
            "description": "Filter for classification code, logical status code, LPI logical status code and/or country code. Filtering for classification code will accept wildcard ( * ) searches. Multiple searches can be done by separating the codes with a space. Multiple filters can be used together by including the parameter multiple times",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieves matched addresses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              }
            }
          }
        }
      }
    },
    "/postcode": {
      "get": {
        "tags": [
          "Postcode"
        ],
        "summary": "Returns matched addresses based on a property's postcode.",
        "operationId": "getPostcode",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "description": "The postcode search parameter.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The format the response will be returned in. Default: JSON.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "JSON",
              "enum": [
                "JSON",
                "XML"
              ]
            }
          },
          {
            "name": "maxresults",
            "in": "query",
            "description": "The maximum number of results to return. Default: 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "100",
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset the list of returned results by this amount.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            }
          },
          {
            "name": "dataset",
            "in": "query",
            "description": "The dataset to return. Multiple values can be sent, separated by a comma. Default: DPA.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "DPA",
              "enum": [
                "DPA",
                "LPI"
              ]
            }
          },
          {
            "name": "lr",
            "in": "query",
            "description": "Which language of addresses to return. Default: EN, CY.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "EN",
                "CY"
              ]
            }
          },
          {
            "name": "output_srs",
            "in": "query",
            "description": "The intended output spatial reference system. Default: EPSG:27700",
            "required": false,
            "schema": {
              "type": "string",
              "default": "EPSG:27700",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "fq",
            "in": "query",
            "description": "Filter for classification code, logical status code, LPI logical status code and/or country code. Filtering for classification code will accept wildcard ( * ) searches. Multiple searches can be done by separating the codes with a space. Multiple filters can be used together by including the parameter multiple times",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieves matched addresses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              }
            }
          }
        }
      }
    },
    "/radius": {
      "get": {
        "tags": [
          "Radius"
        ],
        "summary": "Takes a pair of coordinates as the centre for a circle and returns all addresses that are intersected by it.",
        "operationId": "getRadius",
        "parameters": [
          {
            "name": "point",
            "in": "query",
            "description": "One comma-separated coordinate set that specifies the coordinate to which the nearest record in a straight line should be found. The maximum distance the search will try is 1,000 metres. The precision of the coordinates is to two decimal places (that is, 1 cm accuracy).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "radius",
            "in": "query",
            "description": "The radius in metres to search within. The precision of the distance is to two decimal places (that is, 1 cm accuracy). Minimum = 0.01, Maximum = 1,000 . Default = 100",
            "schema": {
              "type": "number",
              "minimum": 0.01,
              "maximum": 1000
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The format the response will be returned in. Default: JSON.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "JSON",
              "enum": [
                "JSON",
                "XML"
              ]
            }
          },
          {
            "name": "maxresults",
            "in": "query",
            "description": "The maximum number of results to return. Default: 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "100",
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset the list of returned results by this amount.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": "0"
            }
          },
          {
            "name": "dataset",
            "in": "query",
            "description": "The dataset to return. Multiple values can be sent, separated by a comma. Default: DPA.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "DPA",
              "enum": [
                "DPA",
                "LPI"
              ]
            }
          },
          {
            "name": "lr",
            "in": "query",
            "description": "Which language of addresses to return. Default: EN, CY.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "EN",
                "CY"
              ]
            }
          },
          {
            "name": "output_srs",
            "in": "query",
            "description": "The intended output spatial reference system. Default: EPSG:27700",
            "required": false,
            "schema": {
              "type": "string",
              "default": "EPSG:27700",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "srs",
            "in": "query",
            "description": "The spatial reference system for the input coordinate set.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "fq",
            "in": "query",
            "description": "Filter for classification code, logical status code, LPI logical status code and/or country code. Filtering for classification code will accept wildcard ( * ) searches. Multiple searches can be done by separating the codes with a space. Multiple filters can be used together by including the parameter multiple times",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieves matched addresses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              }
            }
          }
        }
      }
    },
    "/uprn": {
      "get": {
        "tags": [
          "UPRN"
        ],
        "summary": "Returns matched addresses based on a UPRN.",
        "operationId": "getUPRN",
        "parameters": [
          {
            "name": "uprn",
            "in": "query",
            "description": "A valid UPRN.",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The format the response will be returned in. Default: JSON.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "JSON",
              "enum": [
                "JSON",
                "XML"
              ]
            }
          },
          {
            "name": "dataset",
            "in": "query",
            "description": "The dataset to return. Multiple values can be sent, separated by a comma. Default: DPA.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "DPA",
              "enum": [
                "DPA",
                "LPI"
              ]
            }
          },
          {
            "name": "lr",
            "in": "query",
            "description": "Which language of addresses to return. Default: EN, CY.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "EN",
                "CY"
              ]
            }
          },
          {
            "name": "output_srs",
            "in": "query",
            "description": "The intended output spatial reference system. Default: EPSG:27700",
            "required": false,
            "schema": {
              "type": "string",
              "default": "EPSG:27700",
              "enum": [
                "BNG",
                "EPSG:27700",
                "WGS84",
                "EPSG:4326",
                "EPSG:3857",
                "EPSG:4258"
              ]
            }
          },
          {
            "name": "fq",
            "in": "query",
            "description": "Filter for classification code, 

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ordnance-survey/refs/heads/main/openapi/ordnance-survey-places-openapi.json