{
  "openapi": "3.0.1",
  "info": {
    "title": "Rightmove, Zoopla & OnTheMarket UK Property Listings + Planning",
    "description": "UK property listings for sale and to rent from Rightmove, Zoopla and OnTheMarket on one schema, plus HM Land Registry sold house prices (England and Wales) and optional nearby planning applications. Data-quality figures: data.yappman.com/data-quality",
    "version": "0.2",
    "x-build-id": "WT0A3iO4l4QJA2f2V"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yappman~uk-property-listings/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yappman-uk-property-listings",
        "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/yappman~uk-property-listings/runs": {
      "post": {
        "operationId": "runs-sync-yappman-uk-property-listings",
        "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/yappman~uk-property-listings/run-sync": {
      "post": {
        "operationId": "run-sync-yappman-uk-property-listings",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "listing",
              "sold-prices"
            ],
            "type": "string",
            "description": "Chooses what the run does: search listings, fetch given listing URLs, or return sold prices (Rightmove, England and Wales, postcode level). Listing mode always fetches and charges detail pages. All modes.",
            "default": "search"
          },
          "portals": {
            "title": "Portals",
            "minItems": 1,
            "maxItems": 3,
            "type": "array",
            "description": "Portals that `locations` and the default search run on, 1 to 3 of rightmove, zoopla, onthemarket. Pasted URLs go to their own portal. `maxItems` is shared across portals. Search mode.",
            "items": {
              "type": "string",
              "enum": [
                "rightmove",
                "zoopla",
                "onthemarket"
              ],
              "enumTitles": [
                "Rightmove",
                "Zoopla",
                "OnTheMarket"
              ]
            },
            "default": [
              "rightmove",
              "zoopla"
            ]
          },
          "searchUrls": {
            "title": "Search URLs",
            "maxItems": 50,
            "type": "array",
            "description": "Portal search pages, up to 50, each run with its own filters. Leave empty unless the user supplied a URL; never write one. In sold-prices mode, a Rightmove house-prices area page. Search and sold-prices modes.",
            "items": {
              "type": "string",
              "maxLength": 2048
            },
            "default": []
          },
          "locations": {
            "title": "Locations",
            "maxItems": 50,
            "type": "array",
            "description": "Place names to search, up to 50, on each selected portal; Rightmove and OnTheMarket also take outcodes such as LS6. In sold-prices mode, a place name or outcode; full postcodes are refused. Search and sold-prices modes.",
            "items": {
              "type": "string",
              "maxLength": 200
            },
            "default": []
          },
          "listingType": {
            "title": "Listing type",
            "enum": [
              "for-sale",
              "to-rent",
              "new-homes"
            ],
            "type": "string",
            "description": "Whether `locations` searches look for homes for sale, to rent or new homes. Only OnTheMarket takes new-homes with `locations`; Rightmove and Zoopla skip them with a note. Search mode.",
            "default": "for-sale"
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in GBP, 0 or more, for `locations` searches. Search mode."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in GBP, 0 or more, for `locations` searches. Search mode."
          },
          "minBeds": {
            "title": "Min beds",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Minimum number of bedrooms, 0 to 20, for `locations` searches. Search mode."
          },
          "maxBeds": {
            "title": "Max beds",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of bedrooms, 0 to 20, for `locations` searches. Search mode."
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "detached",
              "semi-detached",
              "terraced",
              "flat",
              "bungalow",
              "land"
            ],
            "type": "string",
            "description": "Limits `locations` searches to one property type. Sold prices has no bungalow or land and OnTheMarket has no land, so those locations are skipped with a note. Search and sold-prices modes."
          },
          "radiusMiles": {
            "title": "Radius (miles)",
            "minimum": 0,
            "maximum": 40,
            "type": "number",
            "description": "Search radius in miles around each location, 0 to 40, for `locations` searches. Rightmove rounds down to 0, 0.5, 1, 3, 5 or 10; OnTheMarket ignores it, with a note. Search mode."
          },
          "addedSinceDays": {
            "title": "Added since (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only listings added in the last N days, 1 to 365, for `locations`. Rightmove rounds down to 1, 3, 7 or 14, Zoopla to 1 or 7; OnTheMarket locations are skipped with a note. Search mode."
          },
          "soldWithinYears": {
            "title": "Sold within (years)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Only sales in the last N years, 1 to 30, for typed `locations`; rounded down to 1, 2, 3, 5, 10, 15, 20 or 30. Empty means all years. Sold-prices mode."
          },
          "listingUrls": {
            "title": "Listing URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Links to individual listing pages on Rightmove, Zoopla or OnTheMarket, 1 to 1,000, required in listing mode. Leave empty unless the user supplied a URL; never write one. Listing mode.",
            "items": {
              "type": "string",
              "maxLength": 2048
            },
            "default": []
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "The most rows a run returns, 0 to 1,000; 0 means 1,000. Shared across portals in search mode. All modes.",
            "default": 40
          },
          "includeDetails": {
            "title": "Include details",
            "type": "boolean",
            "description": "Fetches each listing's detail page for extra fields such as EPC rating, floor area, tenure and council tax band. Charged as listing-detail; see Pricing. Listing mode always fetches them. Search mode.",
            "default": false
          },
          "includePlanningConstraints": {
            "title": "Include planning constraints",
            "type": "boolean",
            "description": "Adds official planning constraints at each listing's coordinates, England only. Charged as planning-constraints when answered for a point in England; see Pricing. Search and listing modes.",
            "default": false
          },
          "includePlanningApplications": {
            "title": "Include planning applications",
            "type": "boolean",
            "description": "Adds nearby planning applications from a copy of PlanIt's data, leaving out undated ones and those before the copy's start date. Charged as planning-applications, not for not-covered areas; see Pricing. Search and listing modes.",
            "default": false
          },
          "planningRadiusMetres": {
            "title": "Planning applications radius (metres)",
            "minimum": 25,
            "maximum": 500,
            "type": "integer",
            "description": "How far from each listing to look for planning applications, 25 to 500 metres. Used with `includePlanningApplications`. Search and listing modes.",
            "default": 150
          },
          "planningYears": {
            "title": "Planning applications years",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "How many years back to look for planning applications, 1 to 3; nothing before the copy's start date is included. Used with `includePlanningApplications`. Search and listing modes.",
            "default": 1
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}