# Rightmove Scraper - UK Property, Rent, Sold & Agents (`khadinakbar/rightmove-all-in-one-scraper`) Actor

Scrape Rightmove.co.uk for-sale, to-rent, sold prices, and estate agents by URL or location. Auto-detects input type, returns 25+ flat fields per property: price, address, GPS, beds, baths, tenure, features, photos, floorplans, agent contacts. HTTP-only, MCP-ready, no auth required.

- **URL**: https://apify.com/khadinakbar/rightmove-all-in-one-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Real estate, Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 property scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Rightmove All-in-One Scraper

Scrape **UK property data from Rightmove.co.uk** — for-sale listings, rental listings, sold prices, and estate agent branches — by pasting a Rightmove URL or just a UK location name. Returns **25+ flat fields per property**: price, address, GPS coordinates, beds/baths, tenure, key features, photos, floorplans, agent contacts. HTTP-only (no headless browser), no login required, MCP-ready for AI agents.

### What does Rightmove All-in-One Scraper do?

It extracts structured data from [Rightmove.co.uk](https://www.rightmove.co.uk) — the UK's #1 property portal — across four channels in one actor:

- **BUY** — properties for sale, with prices, sizes, tenure, agent info.
- **RENT** — properties to rent, with monthly/weekly rent, lettings agents, furnished status.
- **SOLD** — historical sold prices for any UK postcode or region (deed-date and price for each transaction).
- **AGENTS** — estate agent branches in a given area, with contact details and brand info.

You can either paste **any Rightmove URL** (search, individual property, sold-prices, or agent page) and the actor auto-detects the type, or you can give it just a plain UK location name like `Manchester` or `NW3` and it builds the search for you. Pagination is automatic, up to Rightmove's per-query cap of 1,050 results.

Try it from the Apify Store: click **Try for free**, leave the defaults to scrape 25 London properties for sale, and click **Start**.

### Why use Rightmove All-in-One Scraper?

- **Property market research and analytics** — track asking prices, price reductions, and listing velocity across UK regions.
- **Investment due diligence** — pull comparable sale and rent listings filtered by yield, bedroom count, postcode, property type.
- **Sold-price intelligence** — compare asking vs. achieved prices for valuation models.
- **Estate agent lead generation** — extract branch contact details for B2B prospecting.
- **AI-agent property research** — call this as an MCP tool from Claude, GPT, or any MCP-compatible agent to answer UK property questions.
- **Scheduled monitoring** — run on a cron to capture new listings and price changes daily.
- **Built on Apify** — get API access, integrations with Zapier and Make, proxy rotation, and monitoring out of the box.

### How to use Rightmove All-in-One Scraper

1. **Open the actor** on Apify Store and click **Try for free**.
2. **Pick an input mode:**
   - Paste one or more Rightmove URLs into **Start URLs** (the actor auto-detects search, property, sold, or agent pages), or
   - Leave Start URLs empty and fill **Search Location** + **Search Channel** (BUY / RENT / SOLD / AGENTS).
3. **Optional filters** (used only when Start URLs is empty): radius, price range, bedroom range, property type, sort order, include SSTC / Let Agreed.
4. **Optional enrichment:** turn on **Fetch full property details** to make a second request to each property's detail page for full description, all photos, floorplans, and key features. Roughly doubles per-property cost.
5. **Cap the run** with **Max Items** (default 100, max 1,050 per single Rightmove search).
6. Click **Start**. The dataset fills incrementally — open the **Output** tab to watch records arrive.

### Input

All input fields are documented inline on the **Input** tab. Quick reference:

| Field | Type | Default | Notes |
|---|---|---|---|
| `startUrls` | array | one London BUY search | Paste Rightmove URLs. Auto-detects type. |
| `searchLocation` | string | "London" | UK location name when Start URLs is empty. |
| `channel` | enum | `BUY` | `BUY` \| `RENT` \| `SOLD` \| `AGENTS`. |
| `radius` | enum | `0.0` | Miles from location centre. |
| `minPrice` / `maxPrice` | integer | – | GBP. |
| `minBedrooms` / `maxBedrooms` | integer | – | 0–10. |
| `propertyType` | enum | any | detached / semi-detached / terraced / flat / bungalow / land / park-home. |
| `includeSSTC` | bool | false | Include Sold-Subject-To-Contract / Let-Agreed. |
| `sortType` | enum | `6` | Newest first by default. |
| `fetchPropertyDetails` | bool | false | Per-property detail-page enrichment. |
| `maxItems` | int | 100 | Hard cap. Rightmove ceiling = 1,050 per search. |
| `proxyConfiguration` | object | Apify datacenter | Switch to residential at scale if needed. |

### Output

Each item is a flat JSON object — easy to filter, easy for LLM agents to consume. You can download the dataset in **JSON, CSV, Excel, HTML, or XML** from the Storage tab.

```json
{
    "id": "123456789",
    "url": "https://www.rightmove.co.uk/properties/123456789",
    "channel": "BUY",
    "propertyTitle": "3 bedroom semi-detached house for sale",
    "displayAddress": "Acacia Avenue, London SW1A 1AA",
    "postcode": "SW1A 1AA",
    "outcode": "SW1A",
    "price": 750000,
    "priceCurrency": "GBP",
    "priceFrequency": "FOR_SALE",
    "priceDisplay": "£750,000",
    "propertyType": "Semi-Detached",
    "propertySubType": "Semi-Detached",
    "bedrooms": 3,
    "bathrooms": 2,
    "tenure": "FREEHOLD",
    "sizeSqFt": 1450,
    "latitude": 51.5074,
    "longitude": -0.1278,
    "listingStatus": "AVAILABLE",
    "listedDate": "2026-05-12",
    "soldDate": null,
    "description": "Beautifully presented three-bedroom semi-detached home with...",
    "keyFeatures": [
        "Chain Free",
        "Garden",
        "Off-Street Parking",
        "Modern Kitchen"
    ],
    "images": [
        "https://media.rightmove.co.uk/123456789/IMG_01.jpeg",
        "https://media.rightmove.co.uk/123456789/IMG_02.jpeg"
    ],
    "floorplans": [
        "https://media.rightmove.co.uk/123456789/FLOORPLAN_00.jpeg"
    ],
    "imageCount": 24,
    "agentName": "Foxtons",
    "agentBranchName": "Foxtons Westminster",
    "agentBranchUrl": "https://www.rightmove.co.uk/estate-agents/agent/Foxtons/Westminster-1234.html",
    "agentLogoUrl": "https://media.rightmove.co.uk/brand/logo-foxtons.png",
    "agentPhone": "020 7012 3456",
    "inputUrl": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490",
    "scrapedAt": "2026-05-16T19:00:00.000Z"
}
````

### Data table

| Field | Type | When populated |
|---|---|---|
| `id` | string | Always |
| `url` | string | Always |
| `channel` | enum | Always — `BUY` / `RENT` / `SOLD` / `AGENT` |
| `propertyTitle` | string | BUY / RENT / SOLD |
| `displayAddress` | string | All |
| `postcode`, `outcode` | string | All when published |
| `price` | number (GBP integer) | BUY / RENT / SOLD |
| `priceCurrency`, `priceFrequency`, `priceDisplay` | string | BUY / RENT / SOLD |
| `propertyType`, `propertySubType` | string | BUY / RENT / SOLD |
| `bedrooms`, `bathrooms` | integer | BUY / RENT |
| `tenure` | string | BUY / RENT detail pages |
| `sizeSqFt` | number | BUY / RENT detail pages when published |
| `latitude`, `longitude` | number | Almost always |
| `listingStatus` | string | BUY / RENT |
| `listedDate` | ISO date | BUY / RENT |
| `soldDate` | ISO date | SOLD only |
| `description` | string | Search results carry a summary; full description requires `fetchPropertyDetails` |
| `keyFeatures` | array | Detail pages |
| `images`, `floorplans`, `imageCount` | array / int | Detail pages |
| `agentName`, `agentBranchName`, `agentBranchUrl`, `agentLogoUrl`, `agentPhone` | string | BUY / RENT / AGENT |
| `scrapedAt` | ISO timestamp | Always |

### How much does it cost to scrape Rightmove?

The actor uses Apify's **Pay-Per-Event** monetization with two events:

- **Actor start:** $0.00005 per run (one event per GB of memory).
- **Property scraped:** $0.005 per record returned to the dataset. Covers BUY, RENT, SOLD, and AGENT records, and includes the detail-page enrichment fetch when `fetchPropertyDetails=true`.

Typical run costs:

| Scenario | Records | Approx. cost |
|---|---|---|
| Default test run | 25 BUY listings | $0.13 |
| Daily city watch | 100 BUY listings | $0.50 |
| Postcode analysis | 500 BUY + RENT mix | $2.50 |
| Full Rightmove cap | 1,050 BUY listings | $5.25 |

Free-plan users get $5/month in Apify platform credit to cover compute and proxy passthrough; this scraper is HTTP-only and lightweight, so most runs fit comfortably inside that allowance.

### Tips and advanced options

- **Default datacenter proxies work for most runs.** Rightmove does not use Cloudflare; only switch to RESIDENTIAL at scale or after hitting blocks.
- **Beat the 1,050 ceiling by segmenting.** Rightmove caps any single search at 1,050 results. For larger jobs, run multiple searches segmented by postcode (`OUTCODE^...`), price band, or property type and merge the datasets.
- **Auto-detection makes URL pasting easy.** Paste search URLs from your browser as-is; the actor figures out whether it's BUY, RENT, SOLD, or AGENTS.
- **Toggle `fetchPropertyDetails` for full descriptions.** Search pages carry a short summary only. The detail-page fetch adds full description, all photos, floorplans, full key-features list, and tenure.
- **Use `sortType=6` (newest first) for fresh-listing monitoring.** Combine with a daily schedule and you'll capture every new listing in the area.
- **Save run state.** The actor persists `resultCount` and `seenIds` to KV `STATE` every 10 records — restarted runs resume without duplicating data.

### FAQ, disclaimers, and support

**Is scraping Rightmove legal?** This actor accesses only public listing pages — no login, no captcha bypass, no rate-limit evasion. It respects polite request pacing (400–1,500 ms jitter). Always check Rightmove's [Terms of Service](https://www.rightmove.co.uk/this-site/terms-of-use.html) and your local laws before using the data commercially.

**No personal data collected.** The actor returns only data already publicly displayed on rightmove.co.uk listing pages — agent contact details that estate agents themselves publish, and the listing's public attributes.

**Known limits.**

- Rightmove caps any single search at 1,050 results (42 pages × 25). Segment your queries to go larger.
- Tenure and floor-plan data require `fetchPropertyDetails=true`.
- Commercial property and overseas modes are supported via Start URLs (paste a `/commercial-property-for-sale/find` URL) but not built into the location-based search flow.

**Found a bug or have a feature request?** Open an issue on the **Issues** tab of this actor's page.

**MCP / AI agents.** This actor is fully callable as the Apify MCP tool `apify--rightmove-all-in-one-scraper`. The flat output shape and stable field names are optimized for LLM consumption.

# Actor input Schema

## `startUrls` (type: `array`):

Rightmove URLs to scrape. The actor auto-detects each URL's type: /property-for-sale/find.html (BUY search), /property-to-rent/find.html (RENT search), /properties/{id} (single property detail), /house-prices/... (SOLD prices), /estate-agents/... (agent search). Pagination is handled automatically. If empty, the actor builds a search from searchLocation + channel below. NOT for non-Rightmove URLs — only rightmove.co.uk is supported.

## `searchLocation` (type: `string`):

Plain UK location to search when no startUrls are provided (e.g., 'London', 'Manchester', 'NW3', 'SW1A 1AA'). Resolved server-side to a Rightmove location identifier via the typeahead API. Ignored when startUrls is set. Used together with the channel field below.

## `channel` (type: `string`):

Which Rightmove section to search when searchLocation is set: BUY (properties for sale), RENT (properties to rent), AGENTS (estate agent branches in the area). Ignored when startUrls is set. Defaults to BUY. (SOLD-prices channel deferred to v0.2 — Rightmove migrated that section to React Router Turbo Stream which requires a different extractor.)

## `radius` (type: `string`):

Search radius around the location in miles. Larger radius returns more listings but spans more local markets. Defaults to 0.0 (exact location only). Used only when searchLocation is set; ignored when startUrls is set.

## `minPrice` (type: `integer`):

Minimum property price in GBP. For BUY: full price. For RENT: monthly rent. Leave empty for no minimum. Used only when searchLocation is set.

## `maxPrice` (type: `integer`):

Maximum property price in GBP. For BUY: full price. For RENT: monthly rent. Leave empty for no maximum. Used only when searchLocation is set.

## `minBedrooms` (type: `integer`):

Minimum number of bedrooms (0–10). Leave empty for any. Used only when searchLocation is set; ignored on AGENTS / SOLD channels.

## `maxBedrooms` (type: `integer`):

Maximum number of bedrooms (0–10). Leave empty for any. Used only when searchLocation is set; ignored on AGENTS / SOLD channels.

## `propertyType` (type: `string`):

Filter by Rightmove property type. Leave empty for all types. Used only when searchLocation is set on BUY / RENT channels.

## `includeSSTC` (type: `boolean`):

Include properties marked Sold Subject to Contract (BUY) or Let Agreed (RENT). Defaults to false (active listings only). Used only when searchLocation is set.

## `sortType` (type: `string`):

Sort order for search results. 6 = newest first (default), 10 = oldest first, 1 = highest price, 2 = lowest price. Used only when searchLocation is set.

## `fetchPropertyDetails` (type: `boolean`):

For each property found in search results, fetch its detail page (rightmove.co.uk/properties/{id}) to enrich with full description, key features, all photos, floorplans, EPC, and full agent info. Slower and roughly doubles per-property cost. Defaults to false. Has no effect on AGENTS / SOLD channels.

## `maxItems` (type: `integer`):

Maximum number of dataset items to return. Rightmove caps any single search at 1,050 results (42 pages × 25). For larger jobs, segment by postcode or outcode. Defaults to 100.

## `proxyConfiguration` (type: `object`):

Proxy settings. Rightmove does not use Cloudflare; default Apify datacenter proxies work reliably. Switch to RESIDENTIAL only if you hit blocks at scale.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490&radius=0.0&sortType=6&index=0"
    }
  ],
  "searchLocation": "London",
  "channel": "BUY",
  "radius": "0.0",
  "propertyType": "",
  "includeSSTC": false,
  "sortType": "6",
  "fetchPropertyDetails": false,
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Default dataset with one record per property / agent / sold-price row.

## `state` (type: `string`):

STATE key in the default key-value store: resultCount and seenIds\[] from this run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490&radius=0.0&sortType=6&index=0"
        }
    ],
    "searchLocation": "London",
    "channel": "BUY",
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": []
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/rightmove-all-in-one-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490&radius=0.0&sortType=6&index=0" }],
    "searchLocation": "London",
    "channel": "BUY",
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": [],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/rightmove-all-in-one-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490&radius=0.0&sortType=6&index=0"
    }
  ],
  "searchLocation": "London",
  "channel": "BUY",
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}' |
apify call khadinakbar/rightmove-all-in-one-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/rightmove-all-in-one-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Rightmove Scraper - UK Property, Rent, Sold & Agents",
        "description": "Scrape Rightmove.co.uk for-sale, to-rent, sold prices, and estate agents by URL or location. Auto-detects input type, returns 25+ flat fields per property: price, address, GPS, beds, baths, tenure, features, photos, floorplans, agent contacts. HTTP-only, MCP-ready, no auth required.",
        "version": "0.1",
        "x-build-id": "VeqTsY27N82yBhoM6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~rightmove-all-in-one-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-rightmove-all-in-one-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/khadinakbar~rightmove-all-in-one-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-rightmove-all-in-one-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/khadinakbar~rightmove-all-in-one-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-rightmove-all-in-one-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": "Start URLs",
                        "type": "array",
                        "description": "Rightmove URLs to scrape. The actor auto-detects each URL's type: /property-for-sale/find.html (BUY search), /property-to-rent/find.html (RENT search), /properties/{id} (single property detail), /house-prices/... (SOLD prices), /estate-agents/... (agent search). Pagination is handled automatically. If empty, the actor builds a search from searchLocation + channel below. NOT for non-Rightmove URLs — only rightmove.co.uk is supported.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "searchLocation": {
                        "title": "Search Location",
                        "type": "string",
                        "description": "Plain UK location to search when no startUrls are provided (e.g., 'London', 'Manchester', 'NW3', 'SW1A 1AA'). Resolved server-side to a Rightmove location identifier via the typeahead API. Ignored when startUrls is set. Used together with the channel field below.",
                        "default": "London"
                    },
                    "channel": {
                        "title": "Search Channel",
                        "enum": [
                            "BUY",
                            "RENT",
                            "AGENTS"
                        ],
                        "type": "string",
                        "description": "Which Rightmove section to search when searchLocation is set: BUY (properties for sale), RENT (properties to rent), AGENTS (estate agent branches in the area). Ignored when startUrls is set. Defaults to BUY. (SOLD-prices channel deferred to v0.2 — Rightmove migrated that section to React Router Turbo Stream which requires a different extractor.)",
                        "default": "BUY"
                    },
                    "radius": {
                        "title": "Search Radius (miles)",
                        "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": "Search radius around the location in miles. Larger radius returns more listings but spans more local markets. Defaults to 0.0 (exact location only). Used only when searchLocation is set; ignored when startUrls is set.",
                        "default": "0.0"
                    },
                    "minPrice": {
                        "title": "Min Price (£)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum property price in GBP. For BUY: full price. For RENT: monthly rent. Leave empty for no minimum. Used only when searchLocation is set."
                    },
                    "maxPrice": {
                        "title": "Max Price (£)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum property price in GBP. For BUY: full price. For RENT: monthly rent. Leave empty for no maximum. Used only when searchLocation is set."
                    },
                    "minBedrooms": {
                        "title": "Min Bedrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Minimum number of bedrooms (0–10). Leave empty for any. Used only when searchLocation is set; ignored on AGENTS / SOLD channels."
                    },
                    "maxBedrooms": {
                        "title": "Max Bedrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum number of bedrooms (0–10). Leave empty for any. Used only when searchLocation is set; ignored on AGENTS / SOLD channels."
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "",
                            "detached",
                            "semi-detached",
                            "terraced",
                            "flat",
                            "bungalow",
                            "land",
                            "park-home"
                        ],
                        "type": "string",
                        "description": "Filter by Rightmove property type. Leave empty for all types. Used only when searchLocation is set on BUY / RENT channels.",
                        "default": ""
                    },
                    "includeSSTC": {
                        "title": "Include SSTC / Let Agreed",
                        "type": "boolean",
                        "description": "Include properties marked Sold Subject to Contract (BUY) or Let Agreed (RENT). Defaults to false (active listings only). Used only when searchLocation is set.",
                        "default": false
                    },
                    "sortType": {
                        "title": "Sort By",
                        "enum": [
                            "6",
                            "10",
                            "1",
                            "2"
                        ],
                        "type": "string",
                        "description": "Sort order for search results. 6 = newest first (default), 10 = oldest first, 1 = highest price, 2 = lowest price. Used only when searchLocation is set.",
                        "default": "6"
                    },
                    "fetchPropertyDetails": {
                        "title": "Fetch full property details",
                        "type": "boolean",
                        "description": "For each property found in search results, fetch its detail page (rightmove.co.uk/properties/{id}) to enrich with full description, key features, all photos, floorplans, EPC, and full agent info. Slower and roughly doubles per-property cost. Defaults to false. Has no effect on AGENTS / SOLD channels.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1050,
                        "type": "integer",
                        "description": "Maximum number of dataset items to return. Rightmove caps any single search at 1,050 results (42 pages × 25). For larger jobs, segment by postcode or outcode. Defaults to 100.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Rightmove does not use Cloudflare; default Apify datacenter proxies work reliably. Switch to RESIDENTIAL only if you hit blocks at scale.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": []
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
