# Rightmove Properties Scraper (`neuro-scraper/rightmove-properties-scraper`) Actor

Rightmove Properties Scraper SD - Rightmove Properties Scraper is a UK real estate data tool that extracts rightmove.co.uk properties for sale or to rent by place, postcode or search URL: price, address, beds, baths, size, tenure, agent, photos, plus optional full details and sale history.

- **URL**: https://apify.com/neuro-scraper/rightmove-properties-scraper.md
- **Developed by:** [Neuro Scraper](https://apify.com/neuro-scraper) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

./README.md

# Actor input Schema

## `searchLocation` (type: `array`):

One per line: a town, area, outcode or postcode as you would type it on rightmove.co.uk (Manchester, Islington, SW1A, SW1A 1AA), or a Rightmove location identifier (REGION^904). The first match of Rightmove's own location search is used.

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

Search URLs copied from rightmove.co.uk with your filters (https://www.rightmove.co.uk/property-to-rent/find.html?locationIdentifier=REGION%5E904\&maxPrice=1500) or property URLs (https://www.rightmove.co.uk/properties/171634895). A search URL keeps its own filters; the filter fields below apply to Search location only.

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

Which Rightmove search to run for the locations above (residential or commercial).

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

Rightmove's own sort order.

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

Include properties within this distance of the location.

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

Purchase price, or rent per month for To rent. 0 = no minimum.

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

0 = no maximum.

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

0 = any (0 also includes studios).

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

0 = no maximum.

## `propertyTypes` (type: `array`):

Leave empty for all types.

## `mustHave` (type: `array`):

Only properties with all of these.

## `dontShow` (type: `array`):

Hide these kinds of listing.

## `furnishTypes` (type: `array`):

Rentals only. Leave empty for any.

## `keywords` (type: `string`):

Rightmove's keyword filter, comma separated (e.g. garage, conservatory).

## `maxDaysSinceAdded` (type: `string`):

Only listings added in this period.

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

Also return properties marked Sold STC / Under offer (for sale) or Let agreed (to rent).

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

Stops after this many properties in total. Rightmove shows 24 per page and about 1,000 per search; with 'Split large searches' on, bigger searches are split into price bands to go deeper.

## `maxPages` (type: `integer`):

Result pages (24 properties each) per search; 0 = no page limit (Max properties still applies).

## `splitPriceBands` (type: `boolean`):

When a search has more than ~1,000 results and you want more, run it again in price bands (each under 1,000 results) and remove duplicates. Properties without a price (POA) are not in any band.

## `fetchFullDetails` (type: `boolean`):

Opens every property page for the full description, council tax band, postcode, size in sq ft / sq m, all photos, floorplans, EPC graphs, brochures, nearest stations, lease / ground rent / service charge and the letting details. One extra request per property.

## `includeSaleHistory` (type: `boolean`):

Adds the property's past sale prices (Land Registry: year, price, change) as saleHistory. Turns on full details. Two extra requests per property.

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

Residential UK proxies (the default) are recommended - Rightmove's web pages sometimes answer a bot check.

## Actor input object example

```json
{
  "searchLocation": [
    "Manchester"
  ],
  "startUrls": [],
  "channel": "BUY",
  "sortType": "6",
  "radius": "0.0",
  "minPrice": 0,
  "maxPrice": 0,
  "minBedrooms": 0,
  "maxBedrooms": 0,
  "propertyTypes": [],
  "mustHave": [],
  "dontShow": [],
  "furnishTypes": [],
  "keywords": "",
  "maxDaysSinceAdded": "",
  "includeSSTC": false,
  "maxItems": 50,
  "maxPages": 0,
  "splitPriceBands": true,
  "fetchFullDetails": false,
  "includeSaleHistory": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}
```

# 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 = {
    "searchLocation": [
        "Manchester"
    ],
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "GB"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("neuro-scraper/rightmove-properties-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 = {
    "searchLocation": ["Manchester"],
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "GB",
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "searchLocation": [
    "Manchester"
  ],
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}' |
apify call neuro-scraper/rightmove-properties-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neuro-scraper/rightmove-properties-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dDNm5K841wdwg6RF1/builds/Tb0o1zNY3DlVTkInJ/openapi.json
