{
  "openapi": "3.0.1",
  "info": {
    "title": "Rightmove Scraper: UK Property Listings, Sold Prices, Yield",
    "description": "Scrape UK homes for sale and to rent from Rightmove (plus OnTheMarket, optional) in one format. Track new listings and price drops daily, get a free rental yield summary by outcode, and sold prices for England and Wales. Not affiliated with Rightmove or OnTheMarket.",
    "version": "0.2",
    "x-build-id": "1J2CeLRgoMh4ZUFYF"
  },
  "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": "What the run does. search (default): listings from place names or search URLs. listing: one detailed row per listing URL, detail pages always fetched and charged. sold-prices: HM Land Registry sale history for England and Wales via Rightmove, from place names or outcodes. Use one mode per run. Listing rows cost $1.25 per 1,000 on Free, plus $1.25 per 1,000 for each detail page.",
            "default": "search"
          },
          "portals": {
            "title": "Portals",
            "minItems": 1,
            "maxItems": 3,
            "type": "array",
            "description": "Which portals place names in locations run on: any of rightmove (default), onthemarket, zoopla. Zoopla is unavailable at the moment and is skipped with a note, with nothing charged. Pasted URLs always go to their own portal. maxItems is shared across the portals. Search mode only. Example: [\"rightmove\", \"onthemarket\"].",
            "items": {
              "type": "string",
              "enum": [
                "rightmove",
                "zoopla",
                "onthemarket"
              ],
              "enumTitles": [
                "Rightmove",
                "Zoopla",
                "OnTheMarket"
              ]
            },
            "default": [
              "rightmove"
            ]
          },
          "searchUrls": {
            "title": "Search URLs",
            "maxItems": 50,
            "type": "array",
            "description": "Portal search-result page links, up to 50, one search each. Only paste a link the user supplied; never invent one. Links from other sites are ignored and listed in RUN_SUMMARY. In sold-prices mode, a Rightmove house-prices area page. Used in search and sold-prices modes. Each returned row is a listing charge of $1.25 per 1,000 on Free.",
            "items": {
              "type": "string",
              "maxLength": 2048
            },
            "default": []
          },
          "locations": {
            "title": "Locations",
            "maxItems": 50,
            "type": "array",
            "description": "Place names to search, up to 50, on every selected portal; Rightmove and OnTheMarket also accept outcodes such as LS6. The form starts with Leeds; the API default is empty, which searches London. In sold-prices mode: a place name or outcode; full postcodes are refused. Example: [\"Leeds\", \"LS6\"]. 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": "What locations searches look for: for-sale (default), to-rent or new-homes. new-homes works with locations on OnTheMarket only; Rightmove and Zoopla skip it with a note. Pasted search URLs keep their own type. Search mode only.",
            "default": "for-sale"
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price in GBP, a whole number of 0 or more, no default (no limit). Applies to locations searches only, not pasted URLs. OnTheMarket: applied by the Actor after fetching. Search mode only. Example: 250000."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price in GBP, a whole number of 0 or more, no default (no limit). Applies to locations searches only, not pasted URLs. OnTheMarket: applied by the Actor after fetching. Search mode only. Example: 400000."
          },
          "minBeds": {
            "title": "Min beds",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Fewest bedrooms, a whole number from 0 to 20, no default (no limit). Applies to locations searches only. Search mode only. Example: 2."
          },
          "maxBeds": {
            "title": "Max beds",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Most bedrooms, a whole number from 0 to 20, no default (no limit). Applies to locations searches only. Search mode only. Example: 4."
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "detached",
              "semi-detached",
              "terraced",
              "flat",
              "bungalow",
              "land"
            ],
            "type": "string",
            "description": "Only one property type: detached, semi-detached, terraced, flat, bungalow or land. Default: all types. Applies to locations searches. Sold prices has no bungalow or land, and OnTheMarket has no land; 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, no default. Rightmove rounds down to 0, 0.5, 1, 3, 5 or 10; OnTheMarket ignores it, with a note. Applies to locations searches. Search mode only."
          },
          "addedSinceDays": {
            "title": "Added since (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only listings added in the last N days, a whole number from 1 to 365, no default. Rightmove rounds down to 1, 3, 7 or 14; Zoopla (unavailable) to 1 or 7; OnTheMarket locations are skipped with a note. Applies to locations searches. Search mode only."
          },
          "soldWithinYears": {
            "title": "Sold within (years)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Only sales in the last N years, a whole number from 1 to 30, rounded down to 1, 2, 3, 5, 10, 15, 20 or 30. Empty means all years. Applies to place names and outcodes. Sold-prices mode only. Each sold row costs $3.00 per 1,000 on Free."
          },
          "summary": {
            "title": "Area summary",
            "enum": [
              "rentalYield"
            ],
            "type": "string",
            "description": "Adds one free summary record, SUMMARY, to the run's key-value store, built from this run's own listings by outcode. rentalYield: runs for sale and then to rent in each of your locations (maxItems covers both searches) and gives the median asking rent and asking price by bedrooms, with the gross yield before costs. Figures are left empty under 5 listings. Needs locations and listingType for-sale, and no minPrice or maxPrice. Not advice. Search mode only."
          },
          "listingUrls": {
            "title": "Listing URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Links to individual listing pages on Rightmove, Zoopla (unavailable) or OnTheMarket, 1 to 1,000, required in listing mode. Only paste a link the user supplied; never invent one. Each link returns one detailed row: $1.25 per 1,000 for the listing plus $1.25 per 1,000 for the detail page on Free. Listing mode only.",
            "items": {
              "type": "string",
              "maxLength": 2048
            },
            "default": []
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Most rows the run returns, 0 to 1,000; 0 means 1,000. API default 40; the Console form starts at 10. Shared across portals. With monitorId it counts listings examined, not rows returned. Set it low to test. Cost is per row returned: $1.25 per 1,000 on Free, less on higher plans. All modes.",
            "default": 40
          },
          "includeDetails": {
            "title": "Include details",
            "type": "boolean",
            "description": "false (default) or true. When true, each listing's detail page is also fetched, adding EPC rating, floor area, tenure, council tax band and more. Costs a further $1.25 per 1,000 listings on Free, less on higher plans. Always on in listing mode. Set true only when you need those fields. Search mode only.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor id",
            "type": "string",
            "description": "Optional name for a repeat search: lowercase letters, digits and hyphens, up to 64, starting with a letter or digit. Returns only listings new or changed since the last run with the same id, with changeType, changedFields and previous. First run returns everything. Listing charges apply to returned rows; a run that read listings also pays the $0.005 run start. Search mode only. Example: leeds-daily."
          },
          "includePlanningConstraints": {
            "title": "Include planning constraints",
            "type": "boolean",
            "description": "false (default) or true. When true, adds planning constraints (green belt, flood zone, conservation area and similar) at each listing's coordinates from the government planning data service, England only; data may have gaps. $5.00 per 1,000 listings answered, on Free. Search and listing modes.",
            "default": false
          },
          "includePlanningApplications": {
            "title": "Include planning applications",
            "type": "boolean",
            "description": "false (default) or true. Currently unavailable while the underlying copy of the data is not refreshed. When available, adds nearby planning applications, $10.00 per 1,000 listings answered, on Free; areas not covered are not charged. Search and listing modes.",
            "default": false
          },
          "planningRadiusMetres": {
            "title": "Planning applications radius (metres)",
            "minimum": 25,
            "maximum": 500,
            "type": "integer",
            "description": "Distance from each listing to look for planning applications, a whole number from 25 to 500 metres. Default 150. Used with includePlanningApplications, which is currently unavailable. Search and listing modes.",
            "default": 150
          },
          "planningYears": {
            "title": "Planning applications years",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Years back to look for planning applications, 1 to 3. Default 1. Nothing before the data copy's start date is included. Used with includePlanningApplications, which is currently unavailable. 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}