UkRealEstateData
UK live listings

Zoopla

Search UK sale and rental listings as JSON. Pass an outcode or postcode as geo_identifier (for example LE1 or LE4 2FP), page through results, then load a listing by id.

GET · search
GET /properties/v2/search
?geo_identifier=LE1
&section=for-sale

data.listings[0].listingId
73036018
3 bed terraced house · Leicester

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 postcode
geo_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&section=for-sale&pn=1
GET /properties/v2/search?geo_identifier=LE1&section=for-sale&added=7_days
GET /properties/v2/search?geo_identifier=LE4%202FP&section=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.

MethodPathPurpose
GET/v2/auto-completePlace suggestions. Read data[].geoIdentifier.
GET/properties/v2/searchListings by outcode or postcode (geo_identifier).
GET/properties/v2/listSame search. Use locationIdentifier as an outcode or postcode (e.g. LE1).
GET/properties/v2/detailFull listing. Query listingId from search.
GET/agents/listEstate / letting / commercial agents.
GET/agents/detailAgent branch by id.
GET/house-prices/v2/auto-completeSold-price address suggestions.
GET/house-prices/v2/get-areaSold prices by area: average sold price by property type and recent sales.
GET/house-prices/v2/get-propertyProperty 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&section=for-sale&pn=1" \
  -H "X-API-Key: YOUR_ORIGIN_KEY"
curl -s "https://api.ukrealestatedata.com/properties/v2/search?geo_identifier=LE1&section=for-sale&added=7_days" \
  -H "X-API-Key: YOUR_ORIGIN_KEY"

Parameters

Search

NameInTypeDescription
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

NameEndpointDescription
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.

FieldTypeMeaning
data.geoobjectgeoIdentifier, geoLabel.
data.sectionstringfor-sale or to-rent.
data.paginationobjectWalk 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.featuredarraySpotlight cards.
data.regulararrayOrdinary cards.
data.listingsarrayFeatured + regular, for convenience.
listingIdstringPass to detail.
uprnstring or nullUnique Property Reference Number from search.property when the row has one.
firstPublishedDatestring or nullWhen the listing first appeared.
lastPublishedDatestring or nullWhen the listing was last updated. Used with added.
numberOfBedroomsintegerWhen present.
image / imagesobject / arrayListing photos from property_images, then floor plans. Each item is {src, caption, thumbnail}.
floorPlanImagesarrayFloor plans from floor_plan_images. Also appended to images.
numberOfImagesinteger or nullPhoto count (floor plans counted separately in floorPlanImages).
featuresarray of stringsKey features, split into separate items.
branchobject or nullAgent from agent_detail when the row has a name or phone.
tenure, leaseRemaining, groundRent, serviceCharge, councilTaxBandstring or nullFrom the listing row when ingest stored them.
epcCurrentRating, epcPotentialRating, epcUrlstring or nullEPC when present.
priceHistoryarray/object or nullAsking-price / reduction history when present.
salesTimelinearray or nullProperty timeline: Land Registry sales and past Zoopla listings (kind sale / listing / price_change).
rawobject or nullThe 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&section=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&section=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

HTTPerrorWhen
400bad_requestMissing listingId on detail.
401unauthorizedMissing 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.