# Rightmove Scraper: UK Property Listings, Prices & Agents (`dltik/rightmove-scraper`) Actor

Scrape Rightmove.co.uk UK property listings (for sale & to rent): price, bedrooms, bathrooms, type, tenure, address, GPS, agent, size and dates. HTTP-only, no browser. Filter by location, price, bedrooms and radius.

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

## Pricing

$5.00 / 1,000 listing scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

⭐ **Bookmark this Rightmove Scraper** on Apify to keep it at the top of your dashboard.

## Rightmove Scraper — UK Property Listings

Scrape **Rightmove.co.uk** — the UK's biggest property portal — for **sale or rent**, with the fields you need for analysis and lead-gen:

- **Price**, **bedrooms**, **bathrooms**, **size** (m²)
- **Property type**, **tenure** (freehold / leasehold / share)
- **Address**, **GPS** (lat/lon)
- **Estate agent** name, **summary**, photo count, listing dates
- Direct **listing URL** and stable ID

Fast and reliable: **HTTP-only, no browser**. Rightmove blocks generic scrapers at the edge, so this actor passes the anti-bot layer with a browser-grade TLS fingerprint and reads Rightmove's own embedded data — clean, structured, and cheap.

### Input

| Field | What |
|---|---|
| `searchUrls` | One or more Rightmove search URLs you built on the site (any filters). **Recommended.** Paste e.g. `https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490`. |
| `locationIdentifier` | Rightmove location code (used when no URL). e.g. `REGION^87490` (London), `REGION^904` (Manchester), `OUTCODE^2520`. Copy it from the site URL after searching a place. |
| `transaction` | `buy` (for sale) or `rent` (to let). |
| `priceMin` / `priceMax` | Price filters (£). |
| `minBedrooms` / `maxBedrooms` | Bedroom filters. |
| `radius` | Radius in miles around the location (0, 0.5, 1, 3, 5, 10…). |
| `maxResults` | Max listings per run (Rightmove caps each search at ~1000 — split by area/price for more). |

**Easiest workflow:** search on Rightmove with your filters, copy the URL from the address bar, and paste it into `searchUrls`. Pagination is automatic.

### Output (one record per listing)

```json
{
  "source": "rightmove",
  "source_id": "148711631",
  "url": "https://www.rightmove.co.uk/properties/148711631",
  "transaction": "buy",
  "property_type": "Apartment",
  "price": 60000000.0,
  "bedrooms": 5,
  "address": "One Hyde Park, Knightsbridge, London, SW1X",
  "latitude": 51.50, "longitude": -0.16,
  "contact_name": "Global 1, London",
  "raw_extra": {"bathrooms": 5, "tenure": "LEASEHOLD", "display_size": "5,000 sq ft"}
}
```

### Use cases

- **UK property market analysis** — price/bedroom distribution by area.
- **Investment sourcing** — filter by price, yield, tenure.
- **Lead generation** — estate agent attached to every listing.
- **Price monitoring** — schedule daily runs, track reductions.

### Pricing

Pay-per-result: charged **per listing** returned. No listings, no charge.

### Notes

- Rightmove caps deep pagination at ~1000 results per search — for a whole region, split into narrower searches (by postcode/price band).
- Also want France? See **SeLoger** & **Pige Immo FR**. Belgium? **Immoweb**. Spain/Italy/Portugal? **Idealista**.

# Actor input Schema

## `searchUrls` (type: `array`):

One or more Rightmove search URLs you built on the site (any filters/location). Recommended: search on rightmove.co.uk, then copy the URL. Example: https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490 . Overrides the fields below if set.

## `locationIdentifier` (type: `string`):

Rightmove location code, used when 'searchUrls' is empty. Find it in the URL after searching a place on rightmove.co.uk. Examples: REGION^87490 (London), REGION^904 (Manchester), OUTCODE^2520 (a postcode area).

## `transaction` (type: `string`):

For sale (buy) or to rent.

## `priceMin` (type: `integer`):

Minimum price filter (used when building from locationIdentifier).

## `priceMax` (type: `integer`):

Maximum price filter (used when building from locationIdentifier).

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

Minimum number of bedrooms (used when building from locationIdentifier).

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

Maximum number of bedrooms (used when building from locationIdentifier).

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

Search radius around the location in miles (e.g. 0, 0.5, 1, 3, 5, 10). Used when building from locationIdentifier.

## `maxResults` (type: `integer`):

Maximum number of listings to return per run. Note: Rightmove caps each search at ~1000 results — split by area/price for more.

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

Optional. Rightmove needs no proxy and no geo-restriction, but a proxy helps for very large pulls. Leave off for normal use.

## `customProxyUrl` (type: `string`):

Optional. Route through your own proxy, e.g. http://user:pass@host:port .

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490"
  ],
  "transaction": "buy",
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped Rightmove listings.

# 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 = {
    "searchUrls": [
        "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dltik/rightmove-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 = { "searchUrls": ["https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490"] }

# Run the Actor and wait for it to finish
run = client.actor("dltik/rightmove-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 '{
  "searchUrls": [
    "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490"
  ]
}' |
apify call dltik/rightmove-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dltik/rightmove-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/17UEEaHUhjeM9hc6k/builds/RmGOCx9vHgSEAIaWj/openapi.json
