# Zoopla API (`truefetch/zoopla-api`) Actor

Search Zoopla sale and rental listings across the United Kingdom. Collect 40 normalized property fields covering prices, bedrooms, bathrooms, area, images, listing details, agent data, and source URLs.

- **URL**: https://apify.com/truefetch/zoopla-api.md
- **Developed by:** [TrueFetch](https://apify.com/truefetch) (community)
- **Categories:** Real estate, Lead generation, Agents
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.35 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

> **Affiliate disclosure:** Apify links in this README may include referral parameters. If you sign up through one of them, TrueFetch may receive a commission at no extra cost to you.

Zoopla Real Estate Listings converts one authorised United Kingdom property search into a reviewable 40-field dataset for sale or rental listing workflows.

- Route a city, region, neighbourhood, or postcode search exclusively to Zoopla's United Kingdom inventory.
- Select `for_sale` or `for_rent`, six documented property categories, and an optional supported date window.
- Preserve listing identity, prices, rooms, areas, addresses, media, agents, source links, and collection timestamps in one schema.
- Public Store proof is an old deployment snapshot: 3 total users, 1 monthly active user, 1 bookmark, and no published ratings observed on July 21, 2026; repository evidence below is the current technical authority.

[Run Zoopla Real Estate Listings on Apify](https://console.apify.com/actors/u17HfFCT7VJYloHDl/input?utm_source=truefetch\&utm_medium=readme\&utm_campaign=zoopla-real-estate-listings) with one permitted result before scheduling or scaling collection.

### What does Zoopla Real Estate Listings do?

Zoopla Real Estate Listings is a focused Apify Actor for collecting listing-shaped property records from Zoopla search flows in the United Kingdom. It accepts a country, location, and maximum result count, then routes the request to the Zoopla integration. Optional transaction, property, and recency inputs are added only when you provide them; the one runtime fallback is `for_sale` when `listing_type` is omitted.

For each accepted detail page, the Actor builds a normalised record and pushes it to the run's default dataset. The public schema provides 40 possible fields spanning identifiers, classification, pricing, physical attributes, location, images, features, contact details, source URLs, and processing metadata. The schema is stable, but individual values are conditional because advertisements differ in what agents publish.

This Actor is independent from Zoopla Limited and is not endorsed by Zoopla. It provides software capability, not permission to access or reuse content. Zoopla's current Website Terms of Use expressly reserve rights against text/data mining, web scraping, automated access, automated analysis, commercial content use without a licence, and use in artificial-intelligence solutions. Use the Actor only if you hold the necessary consent, licence, or other legally valid authority for your exact collection and downstream purpose.

### How do I run Zoopla Real Estate Listings?

Open the Actor input page and begin with a narrow location that Zoopla recognises. The shared scenario in this README checks one recently added rental flat around central Manchester. It intentionally keeps the result limit at one so you can inspect the record, logs, cost, and source permission before proceeding.

```json
{
  "country": "United Kingdom",
  "location": "M1",
  "max_results": 1,
  "listing_type": "for_rent",
  "property_type": "apartment",
  "posted_since": "7 days"
}
```

The current runtime translates the apartment category into Zoopla's flats route and maps seven days to the supported date-added filter. A requested maximum is a ceiling, not a guarantee: a run can save fewer items when no matching advertisements exist, source pages change, records disappear during collection, or detail responses lack enough usable content.

After the first run, compare the dataset item with its `source_url`, verify that your authorised use covers each returned attribute, and decide which nullable fields your pipeline can tolerate. Increase `max_results` gradually and set budgets or schedules only after the one-result evidence is satisfactory.

### What data does Zoopla Real Estate Listings return?

The default dataset exposes 40 named fields. A representative record for the Manchester rental scenario can resemble the following; values are illustrative and are not a current property advertisement:

```json
{
  "platform": "Zoopla",
  "title": "Example apartment to rent in Manchester",
  "listing_id": "example-listing-id",
  "listing_type": "for_rent",
  "property_type": "apartment",
  "price": {
    "value": 1450,
    "currency": "GBP",
    "period": "month"
  },
  "rooms": {
    "bedrooms": 2,
    "bathrooms": 1
  },
  "location": "Manchester M1",
  "address": {
    "city": "Manchester",
    "postcode": "M1"
  },
  "cover_image": "https://example.com/property.jpg",
  "contact": {
    "name": "Example letting agent"
  },
  "source_url": "https://www.zoopla.co.uk/to-rent/details/example/",
  "processed_at": "2026-07-21T12:00:00Z"
}
```

The full envelope includes identity (`platform`, `title`, `description`, `listing_id`, `mls_id`, `source_url`, `official_url`), classification (`listing_type`, `availability`, `market_type`, `property_type`, `subtype`, `category`, `business_type`), money and dimensions (`price`, `rooms`, `area`, `land`, `building`, `fees`), time (`dates`, `posted_time`), place (`location`, `address`, `geo`, `country`, `nearby`), media and attributes (`cover_image`, `image_urls`, `media`, `open_houses`, `features`, `amenities`, `details`), contacts and policies (`contact`, `reviews`, `policies`, `units`), and processing fields (`processor`, `processed_at`).

Do not infer that every key contains a value. Treat nested objects and arrays as optional, validate types at ingestion, retain provenance, and store the processing timestamp separately from any source-provided listing date.

### What inputs can I configure?

| Input | Required | Current behaviour |
| --- | --- | --- |
| `country` | Yes | Accepts `United Kingdom` only and selects the Zoopla route. |
| `location` | Yes | City, region, neighbourhood, postcode, or another source-recognised place. |
| `max_results` | Yes | Integer from 1 to 10,000; it caps accepted dataset items. |
| `listing_type` | No | `for_sale` or `for_rent`; omission uses `for_sale`. |
| `property_type` | No | `residential`, `house`, `apartment`, `condo`, `commercial`, or `new_development`. |
| `posted_since` | No | A parseable duration; the Zoopla route buckets it to 1, 3, 7, 14, or 30 days. |

Leave optional inputs empty when you do not intend to narrow the search. The Actor does not expose price, bedroom, bathroom, radius, keyword, or tenure controls, even if Zoopla's consumer interface has other filters. An API request containing undocumented fields should not be assumed to affect source requests.

`condo` and `apartment` use the source's flats path; `house` uses houses; `commercial` uses the commercial path; and `new_development` selects new homes for sale. Source inventory may still classify or describe a returned item differently, so use the normalised value as a collection aid rather than an authoritative legal property classification.

### What platforms and markets does Zoopla Real Estate Listings cover?

Coverage is deliberately limited to Zoopla and the United Kingdom. The Actor supports the sale and rental departments documented in its code, not sold-price history, valuations, overseas searches, auction-only searches, student-only searches, ownership records, mortgage products, or professional market indices. It does not promise every listing in England, Scotland, Wales, or Northern Ireland.

Zoopla's own public guidance describes Buy and Rent searches and date-added, property-type, and location controls, which aligns with this Actor's narrow interface. However, that description is evidence of product organisation, not permission for automated collection. Source geography, paths, labels, and availability can change independently of the Actor.

### Why use Zoopla Real Estate Listings?

The Actor can reduce mapping effort when an authorised workflow needs consistent listing-level records from one UK portal. A postcode-sized run can support a human review queue; repeated licensed runs can feed change comparisons; and source URLs allow analysts to inspect origin records rather than treating transformed output as self-proving.

Possible authorised applications include rental availability checks for an owned portfolio area, comparable-advertisement review, internal lead triage where contact use is lawful, and quality monitoring of records an organisation is entitled to process. It is not a valuation service, estate agent, property register, credit service, or investment adviser. Confirm significant conclusions with source records, official registries, licensed data products, and qualified professionals.

Normalisation does not cure source limitations. Asking prices are not achieved prices, advertised availability can lag reality, agent descriptions may contain mistakes, and the source itself states that it does not guarantee content accuracy, completeness, or freshness.

### Who is Zoopla Real Estate Listings for?

This Actor may suit authorised property teams, licensed data users, analysts, landlords, letting or estate agencies, researchers, and developers who need a Zoopla-specific dataset and can document the legal basis for collection. It can be run manually or integrated through the Apify API, clients, schedules, webhooks, and MCP tools.

It is not suitable for general scraping without consent, bulk republication, unauthorised commercial reuse, unsolicited marketing, collection of unnecessary personal data, or AI training and analysis prohibited by Zoopla's terms. If your organisation cannot explain why access is permitted and how each field will be used, do not run the Actor. Consider a licensed feed, direct permission, or official aggregate research instead.

### How can I use Zoopla Real Estate Listings through the API or MCP?

The API slug is `truefetch~zoopla-real-estate-listings`. Post the same JSON input to the Actor run endpoint and retrieve items from its default dataset. For small calls, the synchronous dataset-items endpoint can return data in one request; for larger work, start an asynchronous run and inspect its terminal status before consuming results. Current examples are on the [official Apify API page](https://apify.com/truefetch/zoopla-real-estate-listings/api).

An MCP client can register the Actor by its current Console ID:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=actors&actors=u17HfFCT7VJYloHDl"
    }
  }
}
```

Use the [Actor MCP instructions](https://apify.com/truefetch/zoopla-real-estate-listings/api/mcp) for the current setup flow. Keep Apify tokens in secrets, limit who can start runs, log authorised purposes, and apply the same source permissions regardless of whether a person, script, or agent invokes the tool.

### How much does Zoopla Real Estate Listings cost?

The Actor uses pay-per-event pricing. A start event costs **$0.01000**. Each result pushed to the default dataset costs **$0.01150** on FREE, **$0.01112** on BRONZE, **$0.01073** on SILVER, and **$0.01035** on GOLD, PLATINUM, or DIAMOND. Therefore, the one-result Manchester scenario has a maximum Actor-event charge of **$0.02150 on FREE**, before separate Apify platform or subscription usage.

The start charge applies even when no listing is saved. Result charges correspond to records actually pushed, not `max_results`. Review the live Pricing tab before setting a budget because Store pricing can change after this documentation date.

### How does Zoopla Real Estate Listings compare with alternatives?

Use this Actor when the required source is Zoopla, the market is the United Kingdom, and its six-input interface matches your permissioned purpose. Rightmove Real Estate Listings is a separate UK source integration. Global Real Estate Listings is more suitable when an authorised workflow must select among multiple publishers or countries. Domain, Zillow, Realtor, and Redfin Actors target other markets and should not be treated as interchangeable inventory.

For market-level price trends rather than individual advertisements, an official index or licensed aggregate dataset may be a better fit. Zoopla publishes a House Price Index based on achieved sales prices, mortgage valuations, and recently agreed sales; that product answers a different question from the asking-price and listing details returned here. Choose the least intrusive source that meets the analytical need.

### What are the limits and troubleshooting steps?

Zoopla can alter page routes, markup, response behaviour, property classifications, or blocking controls without notice. Some records omit floor area, full address, contact fields, or images. Results may be fewer than requested, and identical inputs can change as listings are added, edited, or removed. This Actor offers no completeness, freshness, uptime, or transaction guarantee.

The controlling risk is permission. The current Zoopla terms at `https://www.zoopla.co.uk/terms/` expressly reserve rights against scraping and automated analysis, limit commercial use without a licence, and restrict AI-related use. The Actor does not create an exception. Review current terms, applicable UK database and copyright rights, privacy rules, marketing law, and your contract or consent before every production use.

For an authorised technical issue, rerun the exact one-result Manchester scenario; remove optional filters; verify the country and postcode spelling; inspect logs and dataset count; and compare any returned item with its source URL. When reporting a defect, include the run ID, sanitised input, timestamp, expected behaviour, actual behaviour, and error text. Never share tokens, credentials, or unnecessary personal information.

### Frequently asked questions

#### Does it support sold-price searches?

No. The public listing types are `for_sale` and `for_rent`. Sold-price history is outside this Actor's documented scope.

#### What happens when `listing_type` is empty?

The current runtime uses `for_sale`. Other optional filters remain unset unless supplied.

#### Are date values exact to the hour?

No. Zoopla requests are bucketed to the supported 1, 3, 7, 14, or 30-day source filters.

#### Does an Apify subscription grant Zoopla rights?

No. Actor payment and source permission are separate. Users must establish authority for access and reuse.

#### Are all 40 fields guaranteed?

No. The dataset schema is a common envelope; source availability determines populated values.

### Related TrueFetch Actors

- [Global Real Estate Listings](https://apify.com/truefetch/global-real-estate-listings) — broader platform and country selection.
- [Rightmove Real Estate Listings](https://apify.com/truefetch/rightmove-real-estate-listings) — another United Kingdom sale and rental source.
- [Domain Real Estate Listings](https://apify.com/truefetch/domain-real-estate-listings) — Australian sale and rental searches.
- [Zillow Real Estate Listings](https://apify.com/truefetch/zillow-real-estate-listings) — Zillow searches in the United States and Canada.

Select only an Actor whose source, market, input contract, and permitted use match the work.

### Support and last updated

Report reproducible technical problems through the [Actor Issues tab](https://apify.com/truefetch/zoopla-real-estate-listings/issues) with a run ID and sanitised evidence. Do not put confidential permission documents, credentials, or personal information into a public issue.

Documentation last verified **July 21, 2026** against the current repository's Actor metadata, input schema, output and storage schemas, pricing events, and read-only Zoopla execution path. Store adoption figures in the opening proof point are an older public deployment snapshot and are not used as evidence of current local behaviour.

[Open Zoopla Real Estate Listings and run the one-result check](https://console.apify.com/actors/u17HfFCT7VJYloHDl/input?utm_source=truefetch\&utm_medium=readme\&utm_campaign=zoopla-real-estate-listings-support).

# Actor input Schema

## `country` (type: `string`):

Country where Zoopla listings will be searched

## `location` (type: `string`):

City, region, postcode, or neighborhood supported by Zoopla

## `max_results` (type: `integer`):

Maximum number of Zoopla property listings to return

## `listing_type` (type: `string`):

Choose the transaction status to search

## `property_type` (type: `string`):

Optional property or asset type filter. Leave empty to include all supported property types

## `posted_since` (type: `string`):

Only include listings posted within this timeframe when Zoopla supports posted-date filtering

## Actor input object example

```json
{
  "country": "United Kingdom",
  "location": "London",
  "max_results": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Overview table for the default dataset of normalized property listings.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "country": "United Kingdom",
    "location": "London",
    "max_results": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("truefetch/zoopla-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "country": "United Kingdom",
    "location": "London",
    "max_results": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("truefetch/zoopla-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "country": "United Kingdom",
  "location": "London",
  "max_results": 10
}' |
apify call truefetch/zoopla-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=truefetch/zoopla-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/u17HfFCT7VJYloHDl/builds/zSnhtSO5osacFLpq4/openapi.json
