Zoopla

Zoopla API endpoints

Zoopla logo

Available Zoopla Endpoints

Explore 19 endpoints for accessing Zoopla real estate data. Each endpoint is designed for a specific use case and returns structured JSON.

GET/details/byid

/details/byid

INPUT: `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.

listingId
View endpoint
GET/details/byurl

/details/byurl

INPUT: 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`

url
View endpoint
GET/details/byaddress

/details/byaddress

INPUT: 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**.

address
View endpoint
GET/autocomplete

/autocomplete

Zoopla **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`.

input
View endpoint
GET/search/bylocation

/search/bylocation

Search 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).

location
View endpoint
GET/search/byzip

/search/byzip

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

postalCode
View endpoint
GET/search/bycoordinates

/search/bycoordinates

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

latitudelongitude
View endpoint
GET/search/byurl

/search/byurl

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

url
View endpoint
GET/pricehistory

/pricehistory

Slim 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`).

listingId
View endpoint
GET/images

/images

Slim 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[]`.

listingId
View endpoint
GET/poi

/poi

Slim 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).

listingId
View endpoint
GET/history

/history

Slim 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).

View endpoint
GET/estimates

/estimates

Slim 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).

View endpoint
GET/sold-prices

/sold-prices

Browse 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`.

View endpoint
GET/ev-charging

/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`.

View endpoint
GET/agent/search

/agent/search

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

location
View endpoint
GET/agent/details

/agent/details

Get **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.

branchId
View endpoint
GET/agent/forsaleproperties

/agent/forsaleproperties

Slim 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).

branchId
View endpoint
GET/agent/forrentproperties

/agent/forrentproperties

Slim 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).

branchId
View endpoint

Why Choose RealtyAPI for Zoopla Data

We built RealtyAPI so developers can focus on their products, not on data collection infrastructure.

Real-Time Data Access

Get the most current Zoopla data without dealing with rate limits, IP blocks, or anti-bot protections. Our infrastructure handles the heavy lifting.

Simple Integration

Clear documentation and a straightforward REST API make it easy to start pulling Zoopla data into your application within minutes.

High Reliability

Our infrastructure is built for uptime and performance. Rely on consistent, uninterrupted access to Zoopla data for your production applications.

Comprehensive Data

Access a wide range of Zoopla data points through carefully designed endpoints that cover properties, listings, agents, and market metrics.

Lightning Fast Responses

Optimized data pipelines deliver Zoopla results in milliseconds. Low latency means a better experience for your end users.

Structured JSON Output

Every Zoopla endpoint returns clean, well-structured JSON that is ready to parse and use directly in your application logic.

Zoopla API Use Cases

From property valuation to market analysis, the Zoopla powers a wide range of real estate applications.

Property Valuation

Analyze Zoopla property data to determine accurate market values, estimate appreciation, and identify undervalued investment opportunities.

Market Research

Track Zoopla listing trends, pricing shifts, and inventory changes to make informed, data-driven investment and development decisions.

Portfolio Management

Monitor your real estate portfolio with live Zoopla data. Track current values, rental comps, and market conditions in one place.

Lead Generation

Identify high-potential properties and neighborhoods using Zoopla data to power targeted outreach and marketing campaigns.

Competitive Analysis

Compare listings, pricing, and agent activity across Zoopla to understand market positioning and stay ahead of competition.

Custom Dashboards

Build real-time dashboards that aggregate Zoopla data for internal teams, clients, or investors with always-current information.

Frequently Asked Questions

Common questions about using the Zoopla through RealtyAPI.

Is the Zoopla API official?
No, RealtyAPI provides an unofficial Zoopla data API that lets you access real estate data through our platform. We handle the complexities of data collection so you can focus on building your application.
How current is the data?
We provide real-time Zoopla data. When you make a request, we fetch the latest information available so your application always works with up-to-date figures.
Can I use this API in production?
Absolutely. Many businesses rely on RealtyAPI for their production applications. Our infrastructure is designed for reliability, low latency, and high throughput.
What response format does the API use?
All endpoints return structured JSON responses. The data is clean, well-documented, and ready to use directly in your application without additional parsing.
Do I need a credit card to get started?
No. You can start with 250 free API calls to test any endpoint. No credit card is required. Upgrade to a paid plan when you are ready to scale.
What programming languages are supported?
RealtyAPI is a standard REST API, so it works with any language that can make HTTP requests: Python, JavaScript, Go, PHP, Ruby, Java, C#, and more.

Ready to Access Zoopla Data?

Get started with 250 free API calls. No credit card required.

Common Terms for Zoopla API Access

Zoopla API integrationZoopla data APIAccess Zoopla data programmaticallyZoopla API for developersZoopla API endpointZoopla API documentationHow to use Zoopla APIZoopla real estate APIZoopla property data APIZoopla listing API