Overview
Search is by UK outcode or postcode in geo_identifier. That is the fast path. Place names are slower and less precise. Search returns featured, regular, and a combined listings array. Each listing includes uprn when search.property has one. Optional added limits results to listings first published or updated in a recent window (24_hours, 3_days, 7_days, 14_days, 30_days). This product is unofficial and is not affiliated with Zoopla.
Preferred: outcode or postcodegeo_identifier=LE1 or geo_identifier=LE4 2FP.
Then open a listing
Pass listingId from search into /properties/v2/detail.
Typical flow
1. Search by outcode or postcode → 2. Detail by listing id.
GET /properties/v2/search?geo_identifier=LE1§ion=for-sale&pn=1 GET /properties/v2/search?geo_identifier=LE1§ion=for-sale&added=7_days GET /properties/v2/search?geo_identifier=LE4%202FP§ion=to-rent&pn=1 GET /properties/v2/detail?listingId=73036018
Authentication
On RapidAPI, send your RapidAPI application key. The origin key is injected by RapidAPI and is not required in client code.
X-RapidAPI-Key: YOUR_RAPIDAPI_KEY X-RapidAPI-Host: YOUR_RAPIDAPI_HOST
Direct calls to this origin use X-API-Key with the provider secret. /zoopla and /health are public.
Endpoints
Base URL https://api.ukrealestatedata.com. Same paths on RapidAPI once the Hub listing points at this origin.
| Method | Path | Purpose |
|---|---|---|
| GET | /v2/auto-complete | Place suggestions. Read data[].geoIdentifier. |
| GET | /properties/v2/search | Listings by outcode or postcode (geo_identifier). |
| GET | /properties/v2/list | Same search. Use locationIdentifier as an outcode or postcode (e.g. LE1). |
| GET | /properties/v2/detail | Full listing. Query listingId from search. |
| GET | /agents/list | Estate / letting / commercial agents. |
| GET | /agents/detail | Agent branch by id. |
| GET | /house-prices/v2/auto-complete | Sold-price address suggestions. |
| GET | /house-prices/v2/get-area | Sold prices by area: average sold price by property type and recent sales. |
| GET | /house-prices/v2/get-property | Property details by UPRN: address, type, rooms, tenure, floor area, EPC rating, on or off market, sold history. No valuation. |
curl -s "https://api.ukrealestatedata.com/properties/v2/search?geo_identifier=LE1§ion=for-sale&pn=1" \ -H "X-API-Key: YOUR_ORIGIN_KEY" curl -s "https://api.ukrealestatedata.com/properties/v2/search?geo_identifier=LE1§ion=for-sale&added=7_days" \ -H "X-API-Key: YOUR_ORIGIN_KEY"
Parameters
Search
| Name | In | Type | Description | |
|---|---|---|---|---|
geo_identifier |
query | string | required | UK outcode or postcode. Fastest: LE1, OX1. Full postcode also works, e.g. LE4 2FP. |
section |
query | string | optional | for-sale (default) or to-rent. |
category |
query | string | optional | residential (default) or commercial. |
pn |
query | integer ≥ 1 | optional | Page number. Default 1. |
results_sort |
query | string | optional | newest_listings (default), highest_price, lowest_price, most_reduced. |
added |
query | string | optional | Delta window. Omit for every matching listing. One of:
24_hours,
3_days,
7_days,
14_days,
30_days.
Keeps rows whose first_visible_date or listing_update_date falls in that period (new or modified). |
price_min · price_max |
query | integer | optional | GBP. Rent uses monthly figures when section=to-rent. |
beds_min · beds_max |
query | integer | optional | Bedroom range. |
radius |
query | number | optional | Miles from the place. |
keywords |
query | string | optional | Free-text filter. |
property_sub_type |
query | string | optional | e.g. flats, terraced, semi_detached, detached. |
Other endpoints
| Name | Endpoint | Description | |
|---|---|---|---|
locationPrefix |
/v2/auto-complete | required | Partial place name, e.g. oxford. |
listingId |
/properties/v2/detail | required | From data.listings[].listingId. |
location |
/agents/list | required | Place name. search_type: estate-agents, letting-agents, commercial-agents. |
geoString |
/house-prices/v2/get-area | required | Town or postcode area, e.g. harrow. |
uprn |
/house-prices/v2/get-property | required | Unique Property Reference Number, 1 to 12 digits, e.g. 2465205348. |
Response body
Search is wrapped in data. First search can take 15–40 seconds.
| Field | Type | Meaning |
|---|---|---|
data.geo | object | geoIdentifier, geoLabel. |
data.section | string | for-sale or to-rent. |
data.pagination | object | Walk with hasNextPage. totalPages / pageNumberMax are present but not a full result-set count (no COUNT query). totalResults is filled on the last page only. |
data.featured | array | Spotlight cards. |
data.regular | array | Ordinary cards. |
data.listings | array | Featured + regular, for convenience. |
listingId | string | Pass to detail. |
uprn | string or null | Unique Property Reference Number from search.property when the row has one. |
firstPublishedDate | string or null | When the listing first appeared. |
lastPublishedDate | string or null | When the listing was last updated. Used with added. |
numberOfBedrooms | integer | When present. |
image / images | object / array | Listing photos from property_images, then floor plans. Each item is {src, caption, thumbnail}. |
floorPlanImages | array | Floor plans from floor_plan_images. Also appended to images. |
numberOfImages | integer or null | Photo count (floor plans counted separately in floorPlanImages). |
features | array of strings | Key features, split into separate items. |
branch | object or null | Agent from agent_detail when the row has a name or phone. |
tenure, leaseRemaining, groundRent, serviceCharge, councilTaxBand | string or null | From the listing row when ingest stored them. |
epcCurrentRating, epcPotentialRating, epcUrl | string or null | EPC when present. |
priceHistory | array/object or null | Asking-price / reduction history when present. |
salesTimeline | array or null | Property timeline: Land Registry sales and past Zoopla listings (kind sale / listing / price_change). |
raw | object or null | The same extra fields plus ntsInfo and agentDetail. |
Examples
Autocomplete
locationPrefix=oxford
{
"data": [
{
"geoIdentifier": "oxford",
"geoLabel": "Oxford, Oxfordshire",
"geoType": "city"
}
]
}
Search for-sale
geo_identifier=LE1§ion=for-sale&pn=1
{
"data": {
"section": "for-sale",
"pagination": { "page": 1, "hasNextPage": true },
"listings": [
{
"listingId": "73036018",
"title": "3 bedroom house for sale",
"displayAddress": "Leicester, Leicestershire",
"uprn": "246503937"
}
]
}
}
Delta (added or updated)
geo_identifier=LE1§ion=for-sale&added=7_days
Allowed added values: 24_hours, 3_days, 7_days, 14_days, 30_days. Same parameter on /properties/v2/list.
Rent
Same path with section=to-rent.
Errors
| HTTP | error | When |
|---|---|---|
| 400 | bad_request | Missing listingId on detail. |
| 401 | unauthorized | Missing or invalid API key. |
| 502 / 503 / 504 | — | Source temporarily unavailable or slow. Retry once; allow 90 seconds. |
{
"error": "unauthorized",
"message": "Invalid API key",
"details": {}
}
Limits
RapidAPI plans cap monthly requests. Search by outcode or postcode for fast results. This product is unofficial and is not affiliated with Zoopla.