Skip to content
ListingrailGet an API key

Zoopla API

Zoopla's former public API has been shut down. Listingrail reads live Zoopla sale and rent listings (United Kingdom) and returns them as JSON with one key, in the same format as the other 18 portals.

Zoopla, a real row2026-10-27
PortalLocationTypePriceRemarks
ZooplaHornchurchSale£450,000On market

Is there an official Zoopla API?

Zoopla's former public listings API is no longer available, and no replacement has been announced. Developers reported keys stopping without notice and the old developer portal going offline. Zoopla's developer page now says the listings API is not publicly available and sends commercial data enquiries to its business team.

Access. No self-serve route to read listings. Commercial enquiries about Zoopla data go through business.zoopla.co.uk/contact-us.

Price. Zoopla publishes no price for API access that we could find.

What the official route covers. Nothing publicly available. The old API (property listings, area stats, average prices) was closed to new users.

What it does not. Listing search, listing details, prices of single homes, agents and photos through an official API.

Documentation. Zoopla developer page

Checked on 2026-10-27; documentation links on 2026-10-27. Sources: Zoopla developer page · API Evangelist profile of Zoopla (third party) · Is There a Zoopla API? (RealtyAPI, vendor source)

POST this body to /v1/listings/search with your key. zoopla takes UK town, area, London borough or outcode, or a Zoopla search link (a link keeps its own price and bedroom filters). One credit per listing returned; up to 500 per request.

The same request reads the other UK and European portals by changing source: Rightmove, Idealista, ImmoScout24, Kleinanzeigen, Fotocasa, Daft.ie, Otodom, Imovirtual, Hemnet. All of them on one page.

{
  "source": "zoopla",
  "location": "London",
  "type": "sale",
  "limit": 50
}

Response

The response to that request, with one real Zoopla listing from 2026-10-27; the other listings follow in the same shape, and the credit numbers are an example for a 10,000-credit key. The portal's own record comes in raw (left out here), and fields Zoopla does not show a visitor are null.

{
  "source": "zoopla",
  "location": "London",
  "type": "sale",
  "count": 50,
  "credits_used": 50,
  "credits_remaining": 9950,
  "listings": [
    {
      "id": "73493488",
      "url": "https://www.zoopla.co.uk/for-sale/details/73493488/",
      "source": "zoopla",
      "title": "3 bed terraced house for sale",
      "address": "Elm Park, Hornchurch RM12",
      "city": "Hornchurch",
      "region": null,
      "postal_code": "RM12",
      "country": "GB",
      "lat": 51.55192,
      "lng": 0.19658,
      "price": 450000,
      "currency": "GBP",
      "price_period": null,
      "beds": 3,
      "rooms": null,
      "baths": 1,
      "area": 1087,
      "area_unit": "sqft",
      "property_type": "terraced",
      "listed_at": "2026-10-27T21:38:54",
      "photos": [
        "https://lid.zoocdn.com/645/430/203e9482d6f98bcbb9ae270016191f66ab5415c5.jpg"
      ],
      "agent": {
        "name": "Readings Property Services",
        "phone": "01708 874952",
        "company": null
      },
      "raw": {
        "…": "the portal's own record, left out here"
      }
    },
    "…"
  ]
}

Python

import requests

r = requests.post(
    "https://listingrail.com/v1/listings/search",
    headers={"Authorization": "Bearer YOUR_KEY"},
    json={"source":"zoopla","location":"London","type":"sale","limit":50},
    timeout=180,
)
for home in r.json()["listings"]:
    print(home["price"], home["currency"], home["address"], home["url"])

JavaScript

const r = await fetch("https://listingrail.com/v1/listings/search", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_KEY", "content-type": "application/json" },
  body: JSON.stringify({"source":"zoopla","location":"London","type":"sale","limit":50}),
});
const { listings } = await r.json();
console.log(listings.length, listings[0]);

Fields Zoopla fills

  • id
  • url
  • title
  • address
  • city
  • postal_code
  • country
  • lat
  • lng
  • price
  • currency
  • beds
  • baths
  • area
  • property_type
  • listed_at
  • photos
  • agent.name
  • agent.phone

Not given by Zoopla to a visitor, so returned as null: region, price_period, rooms, agent.company.

Questions about the Zoopla API

Does Zoopla have a public API?

Zoopla's former public API has been shut down. The details, with sources, are above on this page.

Is there a free Zoopla API?

Zoopla's former public API has been shut down. Listingrail's free key returns 100 Zoopla listings once, with no card.

How do I get a Zoopla API key?

Officially: No self-serve route to read listings. Listingrail gives you a key for Zoopla and 18 other portals at once: enter your email on the home page and the key comes with 100 free listings.

How much does the Zoopla API cost?

We found no published price for an official Zoopla API. On Listingrail one listing returned costs one credit: 100 free once, then $29 a month for 10,000 listings ($0.0029 each) down to $0.0012 on the largest plan. Searches that find nothing are free.

Where is the Zoopla API documentation?

Zoopla's developer page says its listings API is no longer publicly available and points commercial data enquiries to its business team. It documents no endpoint for searching listings. Listingrail's documentation lists every request field and the Zoopla location format. Listingrail API docs

Can I get Zoopla listings in Python or JavaScript?

Yes. Send one POST request to /v1/listings/search with "source": "zoopla" and a location; the examples on this page run as they are once you add your key.

Which Zoopla fields does the API return?

id, url, title, address, city, postal_code, country, lat, lng, price, currency, beds, baths, area, property_type, listed_at, photos, agent.name, agent.phone. Fields Zoopla does not show a visitor come back as null, and every listing also carries the portal's own record in "raw".

Is it allowed to use Zoopla data?

Listingrail reads what Zoopla shows any visitor, at the moment you ask. How you use it is up to you: check Zoopla's terms and the data-protection law that applies to you, especially before storing agent names or phone numbers.

Get 100 free listingsRead the docsOther portalsUK and Europe portals