{
  "openapi": "3.0.1",
  "info": {
    "title": "Rightmove Property Search, Price Drops and Sold Prices",
    "description": "Rightmove scraper for UK property searches: address, price, bedrooms, agent, photo and link per property, newest first, for sale or to rent. New Rightmove listings alert and Rightmove price drop monitor built in, plus UK sold house prices by postcode. No login. Pay per property returned.",
    "version": "1.0",
    "x-build-id": "RRMkDWEi6vJ4pFoSV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/accountable_eel~rightmove-listing-lookup/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-accountable_eel-rightmove-listing-lookup",
        "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/accountable_eel~rightmove-listing-lookup/runs": {
      "post": {
        "operationId": "runs-sync-accountable_eel-rightmove-listing-lookup",
        "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/accountable_eel~rightmove-listing-lookup/run-sync": {
      "post": {
        "operationId": "run-sync-accountable_eel-rightmove-listing-lookup",
        "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": {
          "searches": {
            "title": "Rightmove searches or places",
            "type": "array",
            "description": "One per line: a place name or outcode such as \"Manchester\" or \"N11\" (use the sale/rent setting below), or a search link copied from rightmove.co.uk with all its filters. Results always come back newest first. Accepted formats: Manchester, N11, https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490&minBedrooms=2&maxPrice=600000, https://www.rightmove.co.uk/property-to-rent/find.html?locationIdentifier=REGION%5E787. You're only charged for the ones we actually find — a miss costs nothing.",
            "items": {
              "type": "string"
            }
          },
          "testRun": {
            "title": "Try it first — only process the first 5",
            "type": "boolean",
            "description": "Turn this on to test your input on a small sample before running the full list. Turn it off to process everything.",
            "default": false
          },
          "onlyFound": {
            "title": "Hide rows with no result",
            "type": "boolean",
            "description": "Only keep rows where something was actually found. Misses are always free, whether or not you show them here.",
            "default": false
          },
          "includeKeywords": {
            "title": "Title must contain (optional)",
            "type": "array",
            "description": "Optional. One word or phrase per line, case-insensitive. Keeps only properties whose address (title) contains at least one of these. Matches the address only. Leave empty to keep every title.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Title must not contain (optional)",
            "type": "array",
            "description": "Optional. One word or phrase per line, case-insensitive. Drops any property whose address (title) contains one of these. Leave empty to drop nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Stop after this many results",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Stop the run once this many results have been found — useful for a quick, cheap sample. Leave blank for no limit."
          },
          "transactionType": {
            "title": "Sale or rent (for a typed place)",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Applies to a place name or outcode you type. A pasted search link keeps its own choice (property-for-sale or property-to-rent).",
            "default": "sale"
          },
          "maxListings": {
            "title": "Most properties to return per search",
            "type": "integer",
            "description": "Newest first. Rightmove shows 24 per page and stops at about 1,000 per search; this actor pages on its own. You pay per property returned, so this is also your budget control.",
            "default": 100
          },
          "minPrice": {
            "title": "Minimum price (GBP)",
            "type": "integer",
            "description": "Optional. For a rental this is per month. Ignored for pasted search links."
          },
          "maxPrice": {
            "title": "Maximum price (GBP)",
            "type": "integer",
            "description": "Optional. For a rental this is per month. Ignored for pasted search links."
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "type": "integer",
            "description": "Optional. Ignored for pasted search links."
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "any",
              "detached",
              "semi-detached",
              "terraced",
              "flat",
              "bungalow",
              "land",
              "park-home"
            ],
            "type": "string",
            "description": "Optional. Ignored for pasted search links.",
            "default": "any"
          },
          "radiusMiles": {
            "title": "Search radius",
            "enum": [
              "0",
              "0.25",
              "0.5",
              "1",
              "3",
              "5",
              "10",
              "15",
              "20",
              "30",
              "40"
            ],
            "type": "string",
            "description": "How far beyond the typed place to look. Ignored for pasted search links.",
            "default": "0"
          },
          "cities": {
            "title": "Cities to keep (optional)",
            "type": "array",
            "description": "Optional. One city or area per line, case-insensitive. Keeps only properties whose address (the Title / Display address column) contains one of these. Rightmove has no separate city field — this is a contains match on the address string. Leave empty to keep every address.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort results",
            "enum": [
              "",
              "newest",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "Optional. Sorts the properties this run actually fetched — after filtering, before \"Most properties to return per search\" cuts the list — not the whole marketplace. Rightmove pages are already fetched newest-first (sortType=6), so leaving this on Default reproduces the existing order exactly.",
            "default": ""
          },
          "includeSoldPrices": {
            "title": "Add sold-price context for each postcode outcode",
            "type": "boolean",
            "description": "Reads Rightmove's public house-prices page for each property's postcode outcode (at most 20 outcodes per search) and adds soldMedianPrice and soldSampleSize: the median of the most recent sales listed there. Rows whose address carries no outcode stay empty. No extra charge.",
            "default": false
          },
          "deltaMode": {
            "title": "Only return properties that are new, cheaper, dearer or gone since the last run",
            "type": "boolean",
            "description": "Turns a search into a watchlist. A property is new when its Rightmove ID was not returned by a previous run of the same watchlist; a price drop or rise when its asking price moved by at least the percentage below since it was last seen; gone when it disappeared from the part of the search the run covered (sold subject to contract, let or withdrawn). Unchanged properties are removed before you are billed, so a quiet run costs only the start fee and returns one summary row. Price rises and gone properties are returned free. Schedule it hourly or daily and send the rows to Slack, Google Sheets, n8n or your own system.",
            "default": false
          },
          "deltaName": {
            "title": "Watchlist name (optional)",
            "type": "string",
            "description": "Leave empty and one is derived from this run's filters, so two schedules with different filters keep separate memories. Type your own name to keep one memory across a filter change. Remembered in a named store on your account, so it survives between runs.",
            "default": ""
          },
          "alertOnNewOnly": {
            "title": "Alert on new properties only",
            "type": "boolean",
            "description": "With monitoring on and this ticked, return only properties the watchlist has never seen. With this and \"Alert on price drops\" both off (the default) every kind of change is returned: new, price drop, price rise and gone.",
            "default": false
          },
          "alertOnPriceDrop": {
            "title": "Alert on price drops",
            "type": "boolean",
            "description": "With monitoring on and this ticked, return only properties whose asking price dropped. Tick it together with \"Alert on new properties only\" to get new properties and price drops and nothing else.",
            "default": false
          },
          "minPriceChangePct": {
            "title": "Smallest price change to report (%)",
            "type": "number",
            "description": "A property must be at least this much cheaper or dearer than when it was last reported to count as a price drop or rise. Default 0.5%: 0.5% of GBP 400,000 is GBP 2,000.",
            "default": 0.5
          },
          "skipFirstRun": {
            "title": "Seed silently (no rows on the first run)",
            "type": "boolean",
            "description": "The first run of a watchlist has nothing to compare with, so every property is new. Turn this on to remember everything without returning or billing it, so a webhook does not get a hundred messages on day one. Alerts start from the second run.",
            "default": false
          },
          "columns": {
            "title": "Which columns do you want?",
            "type": "array",
            "description": "Choose which pieces of information to include in each result row. All are included by default.",
            "items": {
              "type": "string",
              "enum": [
                "searchUrl",
                "totalAvailable",
                "listingCount",
                "truncated",
                "newCount",
                "priceDropCount",
                "priceRiseCount",
                "goneCount",
                "monitorStatus",
                "medianPrice",
                "properties",
                "propertyId",
                "url",
                "displayAddress",
                "title",
                "postcodeOutcode",
                "price",
                "currency",
                "priceFrequency",
                "priceQualifier",
                "transactionType",
                "propertySubType",
                "bedrooms",
                "bathrooms",
                "summary",
                "agentName",
                "agentBranch",
                "addedOrReduced",
                "firstVisibleDate",
                "listedAt",
                "listingUpdatedAt",
                "latitude",
                "longitude",
                "imageUrl",
                "isFeatured"
              ],
              "enumTitles": [
                "Search link on Rightmove",
                "Total matching on Rightmove",
                "Properties returned (billed)",
                "More results were available",
                "New properties this run",
                "Price drops this run",
                "Price rises this run",
                "Gone properties this run",
                "Monitoring status",
                "Median asking price of this search",
                "All properties found (full list)",
                "Rightmove property ID",
                "Property link",
                "Address",
                "Title (same as address)",
                "Postcode outcode",
                "Asking price",
                "Currency",
                "Rent period (monthly / weekly)",
                "Price qualifier (Guide Price, Offers in excess of ...)",
                "Sale or rent",
                "Property type",
                "Bedrooms",
                "Bathrooms",
                "Summary",
                "Agent",
                "Agent branch",
                "Added / Reduced",
                "First listed on Rightmove",
                "Listed at (same as first listed)",
                "Last added or reduced",
                "Latitude",
                "Longitude",
                "Main photo",
                "Featured listing (paid promotion)"
              ]
            },
            "default": [
              "searchUrl",
              "totalAvailable",
              "listingCount",
              "truncated",
              "newCount",
              "priceDropCount",
              "priceRiseCount",
              "goneCount",
              "monitorStatus",
              "medianPrice",
              "properties",
              "propertyId",
              "url",
              "displayAddress",
              "title",
              "postcodeOutcode",
              "price",
              "currency",
              "priceFrequency",
              "priceQualifier",
              "transactionType",
              "propertySubType",
              "bedrooms",
              "bathrooms",
              "summary",
              "agentName",
              "agentBranch",
              "addedOrReduced",
              "firstVisibleDate",
              "listedAt",
              "listingUpdatedAt",
              "latitude",
              "longitude",
              "imageUrl",
              "isFeatured"
            ]
          },
          "expandRows": {
            "title": "One row per listing (recommended) — turn off for one row per search instead",
            "type": "boolean",
            "description": "When on, each listing found gets its own row instead of being grouped under its search. You're still only charged once per search, no matter how many rows it produces.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Parallel requests. Keep conservative — this target has no browser fallback, so getting blocked costs more than slow-and-steady.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy config. Residential recommended for anti-bot-sensitive targets.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}