Resolve any UK UPRN, postcode or USRN over plain HTTP. No key, no SDK - just a URL and an Accept header.
Look up a single property in one request. The example below resolves UPRN 100023336956 - a property on Downing Street, Westminster.
Building a client? Download the OpenAPI 3.1 schema - JSON or YAML - and generate types in your language of choice.
curl -H "Accept: application/json" \ https://uprns.io/uprn/100023336956
const res = await fetch( "https://uprns.io/uprn/100023336956", { headers: { Accept: "application/json" } } ); const record = await res.json();
import requests r = requests.get( "https://uprns.io/uprn/100023336956", headers={"Accept": "application/json"}, ) record = r.json()
{
"uprn": "100023336956",
"latitude": 51.503541,
"longitude": -0.12767,
"easting": 530047,
"northing": 179951,
"country": "England",
"region": "London",
"local_authority": "Westminster",
"usrn": "8400071",
"postcode": "SW1A 2AA"
}Every endpoint serves a human-readable HTML page to browsers and structured JSON to API clients from the same URL. Request JSON in either of two ways:
| Method | How |
|---|---|
| Accept header | Accept: application/json - preferred for API clients. |
| Suffix | Append .json to the path, e.g. /uprn/100023336956.json - handy in a browser. |
The API is rate-limited on a fair-use basis per IP. Typical interactive and batch use sits well within the limit; if you need the whole dataset, take the Parquet downloads instead of crawling endpoints.
The data is published under the Open Government Licence v3.0. You must acknowledge the source with the attribution statement: “Contains OS data © Crown copyright and database right 2026”, alongside ONS where postcode geography is used.
Returns the canonical record for a single Unique Property Reference Number - coordinates, full administrative geography and linked identifiers.
| Name | Type | Description |
|---|---|---|
| uprn | string | Required. The UPRN, a 1-12 digit number. Leading zeros are not used. |
curl -H "Accept: application/json" https://uprns.io/uprn/100023336956 # -> 200 OK · UprnRecord
Returns a UprnRecord. Responds 404 with an Error body if the UPRN is unknown.
Returns a street record and the UPRNs that sit on it. The linked UPRN list is paginated.
| Name | Type | Description |
|---|---|---|
| usrn | string | Required. The Unique Street Reference Number. |
| page | integer | Optional. 1-based page of linked UPRNs. 50 per page. |
Returns a UsrnRecord.
Returns the administrative geography for a postcode and the UPRNs whose nearest postcode it is. The UPRN list is paginated.
| Name | Type | Description |
|---|---|---|
| postcode | string | Required. Case- and space-insensitive, e.g. sw1a2aa or SW1A 2AA. |
| page | integer | Optional. 1-based page of UPRNs. 50 per page. |
Returns a PostcodeRecord.
The full record for a UPRN. Human-readable names are returned alongside their ONS codes.
| Field | Type | Description |
|---|---|---|
| uprn | string | Unique Property Reference Number, 1-12 digits. Persistent; never reused. |
| longitude | number | null | ETRS89 longitude (OS Open UPRN). |
| latitude | number | null | ETRS89 latitude (OS Open UPRN). |
| eastings | integer | null | British National Grid easting (X), 1m resolution. |
| northings | integer | null | British National Grid northing (Y), 1m resolution. |
| postcode | string | null | Authoritative postcode for this UPRN (ONS UPRN Directory PCDS). Not a nearest-postcode approximation. |
| usrn | string | null | USRN of the street this property sits on (OS Open Linked Identifiers, highest-confidence link). |
| toid | string | null | TopographicArea TOID of the building footprint (OS Open Linked Identifiers). |
| road_link_toid | string | null | RoadLink TOID of the nearest road segment (OS Open Linked Identifiers). |
| town | string | null | Nearest populated place (OS Open Names) - the town or settlement this UPRN sits in. |
| best_fit | object | 2021 Census geographies assigned by ONS's population-weighted best-fit methodology (National Statistics UPRN Lookup). Use these to match official ONS statistical outputs; they may differ from the authoritative point-in-polygon values near boundaries. |
| country | string | null | UK constituent country (England, Scotland or Wales). |
| region | string | null | Region (formerly Government Office Region). England only. |
| admin_county | string | null | Administrative county. Null where the location falls outside a county-level authority. |
| admin_district | string | null | Local authority district or unitary authority. |
| admin_ward | string | null | Electoral / administrative ward. |
| parish | string | null | Civil parish (England) or community (Wales). |
| ced | string | null | County electoral division. England county areas only. |
| parliamentary_constituency | string | null | UK Parliamentary constituency, July 2024 boundaries. |
| senedd_constituency | string | null | Senedd Cymru (Welsh Parliament) constituency. Wales only, derived by spatial join. |
| senedd_constituency_no | integer | null | Senedd Cymru constituency number (1-16). Wales only. |
| lsoa | string | null | 2021 Census LSOA name. In Scotland this is the Data Zone. |
| msoa | string | null | 2021 Census MSOA name. In Scotland this is the Intermediate Zone. |
| oa | string | null | 2021 Census Output Area code - the smallest census geography. |
| lsoa11 | string | null | 2011 Census LSOA name. |
| msoa11 | string | null | 2011 Census MSOA name. |
| workplace_zone | string | null | 2011 Census Workplace Zone code. |
| output_area_classification | string | null | 2021 ONS Output Area Classification (supergroup/group/subgroup) name. |
| rural_urban | string | null | 2021 Rural-Urban Classification. |
| built_up_area | string | null | Built-up Area (2024). |
| ttwa | string | null | Travel to Work Area - where most people both live and work. |
| national_park | string | null | National Park this location falls within, if any. |
| index_of_multiple_deprivation | integer | null | IMD rank for this location's LSOA. Lower ranks are more deprived. Scales differ per country and are not comparable across them. |
| sub_icb | string | null | NHS Sub-ICB Location (formerly CCG). England only. |
| nhs_england_region | string | null | NHS England Region. England only. |
| nhs_ha | string | null | NHS health authority area (Health Board in Scotland/Wales). |
| primary_care_trust | string | null | Primary care organisation. Naming differs across UK regions. |
| cancer_alliance | string | null | Cancer Alliance. England only. |
| pfa | string | null | Police force area. |
| lep1 | string | null | Primary Local Enterprise Partnership (historic; LEPs wound down 2024). |
| lep2 | string | null | Secondary Local Enterprise Partnership, where overlapping. |
| european_electoral_region | string | null | European Electoral Region (historic). |
| nuts | string | null | ITL code (formerly NUTS). Retained under the `nuts` name for backward compatibility. |
| codes | object | Official GSS codes for the geographies named on the parent object. Pseudo codes (e.g. E99999999) denote 'not applicable'. |
| Field | Type | Description |
|---|---|---|
| usrn | string | Unique Street Reference Number. |
| name | string | null | Derived street name (OS Open Roads via OS Open Linked Identifiers). Null for unnamed streets. |
| street_type | string | null | OS Open USRN street type: Designated Street Name, Numbered Street, Unnamed Street, or Privately Maintained Street. |
| road_classification | string | null | OS Open Roads classification (A Road, B Road, Motorway, Unclassified, ...). Null where no road link is matched. |
| road_classification_number | string | null | Road number such as A38 or M32, where classified. |
| local_authority | string | null | Local authority district the street centroid falls within. |
| longitude | number | null | WGS84 longitude of the street centroid. |
| latitude | number | null | WGS84 latitude of the street centroid. |
| bbox | object | null | WGS84 bounding box of the street geometry. Null where no geometry is stored. |
| uprn_count | integer | Number of UPRNs linked to this USRN. |
| uprns | string[] | UPRNs linked to this USRN (OS Open Linked Identifiers). |
| Field | Type | Description |
|---|---|---|
| postcode | string | Postcode in canonical form. |
| longitude | number | null | WGS84 longitude of the postcode centroid. |
| latitude | number | null | WGS84 latitude of the postcode centroid. |
| eastings | integer | null | British National Grid easting of the centroid. |
| northings | integer | null | British National Grid northing of the centroid. |
| uprn_count | integer | Number of UPRNs assigned to this postcode. |
| uprns | string[] | UPRNs assigned to this postcode. Large postcodes are paginated by the page surface; the JSON record carries the full list. |
| country | string | null | UK constituent country (England, Scotland or Wales). |
| region | string | null | Region (formerly Government Office Region). England only. |
| admin_county | string | null | Administrative county. Null where the location falls outside a county-level authority. |
| admin_district | string | null | Local authority district or unitary authority. |
| admin_ward | string | null | Electoral / administrative ward. |
| parish | string | null | Civil parish (England) or community (Wales). |
| ced | string | null | County electoral division. England county areas only. |
| parliamentary_constituency | string | null | UK Parliamentary constituency, July 2024 boundaries. |
| senedd_constituency | string | null | Senedd Cymru (Welsh Parliament) constituency. Wales only, derived by spatial join. |
| senedd_constituency_no | integer | null | Senedd Cymru constituency number (1-16). Wales only. |
| lsoa | string | null | 2021 Census LSOA name. In Scotland this is the Data Zone. |
| msoa | string | null | 2021 Census MSOA name. In Scotland this is the Intermediate Zone. |
| oa | string | null | 2021 Census Output Area code - the smallest census geography. |
| lsoa11 | string | null | 2011 Census LSOA name. |
| msoa11 | string | null | 2011 Census MSOA name. |
| workplace_zone | string | null | 2011 Census Workplace Zone code. |
| output_area_classification | string | null | 2021 ONS Output Area Classification (supergroup/group/subgroup) name. |
| rural_urban | string | null | 2021 Rural-Urban Classification. |
| built_up_area | string | null | Built-up Area (2024). |
| ttwa | string | null | Travel to Work Area - where most people both live and work. |
| national_park | string | null | National Park this location falls within, if any. |
| index_of_multiple_deprivation | integer | null | IMD rank for this location's LSOA. Lower ranks are more deprived. Scales differ per country and are not comparable across them. |
| sub_icb | string | null | NHS Sub-ICB Location (formerly CCG). England only. |
| nhs_england_region | string | null | NHS England Region. England only. |
| nhs_ha | string | null | NHS health authority area (Health Board in Scotland/Wales). |
| primary_care_trust | string | null | Primary care organisation. Naming differs across UK regions. |
| cancer_alliance | string | null | Cancer Alliance. England only. |
| pfa | string | null | Police force area. |
| lep1 | string | null | Primary Local Enterprise Partnership (historic; LEPs wound down 2024). |
| lep2 | string | null | Secondary Local Enterprise Partnership, where overlapping. |
| european_electoral_region | string | null | European Electoral Region (historic). |
| nuts | string | null | ITL code (formerly NUTS). Retained under the `nuts` name for backward compatibility. |
| codes | object | Official GSS codes for the geographies named on the parent object. Pseudo codes (e.g. E99999999) denote 'not applicable'. |
All non-2xx responses share one shape.
| Field | Type | Description |
|---|---|---|
| status | integer | HTTP status code. |
| error | string | Human-readable error message. |
{ "code": 404, "message": "No UPRN found for 999999999999" }