# Rightmove Scraper & API - UK Property for Sale & Rent, Agents (`rel8ble/rightmove-scraper`) Actor

Rightmove scraper and API: UK property listings by place name, outcode or search URL, for sale, to rent, commercial. One result = one property: address, price, beds, type, status, dates, agent + phone, lat/lng, images; optional full details. No start fee. $0.50 per 1,000.

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

## Pricing

$0.50 / 1,000 results

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?

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

## Rightmove Scraper & API - UK Property for Sale & Rent, Agents

**Rightmove Scraper** is an unofficial Rightmove API and property data scraper for **rightmove.co.uk**: type a place name, postcode district or station, pick for sale / to rent / commercial, set Rightmove's own filters, and get one clean JSON row per property with address, price (number, text and rental frequency), bedrooms, bathrooms, property type, status (sold STC, let agreed, reduced), added and reduced dates, agent name, branch and phone, latitude / longitude, photos, summary and key features. Turn on property details to add the full description, floorplans, EPC images, council tax band, tenure and lease years, size in sq ft / sq m, deposit and let terms, nearest stations, utilities and parking, agent address.

It reads the same server-rendered search pages and property pages the Rightmove website serves, over plain HTTP: no browser, no login, no API key. About 24 properties per request on searches, one request per property for details.

Use it for **property market research** (asking prices, price reductions, days on market by area), **lead generation for agents, brokers, surveyors and movers** (new listings with the agent branch and phone), **investment and sourcing** (below-market and reduced listings, auction lots, leaseholds with short leases), **rental market monitoring** (rents by outcode, let-agreed velocity), **portfolio and competitor tracking** (what a branch has listed and at what price) and **feeding AI agents** with structured UK property data.

### How to use

1. Type one or more **Locations**, one per line: `Manchester`, `Bristol`, `SW1A`, `M1`, `Leeds, West Yorkshire`, `Clapham Junction Station`, or a Rightmove location identifier such as `REGION^904` / `OUTCODE^2506` (the `locationIdentifier=` value in any rightmove.co.uk search URL). Names go through Rightmove's own location search; identifiers are exact.
2. Pick the **Listing type**: `sale` (property for sale, default), `rent`, `commercial-sale` or `commercial-rent`.
3. Optionally set Rightmove's filters, applied before anything is charged: **radius**, **price range**, **bedrooms**, **property types**, **added to site** (24 h / 3 / 7 / 14 days), **sort** (newest listed, price), **include sold STC / let agreed**, **must have** / **don't show** (garden, parking, new home, retirement, shared ownership, auction), **furnishing** and **let type** (rentals), **keywords**.
4. Leave **Include property details** off for a fast, cheap listing (24 properties per request), or turn it on for the full property page: description, floorplans, EPC, council tax, tenure, size, let terms, stations, agent address.
5. Set **Max results per search** and **Max results in total**, click **Start**, and download JSON, CSV or Excel from the **Output** tab, or pull the rows through the API, Make, Zapier, n8n or an MCP client.

Already have links? Paste Rightmove search pages (`https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E904&minBedrooms=2...`) into **Rightmove URLs**: their own filters are kept and every page is read. Property pages (`https://www.rightmove.co.uk/properties/171910151`) give one full row each with details.

### What you get

One dataset item per property:

- **Identity**: `id`, `url`, `listingType` (`sale`, `rent`, `commercial-sale`, `commercial-rent`), `address`, `postcode` / `outcode` / `incode` (details), `propertyType` (`"2 bedroom semi-detached bungalow for sale"`), `propertySubType` (`"Semi-Detached Bungalow"`, `"Apartment"`, `"Land"`), `bedrooms`, `bathrooms`, `size`, `tenure`.
- **Price**: `price` as a number in GBP (per month for rentals), `priceText` as printed (`"£200,000"`, `"£900 pcm"`), `priceQualifier` (`"Offers Over"`, `"Guide Price"`), `priceFrequency` (`monthly` / `weekly` / `yearly`, rentals), `priceSecondaryText` (`"£208 pw"`), `currency`.
- **Status and dates**: `status` (`"Sold STC"`, `"Let agreed"`, `"Under offer"` or null), `isSoldSTC`, `isLetAgreed`, `isReduced`, `listingUpdateReason` (`new`, `price_reduced`...), `listingUpdateDate`, `addedOrReduced` as printed, `addedOn`, `reducedOn`, `updatedOn`, `letAvailableDate`.
- **Agent**: `agentName`, `agentBranch`, `agentBranchId`, `agentPhone`, `agentUrl`, `agentLogo`, `agentIsDeveloper`; with details `agentCompany`, `agentAddress`, `agentDescription`, `industryAffiliations`.
- **Flags**: `isPremiumListing`, `isFeatured`, `isEnhancedListing`, `isAuction`, `isNewHome`, `isCommercial`, `isResidential`, `isStudent`, `isBuildToRent`, `feesApply`, `onlineViewingsAvailable`, `hasFloorplan`, `hasVirtualTour`, `label` (`"No Chain"`), `lozenges`.
- **Media and location**: `mainImage`, `images` (full size), `imageCount`, `latitude`, `longitude`, `distanceMiles` (radius searches), `summary`, `keyFeatures`.
- **Details** (`includeDetails: true` or pasted property URLs): `description` (plain text) and `descriptionHtml`, `title`, `floorplans`, `epcImages`, `brochures`, `virtualTours`, `councilTaxBand`, `yearsRemainingOnLease`, `annualGroundRent`, `annualServiceCharge`, `pricePerSqFt`, `sizeSqFt` / `sizeSqM` (and `...Max` for ranges), `deposit`, `letType`, `furnishType`, `minimumTermMonths`, `nearestStations` (name, type, miles), `features` (heating, parking, garden, accessibility, electricity, water, sewerage, broadband), `floodedInLastFiveYears`, `isListedBuilding`, `sharedOwnership`, `sharedOwnershipPercentage`, `affordableBuyingScheme`, `businessForSale`, `commercialUseClasses`, `ukCountry`, `mapPinType`, `nearbySoldPricesUrl`.
- **Meta**: `detailsIncluded`, `detailsError` (the listing row is kept when a property page fails), `position` in the search, `sourceType` (`location` or `url`), `sourceQuery`, `sourceLabel`, `scrapedAt`.

A field Rightmove does not show is `null`, never guessed. Only business contact data of the advertising agent or developer is collected; the scraper never reads the contact forms, map, draw-a-search or API paths that Rightmove's robots.txt disallows.

### Sample output

Real rows from the Store demo (`locations: ["Manchester"]`, for sale, Rightmove's default order, from `sample-output.json`), a few of the 60+ fields:

| address | priceText | propertySubType | bedrooms | isReduced | agentBranch | agentPhone | addedOn |
|---|---|---|---|---|---|---|---|
| Imperial Point, The Quays, Salford, M50 | £550,000 | Duplex | 2 | false | Savills, Manchester | 0161 524 3346 | 2026-10-16 |
| Didsbury Park, Manchester, M20 | £3,300,000 | Detached | 6 | false | Savills, Manchester | 0161 524 3346 | 2026-09-22 |
| Bindloss Avenue, Eccles, Manchester | £2,999,950 | Block of Apartments | 27 | true | Keenans Estate Agents, Swinton | 0161 524 5515 | 2024-09-05 |
| High Lane, Chorlton, M21 | £2,500,000 | Semi-Detached | 5 | false | Gascoigne Halman, Didsbury | 0161 524 3391 | 2026-07-23 |
| Springdale Gardens, Didsbury Village, M20 | £2,150,000 | Detached | 5 | true | Philip James Kennedy, Didsbury | 0161 524 4262 | 2026-08-17 |

### Why this one

- **$0.50 per 1,000 properties, no start fee, no per-page fee**, details included at the same price. The most-used Rightmove scrapers charge $0.30 per row plus $0.005 per search page (about $0.51 per 1,000 listing rows, epctex), $1.00-$1.50 plus a start fee (azzouzana, memo23) or $3.45 plus a start fee (automation-lab).
- **Rightmove's own filters** (price, beds, type, added since, sold STC, must-have, furnishing, keywords) are applied before anything is charged.
- **Past the 1,000-result cap** with `deepSearch` (automatic price bands).
- **Agent leads built in**: branch, phone and agent URL on every row.

### Use cases

- **New-listing alerts**: `maxDaysSinceAdded: "1"`, `sortBy: "newestListed"` on your outcodes every morning, pushed to Slack or a sheet through Make / Zapier / n8n.
- **Reduced-price sourcing**: run an area with `maxResultsPerSearch: 0` and filter `isReduced: true`; `reducedOn` and `addedOn` give the time on market.
- **Agent lead lists**: every row carries `agentBranch`, `agentPhone` and `agentUrl`; group by `agentBranchId` to see who lists most in a postcode.
- **Rental comparables**: `listingType: "rent"`, `minBedrooms: 2`, `maxBedrooms: 2`, `includeSoldOrLetAgreed: true` on an outcode gives asking rents plus what has just let agreed.
- **Leasehold screening**: details on, then filter `yearsRemainingOnLease < 80` or `annualServiceCharge` above your limit.
- **AI agents**: "3-bed houses under £300k with a garden in Stockport added this week" maps straight onto the input fields (`locations`, `maxPrice`, `minBedrooms`, `propertyTypes`, `mustHave`, `maxDaysSinceAdded`).

### Input

| Field | Default | Description |
|---|---|---|
| `locations` | - | Place names, outcodes, stations or `REGION^904`-style identifiers, one search each |
| `listingType` | `sale` | `sale`, `rent`, `commercial-sale`, `commercial-rent` |
| `startUrls` | - | Rightmove search URLs (filters kept) or `/properties/<id>` pages |
| `radius` | `0.0` | Miles around the location: `0.25` ... `40.0` |
| `minPrice` / `maxPrice` | - | GBP (per month for rentals) |
| `minBedrooms` / `maxBedrooms` | - | 0 = studio |
| `propertyTypes` | all | `detached`, `semi-detached`, `terraced`, `flat`, `bungalow`, `land`, `park-home`, `private-halls` |
| `maxDaysSinceAdded` | any | `1`, `3`, `7`, `14` |
| `sortBy` | `default` | `highestPrice`, `lowestPrice`, `newestListed`, `oldestListed` |
| `includeSoldOrLetAgreed` | `false` | Include sold STC (sale) / let agreed (rent) listings |
| `mustHave` / `dontShow` | - | `garden`, `parking`, `newHome`, `retirement`, `sharedOwnership`, `auction` |
| `furnishTypes` / `letType` | - | Rentals: `furnished`, `partFurnished`, `unfurnished`; `longTerm`, `shortTerm`, `student` |
| `keywords` | - | Rightmove keyword filter, comma-separated |
| `includeDetails` | `false` | Read every property page |
| `deepSearch` | `false` | Split big searches into price bands to get past Rightmove's 1,000-result cap |
| `maxResultsPerSearch` | 100 | Per location / URL; 0 = all |
| `maxResults` | 1000 | Per run; 0 = all |
| `proxyConfiguration` | Apify datacenter | Rightmove serves datacenter IPs; the proxy spreads requests |

### Example inputs for common jobs

Copy one into the JSON tab of the input form.

**Three-bed houses with a garden under £300,000 in Stockport, newest first**

```json
{
    "locations": ["Stockport"],
    "listingType": "sale",
    "maxPrice": 300000,
    "minBedrooms": 3,
    "propertyTypes": ["detached", "semi-detached", "terraced"],
    "mustHave": ["garden"],
    "sortBy": "newestListed",
    "maxResultsPerSearch": 200
}
```

**Every furnished 1-2 bed flat to rent in three London outcodes, with full details**

```json
{
    "locations": ["SW1A", "SW1E", "SW1P"],
    "listingType": "rent",
    "minBedrooms": 1,
    "maxBedrooms": 2,
    "propertyTypes": ["flat"],
    "furnishTypes": ["furnished"],
    "includeDetails": true,
    "maxResultsPerSearch": 0
}
```

**The whole of Manchester for sale (6,000+ listings) past the 1,000 cap, listing only (about $3)**

```json
{
    "locations": ["REGION^904"],
    "deepSearch": true,
    "maxResultsPerSearch": 0,
    "maxResults": 0
}
```

**Daily new-listing feed for agent prospecting (schedule it every morning)**

```json
{
    "locations": ["M20", "M21", "SK4"],
    "maxDaysSinceAdded": "1",
    "sortBy": "newestListed",
    "maxResultsPerSearch": 0
}
```

**Reduced and auction stock for investors, details on for tenure and lease years**

```json
{
    "locations": ["Liverpool"],
    "maxPrice": 150000,
    "mustHave": ["auction"],
    "includeDetails": true,
    "maxResultsPerSearch": 300
}
```

**Two property pages with details**

```json
{
    "startUrls": [
        "https://www.rightmove.co.uk/properties/171910151",
        "https://www.rightmove.co.uk/properties/94662147"
    ]
}
```

### Output example

A listing row (details off), from `locations: ["Manchester"]`, for sale, on 23 Oct 2026:

```json
{
    "id": "174820148",
    "url": "https://www.rightmove.co.uk/properties/174820148",
    "listingType": "sale",
    "transactionType": "buy",
    "address": "Viadux, Albion Street, Manchester, Greater Manchester, M1",
    "propertyType": "3 bedroom penthouse for sale",
    "propertySubType": "Penthouse",
    "bedrooms": 3,
    "bathrooms": 4,
    "price": 3500000,
    "priceText": "£3,500,000",
    "priceQualifier": "Guide Price",
    "priceFrequency": null,
    "priceSecondaryText": null,
    "currency": "GBP",
    "status": null,
    "isSoldSTC": false,
    "isLetAgreed": false,
    "isReduced": false,
    "listingUpdateReason": "new",
    "listingUpdateDate": "2026-04-23T09:48:08Z",
    "addedOrReduced": "Added on 23/04/2026",
    "addedOn": "2026-04-23T09:42:42Z",
    "reducedOn": null,
    "updatedOn": "2026-10-22T00:46:25Z",
    "letAvailableDate": null,
    "tenure": "LEASEHOLD",
    "size": "3,237 sq. ft.",
    "summary": "Explore this market leading penthouse at Viadux, a coveted development that merges Manchester's rich industrial heritage with modern design.",
    "keyFeatures": ["Completing Q2 2024", "Outstanding penthouse residences", "Sought after city centre location", "Luxury residents amenities and services, including swimming pool."],
    "label": null,
    "lozenges": ["NEW_HOME"],
    "isPremiumListing": false,
    "isFeatured": false,
    "isEnhancedListing": false,
    "isAuction": false,
    "isNewHome": true,
    "isCommercial": false,
    "isResidential": true,
    "isStudent": false,
    "isBuildToRent": false,
    "feesApply": false,
    "onlineViewingsAvailable": false,
    "hasFloorplan": true,
    "hasVirtualTour": true,
    "imageCount": 28,
    "mainImage": "https://media.rightmove.co.uk/dir/crop/10:9-16:9/property-photo/0015861e3/174820148/0015861e376a51fe41af8aec64b8032a_max_476x317.jpeg",
    "images": ["https://media.rightmove.co.uk/property-photo/0015861e3/174820148/0015861e376a51fe41af8aec64b8032a.jpeg", "https://media.rightmove.co.uk/property-photo/15b6f5318/174820148/15b6f53184724a37fda0c09f0eea35be.jpeg", "..."],
    "latitude": 53.475501,
    "longitude": -2.249348,
    "distanceMiles": null,
    "agentName": "Savills New Homes",
    "agentBranch": "Savills New Homes, New Homes North West",
    "agentBranchId": "17805",
    "agentPhone": "0161 524 6449",
    "agentUrl": "https://www.rightmove.co.uk/estate-agents/agent/Savills-New-Homes/New-Homes-North-West-17805.html",
    "agentLogo": "https://media.rightmove.co.uk/partner-logo/13328-PRODUCTS_LOGO-1766064025.jpeg",
    "agentIsDeveloper": false,
    "detailsIncluded": false,
    "position": 3,
    "sourceType": "location",
    "sourceQuery": "Manchester",
    "sourceLabel": "For sale (residential): Manchester, Greater Manchester (REGION^904)",
    "scrapedAt": "2026-10-23T18:01:11.116Z"
}
```

The extra fields of a rental row with details (trimmed), from `locations: ["SW1A"]`, `listingType: "rent"`, `includeDetails: true`:

```json
{
    "id": "94662147",
    "address": "Whitehall Court, London",
    "priceText": "£5,250 pcm",
    "price": 5250,
    "priceFrequency": "monthly",
    "deposit": 6057,
    "letType": "Long term",
    "furnishType": "Furnished",
    "letAvailableDate": "21/01/2027",
    "councilTaxBand": null,
    "sizeSqFt": 689,
    "agentBranch": "Knightsbridge Land, London",
    "agentPhone": "020 3583 5058",
    "nearestStations": [{ "name": "Embankment Station", "types": ["LONDON_UNDERGROUND"], "distanceMiles": 0.16 }],
    "floorplans": ["https://media.rightmove.co.uk/property-floorplan/52d85cd55/94662147/52d85cd55ab881dc730b155a1ad1b765.jpeg"],
    "epcImages": ["https://media.rightmove.co.uk/property-epc/25f9b62d7/94662147/25f9b62d7d8e6c82ef7d516d70412e45.jpeg", "..."],
    "description": "If you are seeking the perfect blend of timeless classic design and sleek contemporary interiors, lo...",
    "features": { "heating": ["Gas", "Double glazing", "Central", "Gas central"], "parking": ["Driveway", "Off street"], "garden": ["Patio", "Private garden"], "accessibility": [], "electricity": ["Mains supply"], "water": ["Mains supply"], "sewerage": ["Mains supply"], "broadband": ["None"] },
    "detailsIncluded": true
}
```

(The `features` block above is from the sale property 171910151; the Whitehall Court agent listed none.)

Fill rates on the test runs (sale, rent and commercial searches in Manchester and SW1A, 199 rows): `id`, `url`, `address`, `priceText`, `propertySubType`, `agentBranch`, `agentPhone`, `latitude` / `longitude`, `images` 100%; `price` as a number 100% on residential (98% overall: "POA" commercial lots have none); `bathrooms` 92% on residential; `keyFeatures` 80%; `tenure` 70% (where the agent stated it); `size` 51%. With details (9 pages): `description`, `features` and `postcode` 100%, `nearestStations` 89%, `floorplans`, `epcImages` and `councilTaxBand` 67%, `yearsRemainingOnLease` 33% (leaseholds only).

### Pricing

Pay per result: **$0.50 per 1,000 properties** (one result = one property row saved to the dataset, with or without details). No start fee and no charge per search or page.

| Run | Results | Cost |
|---|---|---|
| Store demo (Manchester, 20 rows) | 20 | $0.01 |
| An outcode's listings, listing only | 150 | $0.075 |
| Every rental in a city (the Rightmove cap) | 1,000 | $0.50 |
| Daily new-listing check, 20 outcodes x 50 | 1,000 a day | $0.50 a day |
| Properties with full details | 500 | $0.25 |

Failed requests, duplicates across searches and price bands, and removed listings are never charged. If you set a maximum cost per run, the scraper stops cleanly when it reaches it. Apify's free plan includes $5 of monthly platform credit, enough for about 10,000 properties.

### FAQ

**Is there an official Rightmove API?**
Rightmove's data feeds are for member agents only. This actor works as an unofficial Rightmove API: run it from the Apify API, Make, Zapier, n8n or an MCP client and get JSON back.

**Can I get sold house prices?**
No. Sold prices (`/house-prices/`) are not collected. You do get sold STC and let agreed listings with `includeSoldOrLetAgreed: true`, and `nearbySoldPricesUrl` on detail rows.

**How many properties can I get per search?**
Rightmove shows at most about 1,000 per search. Turn on `deepSearch` to split a big area into price bands and get all of them (Manchester for sale: 6,000+).

**Does it collect personal data?**
Only the advertising agent's or developer's business details (branch, phone, address). Private sellers' and buyers' data is never shown on Rightmove and never collected.

**Which proxy should I use?**
Keep the default Apify Proxy (datacenter). Blocks are retried on a new session automatically.

### Integrations

- **Make, Zapier and n8n**: run on a schedule and push new or reduced listings to Google Sheets, Slack, Airtable, HubSpot or your own database.
- **Google Sheets**: export the dataset straight into a spreadsheet.
- **Apify API**: run the actor and fetch results over REST, or with the official JavaScript and Python clients.
- **Webhooks**: get notified when a run finishes.
- **MCP for AI agents**: through the Apify MCP server (https://mcp.apify.com), Claude, ChatGPT, Cursor and other agents can call this Rightmove API directly and read the results.

### Limits (read before large runs)

- **Rightmove serves at most about 1,000 results per search** (42 pages of 24), whatever the total says. Narrow the search (outcodes instead of a city, price bands, property types, added-since) or turn on `deepSearch`, which splits the search into price bands under 1,000 each and reads them all (one extra request per split; duplicates across bands are skipped and not charged).
- **Place names go through Rightmove's location search**: the first matching region / outcode / postcode / station wins, so `Richmond` means Rightmove's first Richmond. Add the county (`Richmond, North Yorkshire`) or use the identifier from a rightmove.co.uk search URL (`REGION^1116`) to be exact. The run summary (key-value store, `RUN_SUMMARY`) shows what each name resolved to.
- **Sold STC and let agreed listings are hidden by default**, as on Rightmove; set `includeSoldOrLetAgreed: true` to get them with their status.
- **Featured properties repeat**: Rightmove places paid "featured" listings at the top of several pages; they are saved once (deduplicated by id) and marked `isFeatured`.
- **Details cost one request per property** (about 0.4 MB each); 1,000 detailed properties take roughly 8 minutes at the default 3 parallel requests. Listing-only runs do 24 properties per request.
- **Property types, furnishing and let type apply to residential searches**; commercial searches ignore them (Rightmove has no such filters there).
- **Postcodes**: full postcodes appear only on detail rows and only when the agent published them; listing rows carry the display address (often the street or development plus the outcode).
- **Dates**: `addedOn` is when Rightmove first showed the listing; `addedOrReduced` is the label as printed; `letAvailableDate` is an ISO date on listing rows and the agent's own text (`"Now"`, `"21/01/2027"`) on detail rows.
- **Rate limits**: Rightmove answers bursts with HTTP 403 / 429; the actor paces requests, keeps each proxy session to a few dozen requests and rotates on a block. Keep `proxyConfiguration` on Apify Proxy and `maxConcurrency` at 3 or below for big runs.
- Only the search result pages, property pages and the location typeahead are read; the contact, map, draw-a-search, full-description and `/api/` paths disallowed by Rightmove's robots.txt are never requested. Sold house prices (`/house-prices/`) are not collected.

# Actor input Schema

## `locations` (type: `array`):

Where to search, one per line: a town or city ("Manchester", "Bristol"), a postcode district ("SW1A", "M1"), a place with its county ("Leeds, West Yorkshire"), a station ("Clapham Junction Station"), or a Rightmove location identifier from a rightmove.co.uk search URL ("REGION^904", "OUTCODE^2506"). Names are resolved through Rightmove's own location search (the first matching region / outcode / postcode / station wins); the identifier form is exact. Typical: 1-50 lines.

## `listingType` (type: `string`):

What to list for every location: "sale" (property for sale, default), "rent" (property to rent), "commercial-sale" or "commercial-rent". Pasted search URLs keep their own type.

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

Optional. Rightmove links, one per line: a search results page (any ".../property-for-sale/find.html?locationIdentifier=...", ".../property-to-rent/find.html?..." or commercial find.html link - its own filters are kept, all pages are read) or a property page ("https://www.rightmove.co.uk/properties/171910151", one full row each with details).

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

How far around the location to search, as on Rightmove: "0.0" (default, this area only) to "40.0" miles.

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

Optional. In GBP: a sale price (e.g. 150000) or, for rentals, pounds per calendar month (e.g. 800). Applied by Rightmove.

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

Optional. In GBP: a sale price (e.g. 350000) or, for rentals, pounds per calendar month (e.g. 1500). Applied by Rightmove.

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

Optional. 0 = studio and up. Applied by Rightmove.

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

Optional. Applied by Rightmove.

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

Optional. Leave empty for all types. Residential searches only; commercial searches ignore it.

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

Optional. Only listings added (or reduced) within the last N days, as on Rightmove.

## `sortBy` (type: `string`):

Rightmove's sort order. "newestListed" is the one to use with a results cap when you want the latest listings.

## `includeSoldOrLetAgreed` (type: `boolean`):

Default false: Rightmove hides properties that are sold subject to contract (sale) or let agreed (rent). True: include them; the row then carries status "Sold STC" / "Let agreed" and isSoldSTC / isLetAgreed.

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

Optional. Rightmove's "must have" filters.

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

Optional. Rightmove's "don't show" filters.

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

Optional, rentals only.

## `letType` (type: `string`):

Optional, rentals only.

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

Optional. Rightmove keyword filter, comma-separated ("garage, conservatory"): only listings whose description mentions them.

## `includeDetails` (type: `boolean`):

Default false: one row per property from the search results (about 24 properties per request): address, price, beds, baths, type, status, dates, agent name / branch / phone, lat / lng, images, summary, key features, flags. True: also open every property page (one request each, about 0.4 MB) and add the full description, floorplans, EPC images, brochures, council tax band, tenure and lease years, ground rent / service charge, size in sq ft / sq m, postcode, deposit / furnishing / let term (rentals), nearest stations, utilities / parking / garden features, agent address and description.

## `deepSearch` (type: `boolean`):

Rightmove serves at most about 1,000 results per search. True: when a search has more, it is split into price bands (each under 1,000) and every band is read, so large areas come back complete. Costs one extra request per split; duplicates across bands are skipped and never charged.

## `maxResultsPerSearch` (type: `integer`):

Properties to save per location / pasted search URL. 0 = everything Rightmove serves (up to its 1,000 cap, or all of it with deep search).

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

Stop the run after this many properties across all searches. 0 = no limit (the maximum cost per run still applies).

## `maxConcurrency` (type: `integer`):

How many requests run at once. 3 is safe; higher is faster for big detail runs but more likely to be rate-limited.

## `maxRequestRetries` (type: `integer`):

Retries on a blocked, rate-limited or failed request, each on a new session / IP.

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

Apify datacenter proxy by default (Rightmove serves it). You can also pass your own proxy URLs.

## Actor input object example

```json
{
  "locations": [
    "Manchester"
  ],
  "listingType": "sale",
  "radius": "0.0",
  "maxDaysSinceAdded": "",
  "sortBy": "default",
  "includeSoldOrLetAgreed": false,
  "letType": "",
  "includeDetails": false,
  "deepSearch": false,
  "maxResultsPerSearch": 100,
  "maxResults": 1000,
  "maxConcurrency": 3,
  "maxRequestRetries": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One row per property: address, price, bedrooms, bathrooms, type, status, dates, agent, lat / lng, images, summary, flags; with details also description, floorplans, EPC, council tax, tenure, size, let terms, stations.

## `summary` (type: `string`):

Per-search counts (Rightmove total, pages read, price bands, results saved, stop reason), location lookups, property pages fetched / archived / failed, duplicates skipped and anything that failed with a hint.

# 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 = {
    "locations": [
        "Manchester"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rel8ble/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 = {
    "locations": ["Manchester"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rel8ble/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 '{
  "locations": [
    "Manchester"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rel8ble/rightmove-scraper --silent --output-dataset

```

## MCP server setup

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