{
  "openapi": "3.0.1",
  "info": {
    "title": "Rightmove Scraper & New-Listing Monitor - UK Property Data",
    "description": "Turn monitoring on and every later run returns only the listings it has not returned before, so you are never charged for the same property twice. Every Rightmove.co.uk listing as clean JSON: price with its meaning, bedrooms, type, address with coordinates, agency. No agent phones. Unofficial.",
    "version": "0.1",
    "x-build-id": "DECaKRDPPWYy9O8dj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~rightmove-listings/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-rightmove-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/neverempty~rightmove-listings/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-rightmove-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/neverempty~rightmove-listings/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-rightmove-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": {
          "searchUrl": {
            "title": "Rightmove search URL (optional)",
            "type": "string",
            "description": "Paste a Rightmove listing page, for example https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490 or https://www.rightmove.co.uk/property-to-rent/Manchester.html, and the two fields below are ignored. Its price, bedroom, type, radius, must-have and sort settings are kept (the sort in the URL wins over the Sort order field below); a keywords= parameter is dropped because Rightmove ignores it - use the Keywords filter here instead."
          },
          "channel": {
            "title": "For sale or to rent",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "sale = property-for-sale, rent = property-to-rent.",
            "default": "sale"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "A town or area (London, Milton Keynes, Greater Manchester), an outcode (SW1A, M1), or a Rightmove identifier copied from a Rightmove address (REGION^87490, OUTCODE^2506, STATION^5177). Rightmove always resolves a name to some place - Wales is a village in Somerset, Kings Lynn is the station - so every row carries the place Rightmove actually searched in searchedLocation.",
            "default": "London"
          },
          "maxListings": {
            "title": "Maximum properties",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many properties to return. You are charged for the rows you actually receive. Rightmove shows at most 1,008 results per search; narrow the search to see more.",
            "default": 20
          },
          "maxPages": {
            "title": "Maximum listing pages to open",
            "minimum": 0,
            "maximum": 42,
            "type": "integer",
            "description": "A hard stop on how many pages are requested, whatever the filters do. 0 lets the run work it out. Rightmove has 42 pages at most.",
            "default": 0
          },
          "includeSummary": {
            "title": "Include the summary text",
            "type": "boolean",
            "description": "The teaser Rightmove shows on the card. Turn it off for a smaller dataset - the keyword filter still searches it either way.",
            "default": true
          },
          "useProxy": {
            "title": "Use an Apify proxy",
            "type": "boolean",
            "description": "Off by default because Rightmove answers Apify's own network directly. If Rightmove ever starts blocking, the run switches to a proxy on its own.",
            "default": false
          },
          "minPrice": {
            "title": "Minimum price (GBP)",
            "minimum": 0,
            "type": "integer",
            "description": "Applied by Rightmove itself. For sale this is a total; to rent it is per calendar month, the way Rightmove takes it. 0 means no minimum.",
            "default": 0
          },
          "maxPrice": {
            "title": "Maximum price (GBP)",
            "minimum": 0,
            "type": "integer",
            "description": "0 means no maximum. A property with no published price (POA) is kept.",
            "default": 0
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": -1,
            "maximum": 20,
            "type": "integer",
            "description": "-1 turns the filter off. 0 is a studio.",
            "default": -1
          },
          "maxBedrooms": {
            "title": "Maximum bedrooms",
            "minimum": -1,
            "maximum": 20,
            "type": "integer",
            "description": "-1 turns the filter off.",
            "default": -1
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Rightmove's own words. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "detached",
                "semi-detached",
                "terraced",
                "bungalow",
                "flat",
                "land",
                "park-home",
                "private-halls"
              ],
              "enumTitles": [
                "Detached",
                "Semi-detached",
                "Terraced",
                "Bungalow",
                "Flat",
                "Land",
                "Park home",
                "Private halls"
              ]
            },
            "default": []
          },
          "radius": {
            "title": "Search radius (miles)",
            "enum": [
              "0",
              "0.25",
              "0.5",
              "1",
              "3",
              "5",
              "10",
              "15",
              "20",
              "30",
              "40"
            ],
            "type": "string",
            "description": "Rightmove's own steps. 0 means the area itself.",
            "default": "0"
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "newest",
              "oldest",
              "price-high",
              "price-low"
            ],
            "type": "string",
            "description": "newest = Rightmove's 'Newest Listed', which orders by the last update - a new listing or a price reduction. Rightmove's own default on the site is highest price first.",
            "default": "newest"
          },
          "addedOrReducedWithinDays": {
            "title": "Added or reduced within the last N days",
            "enum": [
              "0",
              "1",
              "3",
              "7",
              "14"
            ],
            "type": "string",
            "description": "Rightmove's 'Added to site' filter. Note that Rightmove counts a price reduction as an update, so a property listed months ago and reduced yesterday is included. 0 means no limit. Only 1, 3, 7 or 14 are accepted by Rightmove.",
            "default": "0"
          },
          "mustHave": {
            "title": "Must have",
            "type": "array",
            "description": "Rightmove's own must-have flags.",
            "items": {
              "type": "string",
              "enum": [
                "garden",
                "parking",
                "newHome",
                "retirement",
                "sharedOwnership",
                "auction"
              ],
              "enumTitles": [
                "Garden",
                "Parking",
                "New home",
                "Retirement home",
                "Shared ownership",
                "Auction property"
              ]
            },
            "default": []
          },
          "dontShow": {
            "title": "Don't show",
            "type": "array",
            "description": "Rightmove's own exclusion flags.",
            "items": {
              "type": "string",
              "enum": [
                "newHome",
                "retirement",
                "sharedOwnership",
                "auction"
              ],
              "enumTitles": [
                "New homes",
                "Retirement homes",
                "Shared ownership",
                "Auction properties"
              ]
            },
            "default": []
          },
          "furnishTypes": {
            "title": "Furnishing (rent only)",
            "type": "array",
            "description": "Ignored for sales.",
            "items": {
              "type": "string",
              "enum": [
                "furnished",
                "partFurnished",
                "unfurnished"
              ],
              "enumTitles": [
                "Furnished",
                "Part furnished",
                "Unfurnished"
              ]
            },
            "default": []
          },
          "includeSSTC": {
            "title": "Include Sold STC (sale only)",
            "type": "boolean",
            "description": "Also return properties that are sold subject to contract.",
            "default": false
          },
          "includeLetAgreed": {
            "title": "Include Let Agreed (rent only)",
            "type": "boolean",
            "description": "Also return properties that are already let agreed.",
            "default": false
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only properties whose title, address, summary, type, features or agency contain these words. Rightmove ignores keywords in its own URL, so this runs here on the rows already fetched. No extra requests are made.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywordMatch": {
            "title": "Keyword match",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "any: at least one keyword. all: every keyword.",
            "default": "any"
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop properties containing any of these words.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "agencyNames": {
            "title": "Agencies",
            "type": "array",
            "description": "Keep only properties marketed by these agencies. Partial names work.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "requirePrice": {
            "title": "Only properties with a published price",
            "type": "boolean",
            "description": "Off by default: a POA property is not treated as a cheap one, it is simply kept.",
            "default": false
          },
          "minBathrooms": {
            "title": "Minimum bathrooms",
            "minimum": -1,
            "maximum": 20,
            "type": "integer",
            "description": "-1 turns the filter off. A property whose bathroom count is not published is kept.",
            "default": -1
          },
          "minSizeSqFt": {
            "title": "Minimum size (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "0 means no minimum. Rightmove publishes a size on some listings only; a property without one is kept.",
            "default": 0
          },
          "maxSizeSqFt": {
            "title": "Maximum size (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "0 means no maximum.",
            "default": 0
          },
          "tenureTypes": {
            "title": "Tenure",
            "type": "array",
            "description": "Keep only these tenures. A property whose tenure is not published is kept.",
            "items": {
              "type": "string",
              "enum": [
                "FREEHOLD",
                "LEASEHOLD",
                "SHARE_OF_FREEHOLD"
              ],
              "enumTitles": [
                "Freehold",
                "Leasehold",
                "Share of freehold"
              ]
            },
            "default": []
          },
          "excludeCommercial": {
            "title": "Exclude commercial listings",
            "type": "boolean",
            "description": "Rightmove mixes some commercial listings into residential searches (3 of 150 measured). Drop them.",
            "default": false
          },
          "excludeStudents": {
            "title": "Exclude student listings",
            "type": "boolean",
            "description": "Drop listings flagged as student accommodation.",
            "default": false
          },
          "listedWithinDays": {
            "title": "First listed within the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Unlike Rightmove's own 'added' filter, this uses the date the property first appeared and ignores price reductions. 0 means no date filter. A property whose date cannot be read is kept.",
            "default": 0
          },
          "monitoringMode": {
            "title": "Only return listings that are new since the last run",
            "type": "boolean",
            "description": "Turn this on and schedule the Actor: each run returns only the properties it has never returned before, so you are charged for new stock rather than for the same pages again. Properties that did not fit under the limit are still waiting for you on the next run.",
            "default": false
          },
          "resetMonitoringState": {
            "title": "Forget what was already returned",
            "type": "boolean",
            "description": "Clears the memory for this search, so the next monitoring run starts from scratch. Works with or without monitoring mode on.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}