# Zoopla Urls (`hello.datawizard-owner/zoopla-urls`)

Zoopla-Urls Apify Actor: Easily extract key property details from Zoopla, including price, description, and agent info. Uses Apify proxies for reliable scraping. Ideal for real estate pros and data analysts. Simple: input URLs, run and Get started today!

- **URL**: https://beta-securitybyobscurity.apify.com/hello.datawizard-owner/zoopla-urls.md
- **Developed by:** [datawizards](https://beta-securitybyobscurity.apify.com/hello.datawizard-owner) (community)
- **Categories:** Real estate, Automation, Agents
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$15.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.
You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

# README

### Zoopla-Urls Apify Actor

Welcome to the **Zoopla-Urls** Apify Actor! This powerful tool is designed to extract detailed property information from Zoopla, one of the UK's top property websites. Ideal for real estate professionals, data analysts, or anyone needing property data, this actor simplifies scraping Zoopla listings with ease.

### Features

- **Comprehensive Property Data Extraction**: Extracts key details such as:
  - Listing ID
  - Title
  - Property type (e.g., flat, house)
  - Price
  - Description
  - Number of bedrooms and bathrooms
  - Address
  - Coordinates (latitude and longitude)
  - Features
  - Images
  - Agent name and contact number
- **Proxy Support**: Leverages Apify's proxy services for reliable, anonymous scraping.
- **Simple to Use**: Input a list of Zoopla property URLs, and let the actor do the work.
- **SEO-Optimized Output**: Structured data ready for integration into websites or applications.

### Input

The actor requires a JSON input with the following structure:

```json
{
  "urls": [
    "https://www.zoopla.co.uk/new-homes/details/70439341/?featured=1"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

- **`urls`**: An array of Zoopla property URLs to scrape.
- **`proxyConfiguration`**: Proxy settings for reliable scraping. Residential proxies are recommended.

### Output

The actor returns a JSON array with detailed property data for each URL. Example output:

```json
[
  {
    "Listing_Id": "70439341",
    "Title": "Newmarket Road, Teversham, Cambridge CB5, New home, 2 bed flat for sale, £97,500 - Zoopla",
    "Listing_Type": "flat",
    "Listing_Price": 97500,
    "Listing_Description": "A new 2 bed flat for sale in Newmarket Road, Teversham, Cambridge CB5, selling for £97,500 from L&Q - Marleigh. See property details on Zoopla or browse all our range of properties in Newmarket Road, Teversham, Cambridge CB5.",
    "Bedrooms": 2,
    "Bathrooms": null,
    "address": "Newmarket Road, Teversham, Cambridge CB5",
    "Coordinates": {
      "latitude": 52.211394,
      "longitude": 0.181133
    },
    "Listing_Features": [
      "Reserve a brand new Shared Ownership home between 1 - 30 June and receive £1,000 towards buying costs*!",
      "All homes are ready to move into now - book your appointment to view these homes in-person!",
      "Prices start from £97,500 for a 25% share. Full market value of £390,000",
      "Open-plan living/dining/kitchen area with integrated appliances",
      "Private patio area",
      "Bedroom one boasts an ensuite",
      "All homes will be finished to a fully inclusive specification and complete with private outdoor space and allocated parking",
      "Cycle to Cambridge North station in just over 10 minutes*",
      "Travel to London Kings Cross in 1 hour*"
    ],
    "Images": [
      "https://lc.zoocdn.com/9212f810dd73f4da0e07d5d7b2941ea5858b96d2.jpg",
      "https://lc.zoocdn.com/8cabca6991f4c7c1903099629e97ab8b59154bca.jpg",
      "https://lc.zoocdn.com/69f9024575ae57a6d5314cb1c71265b1f01832b3.jpg",
      "https://lc.zoocdn.com/4b17aac733c5b8b9efb894dd1106bcce154e88de.jpg",
      "https://lc.zoocdn.com/776a277cd4f4d0698024872a33358c47bb7a4125.jpg",
      "https://lc.zoocdn.com/4b268b7e0646d67578be5b983677606d4f09a661.jpg",
      "https://lc.zoocdn.com/05862c4cb1437c353e32d73c35545fed2aac259e.jpg",
      "https://lc.zoocdn.com/10e5c8a014c9f4c92625bb977dacf0da8a04d9a2.jpg",
      "https://lc.zoocdn.com/0da2868720f18a261f9c5ad3985b8b8f0f1eb53c.jpg",
      "https://lc.zoocdn.com/0fd8926d4379a4b66d5139b10adc98eade49a38a.jpg",
      "https://lc.zoocdn.com/6821ba845f6d41e31b5bb1ddaf834ef7c364643a.jpg",
      "https://lc.zoocdn.com/d9639a744aad2a7e7fb38aca8f740650a056ab75.jpg",
      "https://lc.zoocdn.com/d13b473aa5abab8500356f19e757c65b1f93af3b.jpg",
      "https://lc.zoocdn.com/679650ecbafada8e5db116f5b8cb40c625889857.jpg",
      "https://lc.zoocdn.com/c91093f70c7a98949e1af828dc25756dd0405769.jpg",
      "https://lc.zoocdn.com/c6c2d8ce2c485a7bbbfd5c95f5d5db2728759a7a.jpg",
      "https://lc.zoocdn.com/fcfedf383bb3c3ab1de5bb793debe6f54d3bb36a.jpg"
    ],
    "Agent_Name": "L&Q - Marleigh",
    "Agent_Contact_Number": "01223 801303"
  }
]
```

### Usage

Follow these steps to use the **Zoopla-Urls** Apify Actor:

1. **Sign Up**: Create an account on [Apify](https://apify.com/).
2. **Locate the Actor**: Find "Zoopla-Urls" in the Apify Store.
3. **Set Input**: Add your Zoopla property URLs in the JSON input.
4. **Run It**: Launch the actor and wait for processing.
5. **Download Data**: Retrieve the JSON output once complete.

### Configuration

- **Proxy Settings**: Uses Apify residential proxies by default to prevent blocks. Customize as needed.

### Examples

#### Input Example

```json
{
  "urls": [
    "https://www.zoopla.co.uk/new-homes/details/70439341/?featured=1",
    "https://www.zoopla.co.uk/for-sale/details/12345678"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

#### Output Example

```json
[
  {
    "Listing_Id": "70439341",
    "Title": "Newmarket Road, Teversham, Cambridge CB5, New home, 2 bed flat for sale, £97,500 - Zoopla",
    "Listing_Type": "flat",
    "Listing_Price": 97500,
    // ... other fields
  },
  {
    "Listing_Id": "12345678",
    "Title": "Another Property Title",
    // ... other fields
  }
]
```

### Support

For custom outputs, bug reports, or questions, email us at <hello.datawizard@gmail.com> with "Custom Support" in the subject line. Alternatively, report issues connect with us on [LinkedIn](https://linkedin.com/in/data-wizards-aa8080342).

Thank you for choosing the **Zoopla-Urls** Apify Actor!

# Actor input Schema

## `urls` (type: `array`):

A list of URLs of the web pages you want to scrape data from.

## `proxyConfiguration` (type: `object`):

Specifies proxy servers that will be used by the scraper in order to hide its origin.

## Actor input object example

```json
{
  "urls": [
    "https://www.remax.com/tx/san-antonio/home-details/7809-sandpiper-park-dr-san-antonio-tx-78249/9770276309152446781/M00000616/1844007"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "urls": [
        "https://www.remax.com/tx/san-antonio/home-details/7809-sandpiper-park-dr-san-antonio-tx-78249/9770276309152446781/M00000616/1844007"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("hello.datawizard-owner/zoopla-urls").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 = {
    "urls": ["https://www.remax.com/tx/san-antonio/home-details/7809-sandpiper-park-dr-san-antonio-tx-78249/9770276309152446781/M00000616/1844007"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("hello.datawizard-owner/zoopla-urls").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 '{
  "urls": [
    "https://www.remax.com/tx/san-antonio/home-details/7809-sandpiper-park-dr-san-antonio-tx-78249/9770276309152446781/M00000616/1844007"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call hello.datawizard-owner/zoopla-urls --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zoopla Urls",
        "description": "Zoopla-Urls Apify Actor: Easily extract key property details from Zoopla, including price, description, and agent info. Uses Apify proxies for reliable scraping. Ideal for real estate pros and data analysts. Simple: input URLs, run and Get started today!",
        "version": "0.0",
        "x-build-id": "K67YjCZwzhjTp4s1P"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/hello.datawizard-owner~zoopla-urls/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-hello.datawizard-owner-zoopla-urls",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/hello.datawizard-owner~zoopla-urls/runs": {
            "post": {
                "operationId": "runs-sync-hello.datawizard-owner-zoopla-urls",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/hello.datawizard-owner~zoopla-urls/run-sync": {
            "post": {
                "operationId": "run-sync-hello.datawizard-owner-zoopla-urls",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "urls"
                ],
                "properties": {
                    "urls": {
                        "title": "List of Gartner urls",
                        "type": "array",
                        "description": "A list of URLs of the web pages you want to scrape data from.",
                        "default": [
                            "https://www.remax.com/tx/san-antonio/home-details/7809-sandpiper-park-dr-san-antonio-tx-78249/9770276309152446781/M00000616/1844007"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
