Live UK Property Listings via REST — Updated Daily from Major Portals
Search current UK property listings — updated daily, backed by 30 years of Home.co.uk data collection. Filter by boundary, price range, bedrooms, and transaction type. Paginated results with instant Elasticsearch performance — typically under 50ms.
Free tier: 100 requests/month. No credit card required.
Search listings instantly
One endpoint — filter by boundary, transaction type, price, bedrooms, and sort by date or price. Paginated with up to 200 results per page.
curl -G "https://api.homedata.co.uk/api/live-listings/search/" \ --data-urlencode "transaction_type=Sale" \ --data-urlencode "bedrooms=3" \ --data-urlencode "max_price=400000" \ --data-urlencode "page=1" \ -H "Authorization: Api-Key YOUR_API_KEY"
{
"count": 1547,
"page": 1,
"page_size": 200,
"total_pages": 8,
"results": [
{
"id": "a3f2e1d4-...",
"listing_id": "R152849384",
"property_uprn": 100022612238,
"display_address": "High Street, Norwich NR1",
"latest_price": 350000,
"bedrooms": 3,
"bathrooms": 2,
"transaction_type": "Sale",
"latest_status": "For Sale",
"added_date": "2025-02-14T10:30:00Z",
"source": "Home.co.uk",
"listing_property_type": "Terraced"
}
// ... more listings
]
}
Query parameters
All parameters are optional. Combine them to narrow your search.
| Parameter | Type | Default | Description |
|---|---|---|---|
| boundary_id | integer | — | Filter by geographic boundary ID. Use the boundaries endpoint to find IDs. |
| transaction_type | string | — | Sale or Rental |
| bedrooms | integer | — | Exact number of bedrooms |
| min_price | integer | — | Minimum price in GBP |
| max_price | integer | — | Maximum price in GBP |
| page | integer | 1 | Page number for pagination |
| page_size | integer | 200 | Results per page. Max 200. |
| sort | string | -added_date | added_date, -added_date, latest_price, -latest_price. Prefix - for descending. |
Response fields
Each listing includes the core data points you need for property intelligence.
Pagination
| Field | Type | Description |
|---|---|---|
| count | integer | Total matching listings |
| page | integer | Current page number |
| page_size | integer | Results per page |
| total_pages | integer | Total available pages |
Each listing
| Field | Type | Description |
|---|---|---|
| listing_id | string | Portal listing ID (e.g. R152849384) |
| property_uprn | integer | Unique Property Reference Number — use this to enrich with the UPRN Lookup or Comparables endpoints |
| display_address | string | Listing address as displayed on portal |
| latest_price | integer | Latest asking price in GBP |
| bedrooms | integer | Number of bedrooms |
| bathrooms | integer | Number of bathrooms |
| transaction_type | string | Sale or Rental |
| latest_status | string | For Sale, Sold STC, Under Offer, etc. |
| added_date | datetime | When listing first appeared |
| source | string | The originating property portal |
| listing_property_type | string | Detached, Semi-Detached, Terraced, Flat, etc. |
UK-wide listings, one endpoint
30 years of continuous UK property listing data through Home.co.uk, normalised into a single consistent schema.
Multi-portal coverage
UK property listings aggregated and deduplicated — backed by 30 years of Home.co.uk data collection.
30 years of Home.co.uk
Built on three decades of UK property data collection through Home.co.uk — one of the UK's longest-running property data platforms.
Normalised schema
Consistent field names, types, and formats regardless of source portal. No per-portal mapping needed in your code.
Who uses live listings data
Live listing data powers everything from market analysis to automated pricing tools.
Market intelligence
Track new listings, price changes, and time on market across any area. Build real-time dashboards for agents and investors.
Property search apps
Power a property search experience without scraping. Filter by boundary, price, and bedrooms — all from a single API call.
Alert systems
Monitor new listings in specific areas. Poll periodically, compare against last seen results, and notify users when matches appear.
Pricing tools
Compare active asking prices against recent sold prices from the comparables endpoint. Spot overpriced or underpriced listings automatically.
Practical patterns
Common integrations in production.
Paginate through all results
import requests
page = 1
all_listings = []
while True:
resp = requests.get(
"https://api.homedata.co.uk/api/live-listings/search/",
params={"transaction_type": "Sale", "bedrooms": 3, "page": page},
headers={"Authorization": "Api-Key YOUR_API_KEY"},
).json()
all_listings.extend(resp["results"])
if page >= resp["total_pages"]:
break
page += 1
print(f"Fetched {len(all_listings)} listings across {page} pages")
Combine with comparables
// Get active listings in an area
const listings = await fetch(
`https://api.homedata.co.uk/api/live-listings/search/?boundary_id=14624&transaction_type=Sale`,
{ headers: { "Authorization": "Api-Key YOUR_API_KEY" } }
).then(r => r.json());
// For each listing, get comparable sold prices
for (const listing of listings.results.slice(0, 5)) {
const comps = await fetch(
`https://api.homedata.co.uk/api/comparables/${listing.property_uprn}/`,
{ headers: { "Authorization": "Api-Key YOUR_API_KEY" } }
).then(r => r.json());
const soldPrices = comps.comparables
.filter(c => c.sold_let_price)
.map(c => c.sold_let_price);
const avgSold = soldPrices.reduce((a, b) => a + b, 0) / soldPrices.length;
const premium = ((listing.latest_price - avgSold) / avgSold * 100).toFixed(1);
console.log(`${listing.display_address}: asking ${premium}% vs comps`);
}
Get your free API key
100 requests/month on the free tier. No credit card. From signup to your first listing search in under 5 minutes.