Valuer Pack · Pay as you go
Property data API for valuers.
Comps, price history, floor area, EPC, and risk data: all from one API. Pre-populate RICS Red Book evidence packs, power AVM models, and eliminate manual data gathering. Typically 4 tokens to build a complete desktop appraisal, plus comparables arranged per customer.
Pay as you go: 100 tokens = £1. First top-up matched 100%.
What you get
What's in the Valuer Pack
Core Property + Market & Pricing modules. Everything a valuer needs to build AVM tools, desktop appraisals, and RICS Red Book evidence packs, without logging into multiple data portals.
Arranged per customer rather than sold self-serve.
Comparable sales
0.5mi radius, up to 200 comps sorted by bedroom match and proximity. Filter by type, date, and event. The evidence base for any RICS Red Book valuation.
GET /comparables/{uprn}/ Arranged per customer Price trends
Monthly median asking prices by outcode, 12-month rolling, with volatility score. Contextualise your valuation against local market direction.
GET /price_trends/{outcode}/ Property record
Bedrooms, property type, floor area (sqm), construction age band, tenure, council tax band, garden, and parking. The foundation of every AVM model and desktop appraisal.
GET /properties/{uprn}/ EPC rating
Current and potential energy efficiency score, floor area, inspection date, and asset rating. Direct from the EPC register: include in Red Book evidence packs without manual lookups.
GET /epc-checker/{uprn}/ Sold price history
Full Land Registry transaction history, 30 years. Sale prices, dates, and transaction type for the subject property: essential context for any formal valuation.
GET /properties/{uprn}/transactions/ Address lookup
Resolve any address to a UPRN in two steps: find returns suggestions, retrieve returns the canonical UPRN. The gateway to every other endpoint.
GET /address/find/ + /property/{uprn}/address/ Worked example
Build a desktop appraisal in 4 API calls
Address → UPRN → property record → comparables → price trends. Four calls, complete valuation evidence pack.
# Step 1: resolve address to UPRN (2 tokens) curl "https://api.homedata.co.uk/address/find/?q=42+Church+Road+Bristol" \ -H "Authorization: Api-Key YOUR_API_KEY" # Step 2: property record: floor area, type, bedrooms, age band (1 token) curl "https://api.homedata.co.uk/properties/100023456789/" \ -H "Authorization: Api-Key YOUR_API_KEY" # Step 3: comparable sales: up to 200 nearby sold prices (arranged per customer, not self-serve) curl "https://api.homedata.co.uk/comparables/100023456789/" \ -H "Authorization: Api-Key YOUR_API_KEY" # Step 4: price trends: outcode median and volatility score (1 token) curl "https://api.homedata.co.uk/price_trends/BS6/" \ -H "Authorization: Api-Key YOUR_API_KEY"
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://api.homedata.co.uk"
HEADERS = {"Authorization": f"Api-Key {API_KEY}"}
def build_desktop_appraisal(address: str) -> dict:
# Step 1: UPRN lookup (2 tokens)
r = requests.get(f"{BASE}/address/find/", params={"q": address}, headers=HEADERS)
suggestion = r.json()["suggestions"][0]
uprn = suggestion["uprn"]
outcode = suggestion["postcode"].split()[0] # e.g. "BS6"
# Steps 2-4: property data (sequential or parallel)
property_data = requests.get(f"{BASE}/properties/{uprn}/", headers=HEADERS).json()
# comparables: arranged per customer, not self-serve
comparables = requests.get(f"{BASE}/comparables/{uprn}/", headers=HEADERS).json()
price_trends = requests.get(f"{BASE}/price_trends/{outcode}/", headers=HEADERS).json()
return {
"uprn": uprn,
"subject_property": {
"type": property_data.get("property_type"),
"bedrooms": property_data.get("bedrooms"),
"floor_area_sqm": property_data.get("epc_floor_area"),
"construction_age": property_data.get("construction_age_band"),
"tenure": property_data.get("tenure"),
"council_tax_band": property_data.get("council_tax_band"),
},
"comparables_count": len(comparables.get("comparables", [])),
"outcode_median": price_trends.get("median_asking_price"),
"market_volatility": price_trends.get("volatility_score"),
}
appraisal = build_desktop_appraisal("42 Church Road Bristol")
print(f"Property: {appraisal['subject_property']['type']}, {appraisal['subject_property']['bedrooms']} bed")
print(f"Floor area: {appraisal['subject_property']['floor_area_sqm']} sqm")
print(f"Comps: {appraisal['comparables_count']} found")
print(f"Outcode median: £{appraisal['outcode_median']:,}")
const API_KEY = 'YOUR_API_KEY';
const BASE = 'https://api.homedata.co.uk';
const HEADERS = { 'Authorization': `Api-Key ${API_KEY}` };
async function buildDesktopAppraisal(address) {
// Step 1: resolve address to UPRN (2 tokens)
const findRes = await fetch(`${BASE}/address/find/?q=${encodeURIComponent(address)}`, { headers: HEADERS });
const findData = await findRes.json();
const { uprn, postcode } = findData.suggestions[0];
const outcode = postcode.split(' ')[0]; // e.g. "BS6"
// Steps 2-4: fetch in parallel
const [property, comparables, priceTrends] = await Promise.all([
fetch(`${BASE}/properties/${uprn}/`, { headers: HEADERS }).then(r => r.json()),
// comparables: arranged per customer, not self-serve
fetch(`${BASE}/comparables/${uprn}/`, { headers: HEADERS }).then(r => r.json()),
fetch(`${BASE}/price_trends/${outcode}/`, { headers: HEADERS }).then(r => r.json()),
]);
return {
uprn,
subjectProperty: {
type: property.property_type,
bedrooms: property.bedrooms,
floorAreaSqm: property.epc_floor_area,
constructionAge: property.construction_age_band,
tenure: property.tenure,
councilTaxBand: property.council_tax_band,
},
comparablesCount: comparables.comparables?.length ?? 0,
outcodeMedian: priceTrends.median_asking_price,
marketVolatility: priceTrends.volatility_score,
};
}
buildDesktopAppraisal('42 Church Road Bristol').then(appraisal => {
const p = appraisal.subjectProperty;
console.log(`Property: ${p.type}, ${p.bedrooms} bed, ${p.floorAreaSqm} sqm`);
console.log(`Comps: ${appraisal.comparablesCount} found`);
console.log(`Outcode median: £${appraisal.outcodeMedian?.toLocaleString()}`);
});
Pricing
Valuer Pack pricing
Transparent token weights: most property data endpoints cost 1 token, address find is 2, retrieve is 5. A typical AVM call = 2 tokens (property record + price trends), plus comparables arranged per customer. Know your costs before you write a line of code. Pay as you go with one-off top-ups of any amount from £20, or add tokens every month. A monthly subscription earns up to 75% bonus tokens: change the amount or stop any time.
Pay as you go
100 tokens = £1Every endpoint · First top-up matched 100%
- Address lookup (find 2 tokens, retrieve 5)
- Property records + EPC
- Build and test your integration
Monthly
£250 a month30,000 tokens a month
+20% bonus tokens · Every endpoint
- Same full endpoint access as every account
- Price distributions and growth
- Price trends + outcode median
- Sold price history (30 years)
- Agent market stats
Monthly
£500 a month67,500 tokens a month
+35% bonus tokens · Every endpoint
- Same full endpoint access as every account
- Environmental risk data
- Planning applications
- 67,500 tokens a month · unused tokens roll over
What property data does Homedata provide for valuers?
The Valuer Pack gives you price trends, floor area, EPC ratings, property record (type, age, bedrooms, construction), sold price history going back 30 years, and council tax band, plus comparable sales arranged per customer. All via a single REST API with transparent token-weighted pricing: most property data endpoints cost 1 token, address find costs 2, retrieve costs 5.
How much does the Valuer Pack cost?
The Valuer Pack is pay as you go: 100 tokens = £1, most calls 1 token. A typical AVM call uses 3 API calls: property record and price trends at 1 token each, plus comparables, which are arranged per customer rather than sold at a fixed weight. Your first top-up is matched 100%: enough to build, test and evaluate the data. No contracts, cancel anytime.
Can I build an AVM using this API?
Yes. The property record endpoint gives you floor area, construction age, property type, and bedrooms. Comparables, arranged per customer rather than sold self-serve, give you up to 200 nearby sold prices. The price trends endpoint gives you the outcode median. Together they give you the three pillars of any AVM model.
Does the API include sold price history?
Yes. Every property record includes sold prices from Land Registry going back 30 years. The dedicated transactions endpoint returns the full history (sale prices, dates, and transaction type) for any UPRN in England and Wales.
Related
Related resources
Comparables API
Full endpoint reference: radius search, bedroom matching, date and type filters.
Surveyor Package
EPC, flood risk, environmental hazards, and comps for RICS Level 2 and 3 reports.
Price Trends API
Outcode median asking prices, 12-month rolling trends, and market volatility scores.
Free Property Tools
Instant property lookups and EPC checker in your browser, no signup needed.
Other packs
Start building today.
Pay as you go, 100 tokens = £1, first top-up matched. Get your key and test with real data.