Every UK address has a postcode. But postcodes are shared between multiple properties, sometimes covering an entire street or building. If you’re building anything that needs to identify a specific property—whether it’s a property risk platform, delivery system, or planning tracker—you need something more precise: a UPRN.

The challenge is that most UPRN APIs either cost money, require licensing agreements, or provide minimal data with no useful context. In this guide, you’ll learn exactly what a UPRN is, how to look it up for free, and how to enrich it with the data your application actually needs.

What is a UPRN?

UPRN stands for Unique Property Reference Number. It is issued by Ordnance Survey and represents a persistent 12-digit identifier assigned to every addressable location in Great Britain.

Unlike postcodes, which are shared across multiple properties, a UPRN is unique to a single building or location. Even if a postcode changes or a building is renumbered, the UPRN remains the same.

As of April 2024, there are over 42 million UPRNs available in the OS Open UPRN dataset. These cover residential properties, commercial buildings, land parcels, and infrastructure.

There are also related identifiers you may encounter:

  • UDPRN: Issued by Royal Mail, used for delivery points (not freely available)
  • USRN: Identifies streets rather than properties
  • TOID: Represents topographic features in OS datasets

Quick reference

IdentifierIssued byWhat it referencesFreely available
UPRNOrdnance SurveySingle addressable propertyYes
UDPRNRoyal MailPAF delivery pointNo
USRNOSStreetYes
TOIDOSTopographic featurePartial

Why UPRNs matter for developers

UPRNs are essential if you’re building applications that depend on accurate property-level data.

Property risk

Insurance platforms and PropTech tools rely on precise location data. A postcode might cover 10–20 homes, but flood risk can vary significantly between properties. UPRNs act as the join key between an address and datasets like flood risk.

Delivery and logistics

Address inconsistencies are common (“Flat 1, 14 High Street” vs “14A High Street Flat 1”). These variations resolve to the same UPRN. Using UPRNs eliminates duplication and reduces failed deliveries.

Planning and compliance

Planning applications, EPC records, and listed building data are all linked to UPRNs. For GovTech or property platforms, UPRNs serve as the backbone of data integration.

How to look up a UPRN for free

There are three main ways to access UPRN data, depending on your use case.

Method 1: OS Open UPRN bulk dataset

This is the official dataset from Ordnance Survey.

  • Source: OS Open UPRN (updated quarterly)
  • Licence: Open Government Licence v3 (free with attribution)
  • Format: CSV
  • Size: ~6GB uncompressed

It contains:

  • UPRN
  • Coordinates (X/Y, latitude, longitude)

Example:

curl -O https://api.os.uk/downloads/v1/products/OpenUPRN/downloads?area=GB&format=CSV&redirect

head -5 osopenuprn_202404.csv

Use Case: High-scale systems with their own database
Limitation: No address, postcode, or enrichment

Method 2: Postcodes.io

A simple and free API for postcode data.

Example (Node.js):

const res = await fetch('https://api.postcodes.io/postcodes/SW1A2AA');
const data = await res.json();

console.log(data.result.latitude, data.result.longitude);

Use case: Prototyping and basic geo lookups
Limitation:

  • Does NOT return UPRN
  • No enrichment
  • Postcode-level only

Method 3: APITier Address API (recommended)

This method provides the most complete dataset in a single call.

https://www.apitier.com
https://docs.apitier.com

Returns:

  • UPRN
  • Full address
  • Postcode
  • LSOA, LAD
  • Flood risk
  • Deprivation index

Free tier: 500 requests/month

Python example:

import requests

API_KEY = "your_api_key_here"
postcode = "SW1A 2AA"

response = requests.get(
  f"https://postcode.apitier.com/v1/postcodes/{postcode}",
  params={"x-api-key": API_KEY}
)

data = response.json()

for addr in data.get("addresses", []):

  print(addr["uprn"], addr["formatted_address"])



Node.js example:

const axios = require('axios');

const API_KEY = 'your_api_key_here';
const postcode = 'SW1A 2AA';

axios.get(`https://postcode.apitier.com/v1/postcodes/${postcode}`, {
  params: { 'x-api-key': API_KEY }

}).then(res => console.log(res.data));

cURL:

curl "https://postcode.apitier.com/v1/postcodes/SW1A2AA?x-api-key=your_api_key_here"

Use case: Real-world applications needing enriched data

Reverse UPRN lookup (UPRN → address)

Sometimes you already have a UPRN and need the address.

uprn = "100023336956"

response = requests.get(
  f"https://postcode.apitier.com/v1/udprn/{uprn}",
  params={"x-api-key": API_KEY}
)


print(response.json())

OS dataset only gives coordinates
APIs are required for full address resolution

UPRN in production: key considerations

1. Leading zeros

Always store UPRNs as 12-digit strings:

uprn = str(uprn).zfill(12)

2. UPRN vs UDPRN

These are different identifiers. They cannot be used interchangeably.

3. Deleted UPRNs

Some UPRNs become inactive. Handle missing data gracefully.

4. Multiple UPRNs per property

A building may split into multiple units, each with its own UPRN.

What data can you enrich with UPRN?

Once you have a UPRN, it becomes a powerful join key.

DatasetWhat it adds
Flood RiskFlood Risk band
IMDDeprivation score
ONSPDArea codes
Land RegistrySale data
EPCEnergy rating

This is where UPRNs become truly valuable.

Frequently asked questions

Is OS Open UPRN free for commercial use?

Yes. It is available under the Open Government Licence v3 with attribution.

How often is it updated?

Quarterly (January, April, July, October).

Does it include Northern Ireland?

No. It covers England, Scotland, and Wales only.

Is UPRN personal data?

No. UPRNs identify properties, not people.

Conclusion

UPRNs are one of the most powerful yet underused identifiers in UK property data. They allow you to connect multiple datasets—flood risk, deprivation, planning, and more—at the property level.

Getting a UPRN is free. The real value comes from enriching it with additional datasets.

The APITier address API provides UPRN, address details, flood risk, and deprivation data in a single call—making it easier to build accurate and scalable applications.

👉 Try the free tier → https://docs.apitier.com/