Zoopla API endpoints

Explore 19 endpoints for accessing Zoopla real estate data. Each endpoint is designed for a specific use case and returns structured JSON.
/details/byidINPUT: `listingId` (e.g. `72743732`) Get **full listing details** by Zoopla's internal `listingId`. The fastest details endpoint. ##### Where to find a listingId: - Returned in every `/search/*` response (each result includes `listingId`). - Embedded in a Zoopla listing URL — the trailing digits are the `listingId`: - `https://www.zoopla.co.uk/for-sale/details/72743732/` → `listingId = 72743732` If you only have a URL, use [/details/byurl](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=detailsbyurl) which extracts the id for you.
/details/byurlINPUT: a full Zoopla listing URL Extracts the `listingId` from the URL and forwards to [/details/byid](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=detailsbyid). Accepted URL forms (any section — `/for-sale/`, `/to-rent/`, `/new-homes/`): - `https://www.zoopla.co.uk/for-sale/details/72743732/` - `https://www.zoopla.co.uk/to-rent/details/12345678`
/details/byaddressINPUT: a UK street address **with full postcode** Resolves the address to a Unique Property Reference Number (UPRN) and returns the property record — historic listings, sold-price history, sale & rent estimates, plus the latest live listing if there's one currently on Zoopla. The postcode is mandatory: Zoopla's address resolver returns 0 hits for partial addresses without one. If you only have a `listingId`, use [/details/byid](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=detailsbyid). For a single slice (just images, just price history, etc.) use the slim endpoints under **Property Details - Specific**.
/autocompleteZoopla **search-box autocomplete** (`getSearchSuggestions`). Returns ranked location suggestions for partial input — neighbourhoods, towns, postcodes, counties, regions — each with the slug Zoopla uses internally for searches. Feed the returned `displayName` into `/search/bylocation`.
/search/bylocationSearch Zoopla listings by **free-text UK location** — neighbourhood, town, county, region, postcode area, or full address. Returns paginated listings (25 per page) with `listingId`, address, photos, price, beds/baths, property type, branch (estate agent), tenure, and listing date. Supports the **full filter set** below: status, property type, price/beds/baths/floor-area ranges, tenure, new-builds, chain-free, auction, retirement, shared-ownership, plus rent-only filters (furnished, pets, bills, shared-living, student).
/search/byzipSearch Zoopla listings by **UK postcode**. **Outward code is preferred** (`NW3`, `SW1`, `EC1A`, `M1`) — Zoopla's slug-based search resolves these to real area slugs. Full postcodes (`NW3 1AA`) often return 0 results because no Zoopla "area" matches a single postcode. Use [/search/bycoordinates](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=searchbycoordinates) for a precise radius-around-a-point search. Returns paginated listings (25 per page) with the same shape as [/search/bylocation](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=searchbylocation). Supports the full filter set.
/search/bycoordinatesSearch Zoopla listings by **lat/lon + radius**. Useful for app maps and 'nearby properties' widgets. Returns paginated listings (25 per page) with the same shape as [/search/bylocation](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=searchbylocation). Supports the full filter set.
/search/byurlSearch by pasting a **Zoopla.co.uk search URL**. The URL's path + query string is forwarded directly to Zoopla's GraphQL — any filter combination the site's UI generates is replicated 1:1. Since the URL already encodes every filter, this endpoint takes no other parameters. To override individual filters, use [/search/bylocation](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=searchbylocation) instead.
/pricehistorySlim endpoint — returns just the **price-change timeline** for one listing. Useful for tracking reductions / increases over the listing's life on the market without paying for the full `/details/byid` payload. Returns: `currentPrice`, `firstPublished` date, and a `priceChanges[]` array (each with `date`, `price`, `direction`, `percent`).
/imagesSlim endpoint — returns just the **photos + floor-plans** for one listing. Useful for image-focused integrations (galleries, AI vision pipelines, comparable-look apps) without paying for the full `/details/byid` payload. Returns: `numberOfImages`, `photos[]` (full-resolution URLs), `floorPlans[]`.
/poiSlim endpoint — returns just the **points of interest + transport links** around one listing. Useful for neighborhood-context widgets without paying for the full `/details/byid` payload. Returns: `pointsOfInterest[]` (schools, parks, etc. with type + distance) and `transports[]` (rail / tube / bus stops with distance).
/historySlim endpoint — returns the **historic listings & sold-price records** for one property, by address. Resolves the address to a UPRN (so a full UK postcode is required), then returns: - `historicListings[]` — every time the property has been listed for sale or rent on Zoopla - `historicSales[]` — Land Registry sold-price entries For estimates only, use [/estimates](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=estimates). For the full property record, use [/details/byaddress](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=detailsbyaddress).
/estimatesSlim endpoint — returns just the **sale estimate + rent estimate** for one property, by address. Resolves the address to a UPRN (so a full UK postcode is required), then returns Zoopla's automated valuation: - `saleEstimate` — current estimated sale price - `rentEstimate` — current estimated monthly rent - Property facts: beds, baths, receptions, tenure, propertyType. For the full property record (history + listings), use [/details/byaddress](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=detailsbyaddress).
/sold-pricesBrowse Zoopla's **sold-price database** (mirrors the Prices tab in the Zoopla mobile app). Returns Land Registry sold-price entries plus Zoopla's matching property metadata. **One** geo selector is required — pass exactly one of: - `geoId` — slug from `/autocomplete` (e.g. `london/elm-row/nw3-1aa`). Most precise. - `postcode` — UK postcode forwarded as a geo identifier (Zoopla resolves it; results vary). - `lat` + `lon` — exact-coordinate search - `bbox` — map-bounded search, format `ne_lat,ne_lon,sw_lat,sw_lon` Optional date / type filters: `from`, `to`, `propertyType`, plus pagination via `first` + `after`.
/ev-charging**EV charging stations** near a property. Mirrors the EV-charging widget on Zoopla's mobile detail screen. Two ways to call: - `listingId` — the endpoint resolves the listing's coordinates internally - `lat` + `lon` — direct coordinates (skips the listing lookup) Returns up to ~20 nearby chargers with `name`, `address`, `postcode`, `distance` (miles), `connectors` count, and lat/lon — plus the `nearestStationId`.
/agent/searchSearch Zoopla **estate-agent branches** by location (with optional name filter, radius, pagination). Returns 25 agents per page with `branchId`, name, address, phone, logo, branch URL, and per-section listing stats (`forSale`, `toRent`, `commercial` — each with available count, average asking price, average weeks on market). Feed a returned `branchId` into [/agent/details](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=agentdetails), [/agent/forsaleproperties](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=agentforsale) or [/agent/forrentproperties](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=agentforrent). **Note**: `location` must be a **single-token slug** (`oxford`, `london`, `nw3`, `se17`). Multi-word slugs like `oxford-oxfordshire` return an error.
/agent/detailsGet **estate-agent branch details** by Zoopla's internal `branchId`. Bundles three concurrent calls in one response: 1. **Branch info** — display name, contact details (phone, email), full address, professional memberships (ARLA, NAEA, Ombudsman scheme). 2. **For-sale stats** — current `forSaleProperties` total + a 5-listing sample. 3. **For-rent stats** — current `forRentProperties` total + a 5-listing sample. For a full page of an agent's listings, use [/agent/forsaleproperties](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=agentforsale) or [/agent/forrentproperties](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=agentforrent). ##### Where to find a branchId: - Returned in every `/search/*` response under `branch.id`. - Returned in `/details/byid` under `detail.branch.id`. - Returned in [/agent/search](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=agentsearch) results.
/agent/forsalepropertiesSlim slice of [/agent/details](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=agentdetails) — returns a full page of an agent's **for-sale listings** (not just the 5-listing sample). 25 results per page. Returns `total`, `page`, and `results[]` (each with the same shape as a `/search/*` listing).
/agent/forrentpropertiesSlim slice of [/agent/details](https://realtyapi.io/dashboard?tab=playground&api=zoopla&endpoint=agentdetails) — returns a full page of an agent's **to-rent listings**. 25 results per page. Returns `total`, `page`, and `results[]` (each with the same shape as a `/search/*` listing).
We built RealtyAPI so developers can focus on their products, not on data collection infrastructure.
Get the most current Zoopla data without dealing with rate limits, IP blocks, or anti-bot protections. Our infrastructure handles the heavy lifting.
Clear documentation and a straightforward REST API make it easy to start pulling Zoopla data into your application within minutes.
Our infrastructure is built for uptime and performance. Rely on consistent, uninterrupted access to Zoopla data for your production applications.
Access a wide range of Zoopla data points through carefully designed endpoints that cover properties, listings, agents, and market metrics.
Optimized data pipelines deliver Zoopla results in milliseconds. Low latency means a better experience for your end users.
Every Zoopla endpoint returns clean, well-structured JSON that is ready to parse and use directly in your application logic.
From property valuation to market analysis, the Zoopla powers a wide range of real estate applications.
Analyze Zoopla property data to determine accurate market values, estimate appreciation, and identify undervalued investment opportunities.
Track Zoopla listing trends, pricing shifts, and inventory changes to make informed, data-driven investment and development decisions.
Monitor your real estate portfolio with live Zoopla data. Track current values, rental comps, and market conditions in one place.
Identify high-potential properties and neighborhoods using Zoopla data to power targeted outreach and marketing campaigns.
Compare listings, pricing, and agent activity across Zoopla to understand market positioning and stay ahead of competition.
Build real-time dashboards that aggregate Zoopla data for internal teams, clients, or investors with always-current information.
Common questions about using the Zoopla through RealtyAPI.
Get started with 250 free API calls. No credit card required.