Get started

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.

Every data module in a OneVal response carries its own source block and a clearance state. Cleared modules display; some context is aggregated to postcode level; the energy and council-tax modules are held while their licence and terms positions are settled — they return 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.

Get started

Authentication

Every call needs an API key, passed as an X-API-Key header — not a bearer token, and never in the query string.


      
Keep keys server-side. A key is resolved by its hash — the raw key is never stored. Rotation and revocation take effect within a short cache window. This page keeps the key you enter in memory only; it is never written to browser storage.

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.

Get started

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.

StatusDetailWhat to do
429Rate limit exceeded (N per minute).Back off and retry after the Retry-After header (seconds).
429Monthly allowance exceeded (used/quota).Upgrade your package or wait for the monthly reset. No Retry-After header.
Every successful (2xx) call counts toward your allowance, including honest misses (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.
Endpoints

Property record

Resolve a single property from a house/flat number and postcode, and return its full attributed record.

GET/v1/lookup

Parameters

NameInRequiredDescription
numberqueryyesHouse or flat number/name (e.g. 86, Flat 9)
postcodequeryyesFull UK postcode
X-API-KeyheaderyesYour API key


      
PlaygroundGET /v1/lookup
Kept in memory only — never stored. No key? Contact us for access.
Endpoints

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.

GET/v1/estimate

Parameters

NameInRequiredDescription
numberqueryyesHouse or flat number/name (e.g. 86, Flat 9)
postcodequeryyesFull UK postcode
X-API-KeyheaderyesYour API key


      
This endpoint returns a guide price, not a valuation. It's transparent arithmetic — last sale × HPI movement — with every input sourced. Present it to end users as an estimate.
PlaygroundGET /v1/estimate
Kept in memory only — never stored. No key? Contact us for access.
Endpoints

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.

GET/v1/market/rent

Parameters

NameInRequiredDescription
postcodequeryone ofFull UK postcode — resolved to its local authority, never a premise
area_codequeryone ofLocal-authority area code (e.g. W06000015) — skips postcode resolution
category_kindquerynoproperty_type (default) or bedroom
categoryquerynoSeries value (default all) — e.g. terraced, flat; or one, two for bedrooms
monthquerynoYYYY-MM — pins the reading; latest month otherwise
X-API-KeyheaderyesYour API key


      
Area-level ONS statistic. The rent index and average rent describe the whole local authority for the chosen category — never a per-property figure, and never a valuation. There is deliberately no house-number field on this form. Coverage: England & Wales, Jan 2015 onwards.
PlaygroundGET /v1/market/rent
Kept in memory only — never stored. No key? Contact us for access.
property_type: all · detached · semi-detached · terraced · flat — bedroom: one · two · three · four-plus
Reference

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.

StatusDetailMeaning
401Missing X-API-Key headerNo key was sent. Pass it as an X-API-Key header.
401Invalid or inactive API keyThe key is unknown or has been deactivated.
422[…] (list)Missing number or postcode query parameter.
429Rate limit exceeded (N per minute).Per-minute limit hit — retry after Retry-After seconds.
429Monthly allowance exceeded (used/quota).The key's monthly allowance is used up.
503Service warming…Property stores are still being restored after a deploy — retry shortly (a Retry-After header is set). Never billed.
503Estimate 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.