{
  "openapi": "3.0.1",
  "info": {
    "title": "Zoopla Uk Property Scraper with Contacts & Features",
    "description": "Extract structured Zoopla UK sale and rental listings with asking prices, full descriptions, property specs, photos, floor plans, coordinates, agency details and public phone numbers. Built for market research, comps, inventory monitoring, CRM enrichment, BI and AI workflows.",
    "version": "0.0",
    "x-build-id": "k0g8fnUq3xmX61Rq9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fatihtahta~zoopla-uk-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fatihtahta-zoopla-uk-property-scraper",
        "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/fatihtahta~zoopla-uk-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fatihtahta-zoopla-uk-property-scraper",
        "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/fatihtahta~zoopla-uk-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fatihtahta-zoopla-uk-property-scraper",
        "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",
        "properties": {
          "deal_type": {
            "title": "Choose Listing Mode (buy or rent)",
            "enum": [
              "buy",
              "rent"
            ],
            "type": "string",
            "description": "Choose Buy for properties listed for sale or Rent for rental listings. This choice sets the search path and determines which sale-only or rental-only filters apply when the actor builds the search.",
            "default": "buy"
          },
          "location": {
            "title": "Set a UK Location (city, postcode, neighborhood, county, or market)",
            "type": "string",
            "description": "Enter a Zoopla-supported UK location such as South London, Birmingham, SW1A, or West Midlands. Use one focused location per run for cleaner market comparisons, scheduled monitoring, CRM imports, or dashboard refreshes; leave it empty for a broader mode-based search."
          },
          "radius": {
            "title": "Set the Search Radius Around the Location",
            "enum": [
              "0",
              "0.25",
              "0.5",
              "1",
              "3",
              "5",
              "10",
              "15",
              "20",
              "30",
              "40"
            ],
            "type": "string",
            "description": "Choose how far beyond the selected location Zoopla should look. A larger radius broadens discovery across nearby areas; choose This area only for tighter neighborhood comparisons and more targeted monitoring."
          },
          "min_bedroom": {
            "title": "Set the Minimum Number of Bedrooms",
            "enum": [
              "0",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10"
            ],
            "type": "string",
            "description": "Set the fewest bedrooms a matching property may have. Select Studio or more to include studio listings alongside properties with bedrooms."
          },
          "max_bedroom": {
            "title": "Set the Maximum Number of Bedrooms",
            "enum": [
              "0",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10"
            ],
            "type": "string",
            "description": "Set the greatest number of bedrooms a matching property may have. Select Studios only when the search should exclude properties with one or more bedrooms."
          },
          "min_bathroom": {
            "title": "Set the Minimum Number of Bathrooms",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10"
            ],
            "type": "string",
            "description": "Set the fewest bathrooms a matching property may have. Pair this with bedroom and property-type filters when building comparable family-home or multi-occupancy datasets."
          },
          "max_bathroom": {
            "title": "Set the Maximum Number of Bathrooms",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10"
            ],
            "type": "string",
            "description": "Set the greatest number of bathrooms a matching property may have. Leave empty when bathroom count should not narrow the search."
          },
          "min_price": {
            "title": "Set the Minimum Asking Price or Monthly Rent (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Enter the lowest listing price in pounds. Buy searches use sale asking prices; Rent searches use Zoopla's monthly rent scale, so use values that match the selected listing mode."
          },
          "max_price": {
            "title": "Set the Maximum Asking Price or Monthly Rent (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Enter the highest listing price in pounds. Use a focused range for comparable market slices, price monitoring, dashboards, or bounded CRM enrichment; leave empty when no upper price cap is needed."
          },
          "property_type": {
            "title": "Choose One or More Property Types",
            "uniqueItems": true,
            "type": "array",
            "description": "Select the residential categories that should match, such as detached homes, terraced homes, flats, or farms and land. Leave empty to include every property type available for the selected search scope.",
            "items": {
              "type": "string",
              "enum": [
                "semi-detached",
                "detached",
                "terraced",
                "bungalow",
                "park-home",
                "flats",
                "farms-land"
              ],
              "enumTitles": [
                "Semi-detached",
                "Detached",
                "Terraced",
                "Bungalow",
                "Park home",
                "Flats",
                "Farms and land"
              ]
            }
          },
          "retirement_home": {
            "title": "Choose How to Handle Retirement Homes",
            "enum": [
              "include",
              "exclude",
              "only"
            ],
            "type": "string",
            "description": "Include retirement homes with other matches, exclude them, or return only retirement-home listings. Leave empty when retirement status should not narrow the dataset."
          },
          "features": {
            "title": "Require Specific Property Features",
            "uniqueItems": true,
            "type": "array",
            "description": "Select one or more Zoopla-supported features, styles, or conditions that matching listings should contain. Multiple selections make the search more targeted and may substantially reduce the number of results.",
            "items": {
              "type": "string",
              "enum": [
                "period-property",
                "cottage",
                "modern",
                "ev-charging",
                "utility-room",
                "basement",
                "conservatory",
                "home-office",
                "en-suite",
                "bathtub",
                "patio",
                "kitchen-island",
                "needs-modernisation"
              ],
              "enumTitles": [
                "Period property",
                "Cottage",
                "Modern",
                "EV charging",
                "Utility room",
                "Basement",
                "Conservatory",
                "Home office",
                "En-suite",
                "Bathtub",
                "Patio",
                "Kitchen island",
                "Needs modernisation"
              ]
            }
          },
          "publication_date": {
            "title": "Filter by When the Listing Was Added",
            "enum": [
              "24-hours",
              "3-days",
              "7-days",
              "14-days",
              "30-days"
            ],
            "type": "string",
            "description": "Limit results to listings added within the selected period. Use shorter windows for alerts and frequent monitoring, or longer windows for broader market analysis and backfills."
          },
          "keyword": {
            "title": "Add a Listing Keyword",
            "type": "string",
            "description": "Enter optional free text such as balcony, air conditioning, or parking to narrow the Zoopla search. Use precise terms because keyword matching can exclude otherwise relevant listings."
          },
          "rental_house_share": {
            "title": "Choose How to Handle Rental House Shares",
            "enum": [
              "include",
              "exclude",
              "only"
            ],
            "type": "string",
            "description": "For Rent searches, include shared accommodation with other rentals, exclude it, or return only house-share listings. This field does not apply to Buy searches."
          },
          "rental_student_accommodation": {
            "title": "Choose How to Handle Student Accommodation",
            "enum": [
              "include",
              "exclude",
              "only"
            ],
            "type": "string",
            "description": "For Rent searches, include student accommodation with other rentals, exclude it, or return only student listings. This field does not apply to Buy searches."
          },
          "rental_availability": {
            "title": "Filter Rentals by Availability Window",
            "enum": [
              "now",
              "one-month",
              "three-months",
              "six-months",
              "twelve-months"
            ],
            "type": "string",
            "description": "For Rent searches, choose how soon a property must be available. Use Available now for immediate-move monitoring, or a longer window for forward planning and relocation workflows."
          },
          "furnishment": {
            "title": "Choose the Required Furnishing State",
            "enum": [
              "furnished",
              "part-furnished",
              "unfurnished"
            ],
            "type": "string",
            "description": "For Rent searches, return furnished, part-furnished, or unfurnished properties. Leave empty when furnishing should not narrow the rental dataset."
          },
          "include_let_agreed": {
            "title": "Include Rentals Marked Let Agreed",
            "type": "boolean",
            "description": "Enable this to retain rental listings already marked let or let agreed, which can be useful for market history and monitoring. Keep it disabled when the dataset should focus on currently marketed rentals.",
            "default": false
          },
          "sale_new_build_home": {
            "title": "Choose How to Handle New-Build Homes",
            "enum": [
              "include",
              "exclude",
              "only"
            ],
            "type": "string",
            "description": "For Buy searches, include new-build homes with other properties, exclude them, or return only new-build listings. This field does not apply to Rent searches."
          },
          "sale_shared_ownership": {
            "title": "Choose How to Handle Shared-Ownership Listings",
            "enum": [
              "include",
              "exclude",
              "only"
            ],
            "type": "string",
            "description": "For Buy searches, include shared-ownership listings, exclude them, or return only shared-ownership properties. Leave empty when ownership scheme should not narrow the dataset."
          },
          "sale_owner_type": {
            "title": "Choose Accepted Ownership or Tenure Types",
            "uniqueItems": true,
            "type": "array",
            "description": "For Buy searches, select leasehold, freehold, or share of freehold. Multiple selections broaden the accepted ownership types; leave empty to avoid filtering by tenure.",
            "items": {
              "type": "string",
              "enum": [
                "leasehold",
                "freehold",
                "share-of-freehold"
              ],
              "enumTitles": [
                "Leasehold",
                "Freehold",
                "Share of freehold"
              ]
            }
          },
          "sale_property_status": {
            "title": "Filter Sale Listings by Property Status",
            "uniqueItems": true,
            "type": "array",
            "description": "For Buy searches, select supported status signals such as chain-free, reduced-price, or under offer and sold STC. Use these filters for targeted alerts, pipeline review, or price-change monitoring.",
            "items": {
              "type": "string",
              "enum": [
                "chain-free",
                "reduced-price",
                "under-offer-or-sold-stc"
              ],
              "enumTitles": [
                "Chain-free",
                "Reduced price",
                "Under offer or sold STC"
              ]
            }
          },
          "sale_low_deposit_mortgage": {
            "title": "Require Supported Low-Deposit Mortgage Offers",
            "type": "boolean",
            "description": "Enable this for Buy searches that should only return listings carrying Zoopla's supported low-deposit mortgage incentives. Keep it disabled when mortgage incentive status should not restrict results.",
            "default": false
          },
          "url": {
            "title": "Add Zoopla Listing URLs (one per line)",
            "uniqueItems": true,
            "type": "array",
            "description": "Paste individual property-detail URLs such as `https://www.zoopla.co.uk/for-sale/details/12345678/`, `https://www.zoopla.co.uk/to-rent/details/12345678/`, or `https://www.zoopla.co.uk/new-homes/details/12345678/`. Each valid URL produces at most one listing record.",
            "items": {
              "type": "string",
              "pattern": "^https://(www\\.)?zoopla\\.co\\.uk/(for-sale|to-rent|new-homes)/details/[0-9]+/?(?:[?#].*)?$"
            }
          },
          "enrich_data": {
            "title": "Collect Richer Details from Individual Listings",
            "type": "boolean",
            "description": "Keep enabled for detailed ETL, CRM enrichment, research, or AI-assisted review. Disable it for faster, lightweight location searches. Individual URLs always read their detail pages because there is no search-result record to use as a fallback.",
            "default": true
          },
          "maximize_coverage": {
            "title": "Collect More Matching Listings Beyond the Visible Search Cap",
            "type": "boolean",
            "description": "This option applies when the requested limit is at least 1,100 listings. It preserves the selected deal type and filters while expanding collection for oversized searches; keep it disabled for faster exploratory runs where the first visible matching set is sufficient.",
            "default": true
          },
          "limit": {
            "title": "Set the Maximum Number of Listings to Save",
            "minimum": 1,
            "type": "integer",
            "description": "Choose the maximum number of property records to save. Leave empty to continue through the listings available to the selected search scope, or start with a small value to confirm the record shape before increasing the run size."
          },
          "mcpConnectors": {
            "title": "Deliver the Run Summary to MCP Connectors",
            "uniqueItems": true,
            "type": "array",
            "description": "Choose user-authorized connectors to receive a compact run summary after the listing dataset, summary report and map are saved. The delivery includes run totals and available Apify output links, not the full listing dataset. Leave empty to keep all outputs in Apify only.",
            "default": []
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}