Data catalogue/ Prices & transactions/ Price distributions
Price distributions
How prices spread across any UK outcode, split into 5 price bands showing where listings concentrate. Not just a median: see the full spread from entry-level to premium in a single API call.
{
"outcode": "BS8",
"total_count": 71,
"bin_width": 15000000,
"bins": [
{
"bin_min": 20000000,
"bin_max": 35000000,
"count": 4,
"percentage": 5.6
},
{
"bin_min": 35000000,
"bin_max": 50000000,
"count": 18,
"percentage": 25.4
},
{
"bin_min": 50000000,
"bin_max": 65000000,
"count": 29,
"percentage": 40.8
},
{
"bin_min": 65000000,
"bin_max": 80000000,
"count": 14,
"percentage": 19.7
},
{
"bin_min": 80000000,
"bin_max": null,
"count": 6,
"percentage": 8.5
}
]
}Area price distribution
5 equal-width bins, from the cheapest to the most expensive listings in the outcode. Instantly see whether an area is entry-level, mid-market, or premium, and where the volume sits.
Response fields
Fields returned from GET /price_distributions/{outcode}/ , including the bins array.
Price distributions tell you the shape of a market today. Pair with price_trends to see whether that shape is shifting, useful for spotting gentrification or cooling markets.
| Field | Type | What it is |
|---|---|---|
| outcode | string | The UK outcode queried, all listings in this area are included |
| total_count | integer | Total number of active listings that contributed to the distribution |
| bin_width | integer | Width of each price band in pence, equal across all 5 bins |
| bins | array | Array of 5 bin objects, see sub-fields below |
| bins[].bin_min | integer | Lower bound of this price band, in pence (inclusive) |
| bins[].bin_max | integer | Upper bound of this price band, in pence (exclusive, except last bin) |
| bins[].count | integer | Number of active listings in this price band |
| bins[].percentage | float | Percentage of total listings that fall within this band |
Combine with price_trends
API example
- GET /price_distributions/{outcode}/ cURL
- Response 200 OK
curl "https://api.homedata.co.uk/price_distributions/BS8/" \ -H "Authorization: Api-Key YOUR_KEY"
import requests
resp = requests.get(
"https://api.homedata.co.uk/price_distributions/BS8/",
headers={"Authorization": "Api-Key YOUR_KEY"},
)
data = resp.json()
for bin in data["bins"]:
low = bin["bin_min"] // 100
high = bin["bin_max"] // 100
print(f"£{low:,}–£{high:,}: {bin['percentage']}%")
const res = await fetch(
"https://api.homedata.co.uk/price_distributions/BS8/",
{ headers: { "Authorization": "Api-Key YOUR_KEY" } }
);
const data = await res.json();
data.bins.forEach(bin => {
const low = bin.bin_min / 100;
const high = bin.bin_max / 100;
console.log(`£${low.toLocaleString()}–£${high.toLocaleString()}: ${bin.percentage}%`);
});
More in Prices & transactions
Start building today.
Pay as you go, 100 tokens = £1, first top-up matched. Get your key and test with real data.