One call. The whole record.
Send a house/flat number and a UK postcode. Get back a fully-attributed property record — the displayed address, location intelligence, sold-price history since 1995, flood risk, heritage designations and identifiers — where every module names the open source it came from.
Self-hosted, and built entirely on openly licensed government data.
Self-serve from £5/month — see pricing.
available: false with a reason, never a fabricated value. The response shape is stable, so you can code against the final structure today.Try it
Open Property record in the sidebar, paste your API key, and make a live call. You'll see the property record two ways: a rendered Record and the raw JSON. The Guide price endpoint returns an indexed estimate for the same number + postcode.
Base URL
/v1
All calls are plain HTTPS GETs authenticated with an X-API-Key header.
Attribution
Attribution is a licence condition, not decoration. Every response returns an attribution array with the exact statements to display for the modules it used. The core statements:
- Contains OS data © Crown copyright and database right 2026
- Contains HM Land Registry data © Crown copyright and database right 2026 (OGL v3.0)
- Source: Office for National Statistics licensed under the Open Government Licence v3.0
- Contains Royal Mail data © Royal Mail copyright and database right 2026
Flood, designation and other modules each return their own source and attribution alongside the value.
Authentication
Every call needs an API key, passed as an X-API-Key header — not a bearer token, and never in the query string.
Missing or bad key
A call without the header returns 401 with {"detail": "Missing X-API-Key header"}; an unknown or deactivated key returns 401 with {"detail": "Invalid or inactive API key"}. Try it in the playground by running with the key field blank.
Rate limits
Two independent limits protect the service. Your package sets a monthly call allowance; a per-minute rate limit smooths spikes. Both surface as 429, distinguished by the message.
| Status | Detail | What to do |
|---|---|---|
429 | Rate limit exceeded (N per minute). | Back off and retry after the Retry-After header (seconds). |
429 | Monthly allowance exceeded (used/quota). | Upgrade your package or wait for the monthly reset. No Retry-After header. |
found: false) — they still resolve address and location content. Non-2xx calls are never counted. Metering records call counts only; query content is never logged.Property record
Resolve a single property from a house/flat number and postcode, and return its full attributed record.
Parameters
| Name | In | Required | Description |
|---|---|---|---|
number | query | yes | House or flat number/name (e.g. 86, Flat 9) |
postcode | query | yes | Full UK postcode |
X-API-Key | header | yes | Your API key |
Guide price estimate
Send a house/flat number and a UK postcode. Get back an indexed guide price — the property's last recorded sale moved by the UK House Price Index for its local authority and property type.
Transparent arithmetic on named facts — deliberately not an automated valuation model.
Parameters
| Name | In | Required | Description |
|---|---|---|---|
number | query | yes | House or flat number/name (e.g. 86, Flat 9) |
postcode | query | yes | Full UK postcode |
X-API-Key | header | yes | Your API key |
Average rent
Send a UK postcode or a local-authority area code. Get back the average monthly rent and rent index for that area, from the ONS Price Index of Private Rents.
An area-level ONS statistic — it describes the local authority, never an individual property. No house or flat number is accepted.
Parameters
| Name | In | Required | Description |
|---|---|---|---|
postcode | query | one of | Full UK postcode — resolved to its local authority, never a premise |
area_code | query | one of | Local-authority area code (e.g. W06000015) — skips postcode resolution |
category_kind | query | no | property_type (default) or bedroom |
category | query | no | Series value (default all) — e.g. terraced, flat; or one, two for bedrooms |
month | query | no | YYYY-MM — pins the reading; latest month otherwise |
X-API-Key | header | yes | Your API key |
Errors & status codes
Errors return a JSON body with a detail field — a string, or (for validation errors) a list of what was missing or malformed.
| Status | Detail | Meaning |
|---|---|---|
| 401 | Missing X-API-Key header | No key was sent. Pass it as an X-API-Key header. |
| 401 | Invalid or inactive API key | The key is unknown or has been deactivated. |
| 422 | […] (list) | Missing number or postcode query parameter. |
| 429 | Rate limit exceeded (N per minute). | Per-minute limit hit — retry after Retry-After seconds. |
| 429 | Monthly allowance exceeded (used/quota). | The key's monthly allowance is used up. |
| 503 | Service warming… | Property stores are still being restored after a deploy — retry shortly (a Retry-After header is set). Never billed. |
| 503 | Estimate temporarily unavailable… | Market data is restoring after a deploy — the core record is unaffected; retry the guide price shortly. (/v1/estimate only; header X-Error-Code: estimate_unavailable.) |
A postcode that isn't a valid UK format, or a query nothing resolves for, is not an error: the API returns 200 with valid_format: false or found: false — an honest miss, never a fabricated address.