{
  "openapi": "3.0.1",
  "info": {
    "title": "Rightmove Property Scraper",
    "description": "Scrapes property listings from Rightmove search results — prices, addresses, agents, coordinates, and optional full per-property details.",
    "version": "0.1",
    "x-build-id": "cQwZc4Gxd7CiwcaFM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/keklik~rightmove-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-keklik-rightmove-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/keklik~rightmove-scraper/runs": {
      "post": {
        "operationId": "runs-sync-keklik-rightmove-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/keklik~rightmove-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-keklik-rightmove-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": {
          "startUrls": {
            "title": "Rightmove search URLs",
            "type": "array",
            "description": "Rightmove links: search results (for sale, to rent, new homes, student, commercial, overseas), single property pages, sold house prices searches or estate agent searches and branch pages. Every filter in a link is kept. Or leave this empty and type locations below.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Towns, cities, areas, postcodes, postcode districts or stations, one per line, such as Manchester, Camden, SW1A 1AA, M1 or Kings Cross Station. Each one becomes its own search, using Rightmove's best match for the name. A Rightmove location ID such as REGION^904 also works. For overseas, type a country or region instead, such as Spain or Costa del Sol.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search for",
            "enum": [
              "sale",
              "rent",
              "newHomes",
              "students",
              "commercialSale",
              "commercialRent",
              "overseas",
              "soldPrices",
              "agents"
            ],
            "type": "string",
            "description": "Which Rightmove search to run for the locations. Overseas takes a country or region, such as Spain, Portugal or Costa del Sol. Sold house prices gives one row per home with every sale since 1995. Estate agents gives one row per agent branch.",
            "default": "sale"
          },
          "radius": {
            "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": "How far around each location to search.",
            "default": "0.0"
          },
          "minPrice": {
            "title": "Min price (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price. For rentals, the monthly rent. For overseas, in pounds."
          },
          "maxPrice": {
            "title": "Max price (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price. For rentals, the monthly rent. For overseas, in pounds."
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Fewest bedrooms. 0 includes studios."
          },
          "maxBedrooms": {
            "title": "Max bedrooms",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Most bedrooms."
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Fewest bathrooms."
          },
          "maxBathrooms": {
            "title": "Max bathrooms",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Most bathrooms."
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Only these types of home. Leave empty for all. For sold house prices: detached, semi-detached, terraced and flat, one search each.",
            "items": {
              "type": "string",
              "enum": [
                "detached",
                "semi-detached",
                "terraced",
                "flat",
                "bungalow",
                "land",
                "park-home",
                "private-halls"
              ],
              "enumTitles": [
                "Detached",
                "Semi-detached",
                "Terraced",
                "Flat",
                "Bungalow",
                "Land",
                "Park home",
                "Private halls (students)"
              ]
            }
          },
          "commercialSectors": {
            "title": "Commercial sectors",
            "type": "array",
            "description": "For commercial searches: only these sectors, as Rightmove groups them. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "offices",
                "retail",
                "leisureHospitality",
                "industrialWarehousing",
                "landDevelopment",
                "other"
              ],
              "enumTitles": [
                "Office",
                "Retail",
                "Leisure & hospitality",
                "Industrial & warehouse",
                "Land & development",
                "Other"
              ]
            }
          },
          "minSize": {
            "title": "Min size (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "Smallest floor area in square feet. Mostly for commercial property; homes without a size are left out."
          },
          "maxSize": {
            "title": "Max size (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "Largest floor area in square feet."
          },
          "tenureTypes": {
            "title": "Tenure",
            "type": "array",
            "description": "Only these tenures. Leave empty for all. For sold house prices: freehold or leasehold, one of them.",
            "items": {
              "type": "string",
              "enum": [
                "FREEHOLD",
                "LEASEHOLD",
                "SHARE_OF_FREEHOLD"
              ],
              "enumTitles": [
                "Freehold",
                "Leasehold",
                "Share of freehold"
              ]
            }
          },
          "mustHave": {
            "title": "Must have",
            "type": "array",
            "description": "Only listings with all of these.",
            "items": {
              "type": "string",
              "enum": [
                "garden",
                "parking",
                "newHome",
                "retirement",
                "sharedOwnership",
                "auction",
                "houseShare",
                "student",
                "buildToRent",
                "businessForSale"
              ],
              "enumTitles": [
                "Garden",
                "Parking",
                "New home",
                "Retirement home",
                "Buying schemes (shared ownership)",
                "Auction",
                "House share",
                "Student accommodation",
                "Built for renters",
                "Business for sale"
              ]
            }
          },
          "dontShow": {
            "title": "Don't show",
            "type": "array",
            "description": "Leave out listings with any of these.",
            "items": {
              "type": "string",
              "enum": [
                "garden",
                "parking",
                "newHome",
                "retirement",
                "sharedOwnership",
                "auction",
                "houseShare",
                "student",
                "buildToRent",
                "businessForSale"
              ],
              "enumTitles": [
                "Garden",
                "Parking",
                "New home",
                "Retirement home",
                "Buying schemes (shared ownership)",
                "Auction",
                "House share",
                "Student accommodation",
                "Built for renters",
                "Business for sale"
              ]
            }
          },
          "includeUnderOffer": {
            "title": "Include Sold STC, Under offer and Let agreed",
            "type": "boolean",
            "description": "Also return homes already sold subject to contract, under offer or let agreed. Off: only homes still available, as on Rightmove.",
            "default": false
          },
          "furnishTypes": {
            "title": "Furnishing",
            "type": "array",
            "description": "For rentals: only these. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "furnished",
                "partFurnished",
                "unfurnished"
              ],
              "enumTitles": [
                "Furnished",
                "Part furnished",
                "Unfurnished"
              ]
            }
          },
          "shortTermLets": {
            "title": "Short-term lets only",
            "type": "boolean",
            "description": "For rentals: only short-term lets.",
            "default": false
          },
          "moveInBy": {
            "title": "Move in by",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "For rentals: only homes available to move in by this date."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "lowestPrice",
              "highestPrice",
              "smallest",
              "largest"
            ],
            "type": "string",
            "description": "Order of the results. With a Listed after date the search is always newest first. Leave empty for Rightmove's default. For sold house prices: lowest or highest price; otherwise most recently sold first."
          },
          "soldInYears": {
            "title": "Sold in the last (years)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "For sold house prices: only homes sold in this many years. Leave empty for every sale since 1995."
          },
          "agentType": {
            "title": "Agent type",
            "enum": [
              "ALL",
              "SALES",
              "LETTINGS"
            ],
            "type": "string",
            "description": "For estate agents: every branch, or only those that handle sales or lettings.",
            "default": "ALL"
          },
          "brandName": {
            "title": "Agent name",
            "type": "string",
            "description": "For estate agents: only branches of agents whose name matches, such as Foxtons."
          },
          "listedAfter": {
            "title": "Listed after",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(minute|hour|day|week|month|year)s?$",
            "type": "string",
            "description": "Only listings added on or after this date (UK time), or within a span back from now such as 1 day or 2 weeks. Through the JSON input you can also give hours (24 hours) or a UTC time (2026-10-15T08:00Z). Each search is then sorted by newest so the run stops once it passes this date. Leave empty for listings added at any time."
          },
          "listedBefore": {
            "title": "Listed before",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(minute|hour|day|week|month|year)s?$",
            "type": "string",
            "description": "Only listings added before this date. A date includes that whole day (2026-10-20 keeps listings added up to midnight UK time); a span such as 7 days keeps listings added more than 7 days ago. Leave empty for listings added up to now."
          },
          "includePriceReductions": {
            "title": "Include price reductions",
            "type": "boolean",
            "description": "Also keep older listings whose price was reduced within the dates, as Rightmove's own \"Added to site\" filter does. Off: only listings added within the dates.",
            "default": false
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed since the last run",
            "type": "boolean",
            "description": "Compare every row with the last run of the same search: new rows and rows whose price, status, rooms, size, tenure or label changed are saved, each with a change field naming what changed, old and new. Unchanged rows are left out and not charged. The first run saves everything as new, to compare the next run with. Sold prices compare the last sale; agents their name, phones, address and services.",
            "default": false
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Optional. Runs with the same name compare with each other, even if you change the search. Leave empty to compare runs with exactly the same links, locations and filters."
          },
          "resetWatch": {
            "title": "Start the watch over",
            "type": "boolean",
            "description": "Forget earlier runs: every row counts as new again, and later runs compare with this one.",
            "default": false
          },
          "fetchPropertyDetails": {
            "title": "Fetch full property details",
            "type": "boolean",
            "description": "Add full property details to every listing: full description, postcode, council tax band, service charge, ground rent, lease years remaining, nearest stations, EPC, floorplans, all image URLs. Takes longer and is billed as an add-on per property. For estate agents, adds the full branch profile instead.",
            "default": false
          },
          "includeSaleHistory": {
            "title": "Include past sale prices",
            "type": "boolean",
            "description": "With full property details: also each home's past sales, the year, price and change since the sale before, from Land Registry data as Rightmove shows it. One more request per property, so a bit slower. Needs \"Fetch full property details\" on.",
            "default": false
          },
          "fetchAgentProfiles": {
            "title": "Add agent profiles",
            "type": "boolean",
            "description": "Add the listing agent's full Rightmove profile to each listing: homes for sale and to let right now, recently sold and let homes, services, sales and lettings phone lines, memberships, descriptions and the branch's map position. Billed as an add-on once per agent branch per run, so many listings from one agent cost one profile.",
            "default": false
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many unique listings in total. Leave empty to collect everything available (Rightmove serves at most 1,008 listings per search — split large searches by price band or area to get more)."
          },
          "maxPagesPerUrl": {
            "title": "Max pages per search URL",
            "minimum": 1,
            "type": "integer",
            "description": "Limit the number of result pages fetched per search URL (~24 listings per page). Leave empty for all pages."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxies to route requests through. Apify datacenter proxies (the default) work well for Rightmove — residential is not needed. You can also supply your own custom proxy URLs.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}