Property enrichment · UPRN · Provenance

From an address to a trusted property record

How property enrichment can turn fragmented UK property information into reusable, machine-readable intelligence for home-moving, PropTech, lending, CRM and portfolio workflows.

Property Deals Insight  ·  18 September 2026  ·  9 min read

Most property businesses do not have a shortage of data. They have a problem connecting it.

An address sits in a CRM. A slightly different version of the same address appears in a portal listing. An EPC record uses its own formatting. A council tax record sits somewhere else again, and the transaction history is held against yet another representation of the same building.

The result is familiar right across the market: repeated lookups, duplicate records, manual reconciliation, and systems that individually know a great deal about a property but struggle to share any of it reliably with each other.

Property enrichment is most valuable when it does more than add fields. It should establish a persistent property identity, attach structured, source-aware information to that identity, and make the result reusable across workflows.

That is the direction Property Deals Insight has been building towards: using the Unique Property Reference Number (UPRN) as a durable join key, reconciling property information from multiple sources, and exposing the result through APIs, feeds, reports and embedded workflows.

Six-stage diagram: an address from a CRM, portal or legacy file is matched to the correct property, resolved to a persistent UPRN, enriched with EPC, council tax, transaction and characteristic data, and returned as a structured, source-aware property record that can be reused across home-moving, PropTech, estate agency CRM, lending and portfolio workflows.

The pattern

Identify once, enrich many times

A UPRN does not by itself solve every property-data problem. What it gives you is a consistent identifier around which data from different systems can be organised.

01AddressWhatever the CRM, customer or legacy record actually holds
02MatchResolve it against the property universe, or return candidates
03UPRNEstablish a persistent property identifier
04EnrichAttach structured attributes with source context
05Property RecordCreate a structured, source-aware record
06ReuseShare through APIs, workflows, packs and analytics

Where it earns its place

Six workflows this changes

Onboarding and customer journeys

A customer enters an address once. The platform resolves it to the underlying property, attaches the UPRN and returns property type, bedrooms, floor area, council tax and EPC data.

Fewer repeated questions, less manual research, and consistent data capture at every later stage of the journey.

Platforms and SaaS products

Enrichment becomes an embedded data layer rather than a set of dataset integrations each platform builds and maintains itself.

The platform keeps its own customer experience and calls property resolution, enrichment and valuation behind the scenes.

CRM records and property history

Historic CRM records carry inconsistent address strings and incomplete attributes. Resolving them to UPRNs creates a stronger basis for de-duplication, segmentation, valuation activity and prospecting.

Lenders, valuers and decisioning

Property attributes, EPC information, comparables and transaction history enter an existing decision process against a consistent property key, instead of teams searching separate systems by hand.

Asset and portfolio intelligence

Once a portfolio is reconciled to property identifiers, the same asset set can be enriched and monitored across valuation, EPC, characteristics, market and planning signals without rebuilding the matching each time.

Energy and household services

Address-led enrichment surfaces the attributes that drive quoting and servicing — floor area, EPC rating and heating fuel — while keeping property identity consistent across the journey.

In practice

What this looks like through an API

The technical pattern is deliberately small. Resolve an address to a UPRN, enrich a UPRN you already hold, or do both in a single call.

EndpointInputReturns
POST /pdi-property-enrichment/core-by-addressaddress + postcodeUPRN, address fields, property, council tax, EPC
POST /address/uprn-lookup-by-addressaddress + postcodeUPRN and address fields only
POST /pdi-property-enrichment/coreUPRNproperty, council tax, EPC
POST /pdi-property-enrichment/baseUPRNproperty attributes only

Base URL https://dataapi.propertydealsinsight.com. Every response is documented in the PDI developer documentation.

POST /pdi-property-enrichment/core-by-address
{
  "address": "8 Wall Street, Blackpool",
  "postcode": "FY1 2EG"
}

One call resolves the address and returns the property behind it. The response leads with the match decision, then the attributes.

Response — MATCHED
{
  "match_status": "MATCHED",
  "match_confidence": "HIGH",
  "score": 1.0,
  "uprn": "100010837358",
  "matched_address": "8 Wall Street, Blackpool",
  "address_source": "ADDRESS_MASTER",

  "property_type": "Terraced",
  "bedrooms": 2,
  "total_floor_area": 53,
  "source": {
    "property_type": "price_paid",   // Land Registry
    "bedrooms": "Portal",            // listing data
    "total_floor_area": "EPC"      // survey-derived
  },
  "council_tax": {
    "band": "A",
    "authority": "Blackpool",
    "amount": 1675.48,
    "year": "2026"
  },
  "epc": {
    "rating": "C",
    "main_fuel": "mains gas (not community)",
    "fuel_category": "MAINS_GAS",
    "lodgement_date": "2026-02-12"
  }
}

A live production response, abridged. Full field reference in the developer documentation.

Two details in that payload matter more than the attribute count.

The first is source. Every core attribute says which dataset it came from, because a bedroom count from a portal listing and a floor area from a lodged EPC are not the same kind of fact and should not be treated as one. A consuming system can apply its own trust rules instead of inheriting ours.

The second is fuel_category. The raw certificate strings differ between England, Wales and Scotland — "mains gas (not community)" against "Gas: mains gas" — and both normalise to the same category. Normalisation like this is unglamorous and it is most of the work.

The interesting case is the one that does not match

Any matching service can return an answer when the address is clean. The design decision that actually matters is what happens when it is not — and the wrong answer is to quietly pick the most likely candidate and return it as a fact.

Where more than one property qualifies, the PDI API returns the qualifying properties rather than selecting one. Your application resolves the ambiguity with the customer, who knows which flat they live in, instead of handling a confident-sounding guess.

Response — MULTIPLE_MATCHES
{
  "match_status": "MULTIPLE_MATCHES",
  "uprn": null,
  "matched_address": null,
  "reason_code": "MULTIPLE_CANDIDATES",
  "matches": [
    {
      "address": "Unit G11, Screenworks,
                  22 Highbury Grove, London",
      "score": 0.8785
    },
    {
      "address": "Unit G01, Screenworks,
                  22 Highbury Grove, London",
      "score": 0.8785
    }
  ],
  // 25 candidates returned in total
  "property_type": null,
  "council_tax": null,
  "epc": null
}
Response — NO_MATCH
{
  "match_status": "NO_MATCH",
  "uprn": null,
  "reason_code":
     "NO_CANDIDATE_PASSED_VERIFICATION",
  "matches": []
}

// A no-match is a 200, not an error.
// Branch on match_status, never on
// the HTTP code.

// Nothing is filled in for a property
// we could not identify — a confident
// looking record for a property we
// never found is worse than an
// empty one.

Three outcomes, explicitly named, is a small piece of API design that removes a large class of downstream defect. MATCHED, MULTIPLE_MATCHES and NO_MATCH are the only thing a calling system needs to branch on, and each one has a defined recovery path.

Measured, not asserted

What the matching actually achieves

Coverage claims are easy to make and rarely measured. We tested PDI’s live production API on 24,401 addresses drawn from five public datasets, sent exactly as a customer would send them and spread across five area types, from major cities to remote rural areas. No client data was involved. Rates are rounded to the nearest whole per cent.

What the address isMatch rate
Home addresses typed on EPC certificates99%
Council tax register entries89%
Companies House registered offices66–79%
Land Registry titles held by companies69–72%
Planning application sites56–60%
All five sources78%

Two runs on the same production release; where they differ, both are shown.

A lower match rate can be the right answer. Home addresses resolve almost completely, even when they have been typed by hand. Planning sites are a different thing: an application for “land to the rear of No. 4” describes a piece of land, not a property, and it has no UPRN of its own. Refusing to return one is correct; returning the nearest house would be wrong, and it would look like a perfectly good answer.

A match has to name the property that was asked for. Across nearly 19,000 matches, every flagged result was checked by hand, and none returned a different building.

By area typeMatch rate
Major urban86%
Other urban83%
Rural, accessible74%
Rural, remote72%
Small town71%
By country
England79%
Wales79%
Scotland73%

Rural sets match less often than urban ones. Our reading is that this is mostly the input mix — rural samples contain far more planning sites and land titles — but that is an inference rather than something the test isolates.

Scotland is lower than England, and part of the reason is how Scottish addresses are written. Flats are recorded by floor and position, and the registers disagree on the separator: FLAT 2-1 1083 TOLLCROSS ROAD GLASGOW in one source is Flat 2/1, 1083 Tollcross Road in another. Every one of these cases in the test was matched correctly, where a plain string comparison would have missed them all. We would rather publish the gap that remains than average it away.

Speed matters as much as rate in an onboarding flow: a lookup typically takes a little over 100 ms per address, and under a second and a half at the 95th percentile.

Fill rate when matchedShare
Property type95%
EPC rating91%
Floor area91%
Council tax band88%
Bedrooms87%
Council tax amount86%

A small share of any production address file is rejected before matching because the postcode field does not contain a postcode. Those are excluded from the rates above.

Two things are worth drawing out. Fill rates are field-specific, which is why an API has to handle nulls honestly rather than substituting a plausible default. And council tax amount — the annual charge, not just the band — is returned for around 86% of matched properties. Holding the charge means holding a rate for every band in every billing authority for the current charging year, which is a materially harder thing to maintain than the band alone.

Have an address file you need to resolve or enrich? PDI supports real-time API, bulk matching and bespoke data-feed workflows. See the API or talk to us about a bulk run.

The real issue

Provenance, not coverage

It is tempting to judge a property-data service by how many fields it returns. In an enterprise workflow, that is not close to enough.

A consumer of property data increasingly needs to answer:

  • Which property does this datapoint actually belong to?
  • Which source did the value come from?
  • When was it captured or last refreshed?
  • Is it observed, derived, or estimated?
  • What happens when two sources disagree?
  • Can the receiving organisation rely on it, and reuse it, in its own workflow?

None of those are answered by a larger field count. They are answered by identity, source and context travelling with the data — which is why per-field source attribution is in the response rather than in a PDF somewhere.

The wider picture

How this fits the Smart Property Data vision

The Open Property Data Association and the wider Smart Property Data programme are working towards a market where property information is structured, trusted, portable and reused between participants rather than repeatedly re-keyed. Several of the practical building blocks behind that vision are also problems property enrichment has to solve today.

01

A consistent property identifier

The UPRN as a common join key gives different systems a fighting chance of referring to the same physical property, even where the display address differs.

02

Machine-readable information

Structured responses let CRMs, lender systems, home-moving platforms and digital property-pack workflows consume property information directly, instead of it being trapped in documents or copied by hand.

03

Provenance and trust

Source attribution and metadata matter as soon as a receiving party has to decide whether a value is good enough for its own decision, or whether it needs independent verification.

04

Reuse across the transaction

The prize is not fetching the same data faster. It is a properly sourced property attribute being reused by multiple authorised participants rather than rediscovered from scratch by each of them.

05

Interoperability by design

Shared schemas and common technical approaches reduce the number of bespoke point-to-point integrations the industry has to build — which is what has to happen if property information is to move cleanly between agents, conveyancers, lenders, valuers and software providers.

Implementation

What we keep running into

There is a large difference between demonstrating property data on a screen and making it dependable inside someone else’s production workflow. The same six issues come up every time.

Six things that decide whether it works in production

  1. Address variation. Flats, building names, abbreviations, locality differences and historic formatting all move the match. The single most common near-miss is a unit or flat designator that your text has and ours does not.
  2. Ambiguity needs a name. A system needs explicit outcomes for a confident match, several possible matches and no verified match — and a defined recovery path for each.
  3. Coverage is field-specific. Not every property has every attribute. An API has to return nulls honestly rather than filling gaps with something plausible.
  4. Freshness differs by dataset. Some sources move slowly; others need frequent refresh or event-driven updates. Treating them all the same is how stale data gets presented as current.
  5. Source is part of the value. A bedroom count, floor area or property type can come from different datasets and should never be handed over context-free.
  6. Integration has to be composable. Some customers want only a UPRN. Others want a light enrichment response, a deeper property record, a valuation, a report, or a bulk feed. One monolithic endpoint serves none of them well.

These are not edge cases. They are the details that decide whether property data is useful information or dependable infrastructure.

Common questions

Questions we get asked

What is a UPRN, and why use it as the join key?

The Unique Property Reference Number is a persistent identifier for an addressable location. It provides a much more stable basis for linking records than the address string itself, which can be written differently across systems and can change over time. That makes the UPRN particularly useful for de-duplication, enrichment and data exchange.

What happens when an address matches more than one property?

The API returns MULTIPLE_MATCHES with the qualifying properties in a matches array, each with its own score. No UPRN and no attributes are returned, because none have been established yet. Your application presents the candidates, the customer picks one, and you resubmit that address as an ordinary request.

How do you know which source a value came from?

Every core attribute has a matching entry in the source object on the response. price_paid is Land Registry, EPC is survey-derived from a lodged certificate, and Portal is listing data and the softest of the three. It is returned so you can apply your own trust rules rather than inherit ours.

Does this cover Scotland?

Yes. Scottish addresses return council tax and EPC from Scottish sources, and the request and response shapes are identical. Match rates are lower than in England — around 73% against around 79% in our independent test above — partly because Scottish addresses and certificate sources are structured differently. We would rather publish that gap than average it away.

Is a no-match an error?

No. A no-match is an HTTP 200 with match_status: NO_MATCH and a reason_code explaining why. Calling systems should branch on match_status, never on the HTTP status code.

Can existing records be resolved in bulk?

Yes — that is what /address/uprn-lookup-by-address exists for. It runs the same matching without the enrichment, so a back catalogue of CRM or portfolio records can be resolved to UPRNs first, and only the records you actually need get enriched afterwards.

Where this goes

Not another property database

The UK property market is moving towards earlier availability of structured information, stronger property identity, reusable data and more connected digital workflows.

For PDI, enrichment is one part of that architecture. The same reconciled property foundation supports property packs, valuations, portfolio intelligence, CRM workflows, prospecting, market analysis and embedded third-party products.

The opportunity is not to build another isolated property database. It is to make property intelligence easy for other systems to identify, consume, understand and reuse — which is why PDI participates in the Open Property Data Association ecosystem and keeps developing UPRN-led APIs with interoperability, source transparency and real implementation in mind.

Building a property-data workflow?

If you are working on a PropTech platform, CRM, lender workflow, home-moving journey, portfolio product or digital property-information service, we can provide property resolution, enrichment, APIs, feeds and bespoke data delivery.

Talk to our data team

Discuss a data requirement

Matching addresses to UPRN, enriching a portfolio or loan book, or building property data into a product? Tell us what you are working with and we will come back on fit and the right delivery route.

  • Single lookups by API or bulk reconciliation of whole files
  • Matched UPRNs with valuation, EPC, council tax and flood data
  • API, scheduled feeds or licensed datasets

Further reading

Match rates cited above are rounded and were measured by PDI on its production API using addresses from five public datasets, with no client data; fill rates are rounded and come from recent production use. Both describe those address populations. They are not a guarantee of performance on a different address file. API responses shown are live production responses, abridged for length. Property Deals Insight is a member of the Open Property Data Association; nothing here claims certification or compliance under the Smart Property Data Trust Framework.