{
  "openapi": "3.0.1",
  "info": {
    "title": "Rightmove Scraper — UK Listings for Sale & Rent by Area",
    "description": "UK property for sale and to rent, by area, from Rightmove's own search API: one row per listing with price, bedrooms, type, tenure, size, coordinates, photos, key features, status and the agent branch. Optional full property-page details. No browser, no key.",
    "version": "0.1",
    "x-build-id": "pvTraIo8p6JL0kIUg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/insight.solutions~rightmove-property-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-insight.solutions-rightmove-property-api",
        "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/insight.solutions~rightmove-property-api/runs": {
      "post": {
        "operationId": "runs-sync-insight.solutions-rightmove-property-api",
        "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/insight.solutions~rightmove-property-api/run-sync": {
      "post": {
        "operationId": "run-sync-insight.solutions-rightmove-property-api",
        "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": [
          "locations"
        ],
        "properties": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "One entry per area. Three forms work: a Rightmove location identifier (`REGION^93917` is Greater London; `OUTCODE^…`, `POSTCODE^…` and `STATION^…` work too), a Rightmove search URL that carries `locationIdentifier=` (run the search on rightmove.co.uk and paste the results page's address), or the name of one of the large UK cities in the bundled table (London, Manchester, Birmingham, Leeds, Glasgow, Edinburgh and others; see the README). Anything else comes back as a free `unresolved` row telling you to paste a URL. The same area twice is searched once.",
            "items": {
              "type": "string"
            }
          },
          "channel": {
            "title": "For sale or to rent",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "`sale` for properties for sale, `rent` for properties to rent. Rent prices come with `priceFrequency` (monthly or weekly) and `monthlyRent`.",
            "default": "sale"
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "newest",
              "oldest",
              "price-asc",
              "price-desc"
            ],
            "type": "string",
            "description": "Rightmove's own sort orders: `newest` (newest listed — by last update, so a fresh price reduction counts as new), `oldest`, `price-asc`, `price-desc`. With 1,008 results per search at most, the sort decides which ones you get.",
            "default": "newest"
          },
          "maxListingsPerLocation": {
            "title": "Listings per location",
            "minimum": 1,
            "maximum": 1008,
            "type": "integer",
            "description": "How many listings to return per location. Rightmove serves a search 24 listings a page (plus one featured listing on most pages) and stops at 42 pages — 1,008 results — whatever the total; for a bigger area, split it into smaller ones or narrow the filters.",
            "default": 240
          },
          "minPrice": {
            "title": "Minimum price (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Sent to Rightmove as `minPrice`. For rentals it is per calendar month. 0 or empty for no minimum."
          },
          "maxPrice": {
            "title": "Maximum price (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Sent to Rightmove as `maxPrice`. For rentals it is per calendar month. 0 or empty for no maximum."
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Sent to Rightmove as `minBedrooms`. 0 is a studio, i.e. no minimum."
          },
          "maxBedrooms": {
            "title": "Maximum bedrooms",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Applied by this Actor to the listings Rightmove returns (no listing above it is returned or billed). 0 means studios only."
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Keep only these types, applied by this Actor to each listing's property sub-type. `house` takes every house: detached, semi-detached, terraced and the rest. Empty for every type.",
            "items": {
              "type": "string",
              "enum": [
                "detached",
                "semi-detached",
                "terraced",
                "house",
                "bungalow",
                "flat",
                "house-share",
                "land",
                "park-home"
              ],
              "enumTitles": [
                "Detached",
                "Semi-detached",
                "Terraced",
                "Any house",
                "Bungalow",
                "Flat / apartment",
                "House share / room",
                "Land",
                "Park home"
              ]
            },
            "default": []
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only listings whose summary, key features, type or address contain every one of these words (case-insensitive), for example `garden`, `parking`. Applied by this Actor.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "addedWithinDays": {
            "title": "Added in the last N days",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only listings first published — or re-added — in the last N days. Price reductions do not count. With `sortBy: newest` the Actor stops paging once a page is older than the window. 0 for any time."
          },
          "radiusMiles": {
            "title": "Radius",
            "enum": [
              "0.0",
              "0.25",
              "0.5",
              "1.0",
              "3.0",
              "5.0",
              "10.0",
              "15.0",
              "20.0",
              "30.0",
              "40.0"
            ],
            "type": "string",
            "description": "Widen the area by this many miles, as Rightmove's own radius select does.",
            "default": "0.0"
          },
          "includeDetails": {
            "title": "Read each property page",
            "type": "boolean",
            "description": "Also open every listing's own page for the full description, council-tax band, lease length, service charge and ground rent, floorplan and EPC images, nearest stations and the agent's company. One extra request per listing (about 420 KB), so a run is several times slower; the price per listing is the same.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Locations in parallel",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many locations are searched at once, and how many property pages are read at once. Pages within one search are read in order, 250–600 ms apart.",
            "default": 4
          },
          "maxRunSecs": {
            "title": "Maximum run time (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "Wall-clock budget for the whole run. When it is reached the Actor stops, keeps — and bills — the listings it already returned, and writes a free `timeout` row for each location it did not finish.",
            "default": 240
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Rightmove's search API answers Apify's datacenter proxy, the cheap one, and its cost is inside the per-listing price. If a run comes back with a free `blocked` row, switch this to the RESIDENTIAL group.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}