Any UK Address to UPRN and Full Property Data — in One Call
Instant UK address autocomplete and postcode search. 36.6 million addresses powered by Elasticsearch — sub-50ms typeahead that works in form fields, checkout flows, and property search UIs. Every result returns a UPRN for downstream enrichment. Address find and postcode cost 2 calls each, retrieve costs 5 calls — transparent call weights that reflect real licensing costs.
Address find and postcode lookup cost 2 calls each. Retrieve costs 5 calls (Royal Mail PAF licensing). A typical find-then-retrieve workflow costs 7 calls. See call weights →
Two endpoints. One goal.
Use find for typeahead autocomplete (user types, suggestions appear). Use postcode to list all addresses at a postcode (user selects from a dropdown). Both cost 2 calls each — reflecting search licensing costs.
GET /api/address/find/ — autocomplete
curl -G "https://api.homedata.co.uk/api/address/find/" \ --data-urlencode "q=10 Downing Street"
{
"suggestions": [
{
"uprn": 100023336956,
"address": "10 DOWNING STREET, LONDON, SW1A 2AA",
"postcode": "SW1A 2AA",
"town": "LONDON"
}
],
"count": 1
}
GET /api/address/postcode/{postcode}/ — postcode lookup
curl "https://api.homedata.co.uk/api/address/postcode/SW1A2AA/"
{
"postcode": "SW1A 2AA",
"count": 7,
"addresses": [
{
"uprn": 100023336956,
"address": "10 DOWNING STREET, LONDON",
"building_number": "10",
"street": "DOWNING STREET",
"town": "LONDON"
}
]
}
How address billing works
We follow the same model as Loqate and Stripe: search is lightweight, retrieve is where the value is. Address find costs 2 calls and doesn't require authentication — your autocomplete works before users even sign up. When the user selects an address and you call retrieve to get the enriched property data, that costs 5 calls — reflecting the Royal Mail PAF and OS licensing behind every response.
The UPRN returned in every search result is the key that unlocks everything else: EPC rating, floor area, flood risk, solar potential, price history, and 40+ more data points. All of those are billed retrieve calls.
This is the same model as Stripe (publishable key for checkout, secret key for charges) or Mapbox (free tiles, paid geocoding). Start free. Pay when you need data.
Who uses address lookup
Address autocomplete is the front door — the first API call in every integration.
📝 Checkout & registration forms
Replace manual address entry with typeahead autocomplete. User types "10 Down…" and selects their full address from a dropdown. Reduce form abandonment, eliminate typos, and get a verified UPRN for every submission.
🏠 Property search portals
Build a "search by address" bar with instant results. Each suggestion includes the UPRN — use it to pull property details, photos, pricing, and risk data from the retrieve and enrichment endpoints.
📬 Postcode dropdown selectors
Classic "enter postcode, pick your address" pattern. The postcode endpoint returns all addresses at a postcode with building name, number, and street — ready for a <select> dropdown without any data transformation.
🔧 Data enrichment pipelines
Resolve address strings to UPRNs in batch. Take a CSV of addresses, run each through /find/, capture the UPRN, then enrich via /retrieve/ with property type, EPC, floor area, and sold prices. No manual matching.
How we compare
Address lookup is just the starting point. What happens after the user selects an address is where we're different.
- ✓ Address search
- ✓ Postcode lookup
- ✗ No UPRN
- ✗ No property data
- ✗ No EPC / price / risk
- ✓ Address search (2 calls)
- ✓ Postcode lookup (2 calls)
- ✓ UPRN on every result
- ✓ 40+ property fields via retrieve
- ✓ EPC, risk, solar, sold prices
- ✓ Address search
- ✓ UPRN
- ✓ Geocoding
- ✗ No property data
- ✗ £5k+/year licence
Practical patterns
Common integration patterns — all start with a lightweight address search (2 calls).
Debounced typeahead in JavaScript
Standard pattern for a form input with autocomplete suggestions. Debounce at 200ms to avoid hammering the API on every keystroke.
let timer;
document.getElementById('address-input').addEventListener('input', (e) => {
clearTimeout(timer);
timer = setTimeout(async () => {
if (e.target.value.length < 2) return;
const res = await fetch(
`https://api.homedata.co.uk/api/address/find/?q=${encodeURIComponent(e.target.value)}`
);
const { suggestions } = await res.json();
// Render suggestions as dropdown items
// On select: store suggestion.uprn for enrichment
}, 200);
});
Address → EPC → flood risk in three calls
Complete property intelligence from a single address search. All three calls take under 500ms combined.
# 1. Find address (2 calls) curl -G "https://api.homedata.co.uk/api/address/find/" --data-urlencode "q=10 Downing Street" # → uprn: 100023336956 # 2. Get EPC (API key required) curl "https://api.homedata.co.uk/api/epc-checker/100023336956/" \ -H "Authorization: Api-Key YOUR_API_KEY" # 3. Get flood risk (API key required) curl -G "https://api.homedata.co.uk/api/risks/flood/" \ --data-urlencode "uprn=100023336956" \ -H "Authorization: Api-Key YOUR_API_KEY"
Or just embed it
Don't want to build the autocomplete UI yourself? Use our pre-built address widget — one script tag, zero dependencies, works on any website. Configurable field mapping, custom styling, and callbacks for form integration.
Start with a free API call
Address search needs no API key. Try it right now in your terminal. When you need property data, sign up for a free key — 100 enrichment requests/month, no credit card.
curl "https://api.homedata.co.uk/api/address/find/?q=10+Downing+Street"