# Zoopla Search

Search current Zoopla property listings for a UK location and return listing results with pagination and location details. Important limitation: this endpoint supports section, location and page only. The underlying data source ignores price, bedroom and property-type filters on this search plane, so a filtered request would return unfiltered results and appear to succeed. Known filter parameters are rejected with a 422 rather than silently ignored, but that rejection covers a fixed list of parameter names: because the upstream ignores filter parameters entirely, an unrecognised filter spelling may still return unfiltered results, so verify the returned listing set if you apply your own filters. For price, bedroom or property-type filtering, filter the /api/zoopla/search response client-side. The /api/zoopla/sold endpoint filters by last-sale date only (from_last_sale_date, to_last_sale_date); it exposes no price, bedroom or property-type filter.

- **Documentation:** [https://scrappa.co/docs/zoopla-api/zoopla_search](https://scrappa.co/docs/zoopla-api/zoopla_search)
- **API group:** Zoopla API
- **Endpoint:** `GET https://scrappa.co/api/zoopla/search`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `section` | string | No | Listing section, such as for-sale or to-rent. Defaults to for-sale. |
| `location` | string | Yes | Location name or geographic identifier, such as sw1a. |
| `page` | integer | No | Result page number. Defaults to 1. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/zoopla/search?section=for-sale&location=sw1a&page=1"
```

## Example response

```json
{
    "success": true,
    "section": "for-sale",
    "location": "sw1a",
    "results": [
        {
            "listingId": "70469141",
            "title": "Two bedroom flat",
            "price": 625000,
            "address": "Westminster, London"
        }
    ],
    "pagination": {
        "page": 1,
        "page_size": 25,
        "total_results": 39,
        "total_results_was_limited": false
    },
    "geo": {
        "geoIdentifier": "sw1a",
        "label": "SW1A"
    },
    "silent_empty": false
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 401 | Unauthorized | Authentication is required to use this endpoint. |
| 422 | Validation Error | One or more input parameters are missing or invalid. |
| 404 | Integration Disabled | This integration is currently disabled on the server. Availability is switched per environment, so it can be off during a staged rollout. |
| 500 | Internal Error | The request could not be processed because of a fault in this service, not the data source. No credit is charged. |
| 503 | Unusable Upstream Response | The data source answered but the response could not be used: empty, oversized, undecodable, or carrying errors with no usable data. No credit is charged. |
| 503 | Upstream Unavailable | The data source could not complete this request. Try again later. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
