# Rightmove Property Scraper - UK Sale & Rent Listings (`confidential_gnat/rightmove-property-scraper`) Actor

Scrapes UK property listings from Rightmove (rightmove.co.uk): sale and rent, price, address, coordinates, bedrooms, agent, images, floorplans, EPC, council tax, tenure and stations. Goes past the 1,000-result search limit and can skip listings already saved.

- **URL**: https://apify.com/confidential_gnat/rightmove-property-scraper.md
- **Developed by:** [ActorFlow](https://apify.com/confidential_gnat) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $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.
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

## Rightmove Property Scraper (UK Sale & Rent Listings)

![Rightmove Property Scraper cover](https://i.postimg.cc/zBSCL55G/Gemini-Generated-Image-f68trpf68trpf68t.jpg)

**Scrape UK property listings from Rightmove (rightmove.co.uk)**: price, address, postcode, coordinates, bedrooms, bathrooms, tenure, council tax band, size, description, images, floorplans, EPC, agent contacts and nearest stations. Export to JSON, CSV or Excel, or call it as an **API**. Paste a search or property URL, press Start, and use the **cache** to get only new listings on every scheduled run.

**Target website:** [Rightmove (rightmove.co.uk)](https://www.rightmove.co.uk)

### ✨ Features of this Rightmove property scraper

- **Property listing extraction** — homes for sale and to rent from any Rightmove search page, with 70 fields per property when details are on.
- **Pagination support** — walks every results page for each search.
- **Search URL and property URL input** — paste `property-for-sale` or `property-to-rent` pages (`/property-for-sale/London.html`, `/property-for-sale/find.html?...`) or single property pages (`/properties/<id>`).
- **URL filters kept** — price, bedrooms, property types, radius, include sold STC / let agreed, must-have, don't-show and sort order in your URL are used as they are.
- **Beyond the 1,000-result limit** — Rightmove shows at most 1,008 results per search. When you ask for more, the scraper splits the search into price ranges (and, for a crowded price, property types and bedrooms) that each fit under the limit, using Rightmove's own filters and real result counts.
- **Cache, new listings and price changes** — use one cache name across scheduled runs and get only new properties and price changes.
- **Fast card-only mode** — switch off property details to save only what the search results show.
- **Proxy support** — configurable, off by default.
- **No browser required** — fast and cheap runs.

### 🚀 How to scrape Rightmove property listings in 5 steps

1. [Sign up](https://apify.com/sign-up) for a free Apify account — includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Paste one or more Rightmove search URLs (or property URLs) into **Search or property URLs**.
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### 💰 Pricing for the Rightmove scraper

This actor uses **pay-per-result** billing based on the compute units a run consumes.

- New Apify accounts include **$5 of free monthly credit**.
- It reads the data Rightmove embeds in its pages instead of driving a browser, so it costs significantly less to run than browser-based scrapers.
- Proxies are off by default, which keeps runs cheapest.
- Properties skipped by the cache are not charged.

### 🖼️ Rightmove scraper input screenshot

![Rightmove Property Scraper input form in Apify Console: search or property URLs, max items per search, scrape property details, cache project name and proxy configuration](https://i.postimg.cc/1zFcQwjm/image.png)

### 🔧 Rightmove scraper input configuration

| Field | Type | Required | Default | Description |
| ----- | ---- | -------- | ------- | ----------- |
| Search or property URLs (`startUrls`) | array | ✅ | — | Rightmove search pages (for sale or to rent) or property pages. Filters in the URL are kept. |
| Max items per search (`maxItems`) | integer | — | 5 | Maximum properties saved for each start URL. Above 1,008 the search is split by price automatically. |
| Scrape property details (`scrapeDetails`) | boolean | — | true | Opens each property page for the full description, all images, floorplans, EPC, council tax band, tenure, size, lettings terms, agent address and stations. Off = search-result data only. |
| Cache project name (`cacheProjectName`) | string | — | — | Same name on each run = only new properties and price changes. |
| Proxy configuration (`proxyConfiguration`) | object | — | no proxy | Switch on Apify Proxy for very large runs if you see blocks. |

**Supported URL types:**

- Search for sale: `https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490`
- Search to rent: `https://www.rightmove.co.uk/property-to-rent/find.html?locationIdentifier=REGION%5E87490`
- Location pages: `https://www.rightmove.co.uk/property-for-sale/London.html`, `https://www.rightmove.co.uk/property-for-sale/Leeds/detached.html`
- Property page: `https://www.rightmove.co.uk/properties/93988728`

### 📦 Rightmove scraper output data

Each property is one row with the same keys every time (`null` or an empty list where Rightmove has no value): `id`, `url`, `channel`, `title`, `summary`, `description`, `propertyType`, `bedrooms`, `bathrooms`, `price`, `priceCurrency`, `priceFrequency`, `priceQualifier`, `priceDisplay`, `priceSecondary`, `pricePerMonth`, `pricePerWeek`, `pricePerSqFt`, `tenure`, `leaseYearsRemaining`, `councilTaxBand`, `annualServiceCharge`, `annualGroundRent`, `sharedOwnership`, `sizeSqFt`, `sizeSqM`, `sizeAcres`, `address`, `outcode`, `incode`, `postcode`, `country`, `latitude`, `longitude`, `locationAccuracy`, `keyFeatures`, `propertyFeatures`, `images`, `imageCount`, `floorplans`, `floorplanCount`, `virtualTours`, `brochures`, `epcImages`, `listingStatus`, `addedOrReduced`, `firstListedAt`, `listingUpdatedAt`, `listingUpdateReason`, `isFeatured`, `isNewHome`, `isAuction`, `isRetirement`, `letAvailableDate`, `deposit`, `minimumTermMonths`, `letType`, `furnishType`, `agentName`, `agentCompany`, `agentBranch`, `agentBranchId`, `agentPhone`, `agentAddress`, `agentUrl`, `agentLogo`, `nearestStations`, `nearestAirports`, `sourceUrl`, `changeType`, `previousPrice`, `scrapedAt`.

The dataset has 2 views: **Overview** (id, channel, title, price, bedrooms, bathrooms, type, postcode, status, change type, link) and **Agents and listing dates** (agent name, phone and page, when the property was added or reduced, tenure, council tax band).

**Output at a glance:**

| Property | Channel | Price (GBP) | Beds | Type | Postcode |
| -------- | ------- | ----------- | ---- | ---- | -------- |
| [4 bedroom detached house for sale in Rye](https://www.rightmove.co.uk/properties/94565487) | buy | 1,500,000 | 4 | Detached | SW16 3EN |
| [2 bedroom apartment for sale in Burford](https://www.rightmove.co.uk/properties/91876368) | buy | 350,000 | 2 | Apartment | SE6 4DE |
| [1 bedroom flat for sale in Upper Richmond Road](https://www.rightmove.co.uk/properties/94565529) | buy | 500,000 | 1 | Flat | SW15 2DD |
| [5 bedroom flat for sale in Harrington Gardens](https://www.rightmove.co.uk/properties/94565436) | buy | 4,000,000 | 5 | Flat | SW7 4LS |
| [4 bedroom apartment for sale in Curzon Street](https://www.rightmove.co.uk/properties/94565439) | buy | 24,950,000 | 4 | Apartment | W1J 8PB |

**Sample output (raw JSON, long lists and text shortened):**

```json
[
  {
    "id": "94565487",
    "url": "https://www.rightmove.co.uk/properties/94565487",
    "channel": "buy",
    "title": "4 bedroom detached house for sale in Ryecroft Road, London, SW16",
    "summary": "A four bedroom semi-detached home with spectacular garden.",
    "description": "A four bedroom semi-detached home with spectacular garden.\n\n\rDescription\n\nIn a great location for West Norwood and overlooking the green spaces of Streatham Common Oak wood and Norwood Grove, this unique four-bedroom semidetached cottage offers an exceptional blend of generous living space, characte...",
    "propertyType": "Detached",
    "bedrooms": 4,
    "bathrooms": 2,
    "price": 1500000,
    "priceCurrency": "GBP",
    "priceFrequency": null,
    "priceQualifier": "Guide Price",
    "priceDisplay": "£1,500,000",
    "priceSecondary": null,
    "pricePerMonth": null,
    "pricePerWeek": null,
    "pricePerSqFt": 683.37,
    "tenure": "freehold",
    "leaseYearsRemaining": null,
    "councilTaxBand": "G",
    "annualServiceCharge": null,
    "annualGroundRent": null,
    "sharedOwnership": false,
    "sizeSqFt": 2195,
    "sizeSqM": 204,
    "sizeAcres": 0.05,
    "address": "Ryecroft Road, London, SW16",
    "outcode": "SW16",
    "incode": "3EN",
    "postcode": "SW16 3EN",
    "country": "England",
    "latitude": 51.421444,
    "longitude": -0.113534,
    "locationAccuracy": "ACCURATE_POINT",
    "keyFeatures": [
      "Semi-detached home",
      "Outstanding rear garden offering over 122 ft of green space"
    ],
    "propertyFeatures": {
      "heating": [],
      "parking": [
        "Yes"
      ],
      "garden": [
        "Yes"
      ],
      "electricity": [],
      "water": [],
      "sewerage": [],
      "broadband": [],
      "accessibility": [],
      "floodedInLastFiveYears": null,
      "floodDefences": null,
      "floodSources": [],
      "listedBuilding": null,
      "restrictions": null,
      "rightsOfWay": null
    },
    "images": [
      "https://media.rightmove.co.uk/property-photo/00b69fa8d/94565487/00b69fa8deb9b55969ab714b0ba088e4.jpeg",
      "https://media.rightmove.co.uk/property-photo/9e88eb78a/94565487/9e88eb78ae916a1deaa9ef4ac5bd73fe.jpeg"
    ],
    "imageCount": 23,
    "floorplans": [
      "https://media.rightmove.co.uk/property-floorplan/cfd66f4f9/94565487/cfd66f4f96f06a2f3778df104b8679a7.jpeg"
    ],
    "floorplanCount": 1,
    "virtualTours": [],
    "brochures": [
      {
        "url": "https://search.savills.com/property-detail/gbCMRSCPS260214?utm_source=rightmove.co.uk&utm_medium=referral&utm_campaign=WebDetails",
        "caption": "Web Details"
      },
      {
        "url": "https://savills.fluxpro.io/Brochure/CPS260214",
        "caption": "Particulars"
      }
    ],
    "epcImages": [
      "https://media.rightmove.co.uk/property-epc/f3c2bb1e6/94565487/f3c2bb1e65ebf2936682370a382e317a.png"
    ],
    "listingStatus": null,
    "addedOrReduced": "Added today",
    "firstListedAt": "2026-10-21",
    "listingUpdatedAt": "2026-10-21T14:21:25Z",
    "listingUpdateReason": "new",
    "isFeatured": true,
    "isNewHome": false,
    "isAuction": false,
    "isRetirement": false,
    "letAvailableDate": null,
    "deposit": null,
    "minimumTermMonths": null,
    "letType": null,
    "furnishType": null,
    "agentName": "Savills, Clapham",
    "agentCompany": "Savills",
    "agentBranch": "Clapham",
    "agentBranchId": 48916,
    "agentPhone": "020 3879 5163",
    "agentAddress": "57 Nightingale Lane,, London,, SW12 8ST",
    "agentUrl": "https://www.rightmove.co.uk/estate-agents/agent/Savills/Clapham-48916.html",
    "agentLogo": "https://media.rightmove.co.uk/partner-logo/13328-LOGO-1765972937.jpeg",
    "nearestStations": [
      {
        "name": "Norbury Station",
        "types": [
          "NATIONAL_TRAIN"
        ],
        "distanceMiles": 0.78
      },
      {
        "name": "Streatham Station",
        "types": [
          "NATIONAL_TRAIN"
        ],
        "distanceMiles": 0.83
      }
    ],
    "nearestAirports": [],
    "sourceUrl": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490&sortType=6",
    "changeType": null,
    "previousPrice": null,
    "scrapedAt": "2026-10-21T13:25:42.323Z"
  },
  {
    "id": "91876368",
    "url": "https://www.rightmove.co.uk/properties/91876368",
    "channel": "buy",
    "title": "2 bedroom apartment for sale in Burford Road, London, SE6",
    "summary": "Guide price £350,000 - £375,000 Charming two-bedroom ground floor flat in a quiet residential setting, featuring a modern kitchen and bathroom, bright",
    "description": "Guide price £350,000 - £375,000\n\nSituated within a quiet and well-established residential neighbourhood, this charming two-bedroom ground floor flat offers a wonderful combination of comfort, style and convenience.\n\nThe property comprises two well-appointed bedrooms, a modern kitchen and bathroom, a...",
    "propertyType": "Apartment",
    "bedrooms": 2,
    "bathrooms": 1,
    "price": 350000,
    "priceCurrency": "GBP",
    "priceFrequency": null,
    "priceQualifier": "Guide Price",
    "priceDisplay": "£350,000",
    "priceSecondary": null,
    "pricePerMonth": null,
    "pricePerWeek": null,
    "pricePerSqFt": null,
    "tenure": "share of freehold",
    "leaseYearsRemaining": null,
    "councilTaxBand": "TBC",
    "annualServiceCharge": null,
    "annualGroundRent": null,
    "sharedOwnership": false,
    "sizeSqFt": null,
    "sizeSqM": null,
    "sizeAcres": null,
    "address": "Burford Road, London, SE6",
    "outcode": "SE6",
    "incode": "4DE",
    "postcode": "SE6 4DE",
    "country": "England",
    "latitude": 51.436174,
    "longitude": -0.032585,
    "locationAccuracy": "ACCURATE_POINT",
    "keyFeatures": [],
    "propertyFeatures": {
      "heating": [],
      "parking": [],
      "garden": [
        "Yes"
      ],
      "electricity": [],
      "water": [],
      "sewerage": [],
      "broadband": [],
      "accessibility": [],
      "floodedInLastFiveYears": null,
      "floodDefences": null,
      "floodSources": [],
      "listedBuilding": null,
      "restrictions": null,
      "rightsOfWay": null
    },
    "images": [
      "https://media.rightmove.co.uk/property-photo/1229872dd/91876368/1229872dd7800e12d32485388534011b.jpeg",
      "https://media.rightmove.co.uk/property-photo/a47093cde/91876368/a47093cde777768a1d01ade05285f687.jpeg"
    ],
    "imageCount": 12,
    "floorplans": [
      "https://media.rightmove.co.uk/property-floorplan/66c90fee6/91876368/66c90fee660ffb0ac5f34d9d0636e6c3.jpeg"
    ],
    "floorplanCount": 1,
    "virtualTours": [],
    "brochures": [
      {
        "url": "http://www.winkworth.co.uk/sale/property/FHL260176",
        "caption": "Web Details"
      }
    ],
    "epcImages": [
      "https://media.rightmove.co.uk/property-epc/123a2c5ca/91876368/123a2c5ca340c474b6dd1b8f85777c87.png"
    ],
    "listingStatus": null,
    "addedOrReduced": "Reduced on 26/08/2026",
    "firstListedAt": "2026-08-11",
    "listingUpdatedAt": "2026-08-26T17:37:34Z",
    "listingUpdateReason": "price_reduced",
    "isFeatured": true,
    "isNewHome": false,
    "isAuction": false,
    "isRetirement": false,
    "letAvailableDate": null,
    "deposit": null,
    "minimumTermMonths": null,
    "letType": null,
    "furnishType": null,
    "agentName": "Winkworth, Forest Hill",
    "agentCompany": "Winkworth",
    "agentBranch": "Forest Hill",
    "agentBranchId": 40248,
    "agentPhone": "020 3856 4168",
    "agentAddress": "9 London Road,, London,, SE23 3TW",
    "agentUrl": "https://www.rightmove.co.uk/estate-agents/agent/Winkworth/Forest-Hill-40248.html",
    "agentLogo": "https://media.rightmove.co.uk/partner-logo/67287-LOGO-1765970428.jpeg",
    "nearestStations": [
      {
        "name": "Bellingham Station",
        "types": [
          "NATIONAL_TRAIN"
        ],
        "distanceMiles": 0.6
      },
      {
        "name": "Catford Station",
        "types": [
          "NATIONAL_TRAIN"
        ],
        "distanceMiles": 0.65
      }
    ],
    "nearestAirports": [],
    "sourceUrl": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490&sortType=6",
    "changeType": null,
    "previousPrice": null,
    "scrapedAt": "2026-10-21T13:25:42.323Z"
  }
]
```

### 🔁 Scrape only new Rightmove listings with the cache

Type the same **Cache project name** on every scheduled run and the scraper remembers every property it has saved under that name. Properties already saved with the same price are **skipped before the property page is even opened**, are **not charged** and are **not counted towards Max items**. New properties get `changeType: "new"`; a property whose price changed gets `changeType: "price_change"` and the old price in `previousPrice`. Each cache name is a separate cache, so you can track several searches independently. Sort your search by newest first (`sortType=6`) and a run stops after the first page that has nothing new. Tip: put the actor on an Apify Schedule (for example daily) with the same input and cache name.

#### Example: get only the new listings for a location every day

To receive just the properties that appeared since yesterday for, say, Leeds, use this input and put the actor on a daily [Apify Schedule](https://docs.apify.com/platform/schedules) with **exactly the same input** every time:

```json
{
  "startUrls": [
    { "url": "https://www.rightmove.co.uk/property-for-sale/Leeds.html?sortType=6" }
  ],
  "maxItems": 1000,
  "scrapeDetails": true,
  "cacheProjectName": "leeds-for-sale-daily"
}
```

What happens:

1. **First run** (nothing remembered yet): up to 1,000 properties are saved, each with `changeType: "new"`. They are now remembered under `leeds-for-sale-daily`.
2. **Every later run**: properties already saved with the same price are skipped (not opened, not charged). Only listings that appeared since the last run are saved as `changeType: "new"`, and any whose price changed come as `changeType: "price_change"` with the old price in `previousPrice`.
3. `sortType=6` sorts newest first, so a run stops after the first page with nothing new. A quiet day is a single cheap request.
4. **Pick `maxItems` large enough on the first run to cover the whole location.** Anything the first run did not reach is still unknown to the cache, so a later run will collect it as "new" (up to `maxItems`) before it stops.

For another place, change the search URL (copy it from rightmove.co.uk after choosing the location and filters) and use a different `cacheProjectName`. For rentals use a `property-to-rent` URL. To track several locations in one daily run, add several start URLs; they share one cache name.

### 🐍 How to scrape Rightmove with Python, JavaScript or the API

Run the actor programmatically with the official Apify clients. Replace `<YOUR_API_TOKEN>` with the token from your [Apify Console](https://console.apify.com/account/integrations).

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("<username>/rightmove-property-scraper").call(run_input={
    "startUrls": [{"url": "https://www.rightmove.co.uk/property-for-sale/London.html"}],
    "maxItems": 50,
    "scrapeDetails": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript** (`npm install apify-client`):

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('<username>/rightmove-property-scraper').call({
    startUrls: [{ url: 'https://www.rightmove.co.uk/property-for-sale/London.html' }],
    maxItems: 50,
    scrapeDetails: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**cURL** — start a run and wait for the dataset:

```bash
curl -X POST "https://api.apify.com/v2/acts/<username>~rightmove-property-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":[{"url":"https://www.rightmove.co.uk/property-for-sale/London.html"}],"maxItems":50,"scrapeDetails":true}'
```

### 💡 What you can use Rightmove property data for

- Property price monitoring and asking-price trends by postcode, street or region
- Rental market analysis: rent per month and per week, deposits, furnishing and let types
- Lead generation for estate agents, surveyors and mortgage brokers using agent and branch details
- Investment screening: price per square foot, tenure, council tax band and EPC documents
- Alerts for newly listed, reduced or sold-STC properties with the cache

Property investors, proptech teams, estate agencies, analysts and researchers in the UK real estate industry typically use this data.

### ⚠️ Limitations of the Rightmove scraper

- **Large counts** — Rightmove's result counts change while you scrape, so a very large run can miss or repeat a few listings; repeats are removed.
- **Sold or let properties** — properties marked sold STC, under offer or let agreed only appear when your URL includes them (for example `includeSSTC=true`).
- **Rate limiting** — heavy usage may trigger rate limits; turn on a proxy for very large runs.

### ❓ Rightmove scraper FAQ

#### Can I scrape Rightmove legally?

The scraper only collects data already publicly visible on Rightmove: no login, paywall or private content is accessed. Scraping publicly available data is generally considered lawful (see *hiQ Labs v. LinkedIn*), but you are responsible for complying with Rightmove's Terms of Use and applicable laws such as GDPR if you process personal data like agent contacts.

#### What data does the Rightmove scraper return?

Price (with weekly and monthly rent), address, postcode, coordinates, bedrooms, bathrooms, property type, tenure, council tax band, size, key features and description, images, floorplans, EPC images, brochures, virtual tours, listing status (sold STC, let agreed), listing dates, lettings terms, agent name, branch, phone, address and logo, and nearest stations. Switching off **Scrape property details** keeps only what the search results show.

#### How many properties can I scrape from one Rightmove search?

**Max items per search** limits each start URL separately. Rightmove itself shows only 1,008 results per search; if you ask for more, the scraper splits the search into price ranges so you can collect several thousand properties from one URL. When a search is split, results come price window by price window starting from the lowest price rather than in your chosen sort order, and listings with no price (price on application) may be left out of the split searches. If Max items is 1,008 or less, nothing is split.

#### Do I need a proxy to scrape rightmove.co.uk?

No. The default is no proxy, and normal runs work without one. If you see blocked or rate-limited requests on very large runs, turn on Apify Proxy in the input, datacenter first.

#### How do I scrape Rightmove with Python?

Use the Python example above with the Apify client, pass your Rightmove search URLs in `startUrls` and iterate over the dataset items.

#### Can I run this Rightmove scraper on a schedule?

Yes, with Apify Schedules. Use the same **Cache project name** each time and every run saves only new properties and price changes, without being charged for properties it already has.

#### What output formats are supported?

JSON, CSV, Excel, XML and RSS, either from the **Output** tab or through the Apify API.

#### Why is a property price empty?

Properties listed as price on application have no number, so `price` is `null` and `priceDisplay` says `POA`.

### 🔗 Relevant actors for Rightmove property data

| Scraper | Description |
| ------- | ----------- |
| [OnTheMarket Property Scraper](https://apify.com/confidential_gnat/onthemarket-property-scraper) | UK sale, rent and new homes from OnTheMarket with price-change tracking. |
| [Rightmove Listing Availability Checker](https://apify.com/confidential_gnat/rightmove-listing-availability-checker) | Checks whether Rightmove property listings are still available. |
| [99acres Property Scraper](https://apify.com/confidential_gnat/99acres-property-scraper) | India homes for sale and rent from 99acres. |
| [Otodom.pl Property Scraper](https://apify.com/confidential_gnat/otodom-property-scraper) | Poland real estate listings from Otodom. |
| [QuintoAndar Property Scraper](https://apify.com/confidential_gnat/quintoandar-property-scraper) | Brazil rentals and homes for sale from QuintoAndar. |

### 🔗 Other actors you may find useful

| Scraper | Description |
| ------- | ----------- |
| [Covers.com Odds, Line History & Betting Trends Scraper](https://apify.com/confidential_gnat/covers-odds-trends-scraper) | NFL, NBA, MLB and NHL odds, line movement and betting trends. |
| [Shopify App Store Scraper](https://apify.com/confidential_gnat/shopify-app-store-scraper) | Apps, pricing and developers from the Shopify App Store. |
| [Craigslist Listings Scraper](https://apify.com/confidential_gnat/craigslist-listings-scraper) | Housing, for sale, jobs and cars listings from Craigslist. |
| [Google News AI Scraper](https://apify.com/confidential_gnat/google-news-ai-scraper) | Search Google News by keyword with article text and AI summaries. |
| [XING Jobs Scraper](https://apify.com/confidential_gnat/xing-jobs-scraper) | Job listings from XING Jobs in Germany. |

### 💬 Support & contact

If you encounter any issues or have questions, please [open an issue](https://apify.com/confidential_gnat/rightmove-property-scraper/issues/open) or reach out via the [Apify Community Forum](https://community.apify.com/).

You can also find more of our actors on the [Actor Flow](https://apify.com/confidential_gnat) page.

# Actor input Schema

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

Rightmove search result pages (for sale or to rent) or property pages, for example https://www.rightmove.co.uk/property-for-sale/London.html, https://www.rightmove.co.uk/property-to-rent/find.html?locationIdentifier=REGION%5E87490 or https://www.rightmove.co.uk/properties/93988728. Filters already in a search URL (price, bedrooms, property types, radius, include sold STC, sort order and so on) are kept, so you usually need nothing else.

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

Maximum properties saved for each start URL. Rightmove shows at most 1,008 results per search; above that the search is split by price automatically, so you can ask for thousands.

## `scrapeDetails` (type: `boolean`):

Opens each property page for the full description, all images, floorplans, EPC, council tax band, tenure, size, lettings terms, agent address and nearest stations. Turn off to save only what the search results show: faster and cheaper.

## `cacheProjectName` (type: `string`):

Use the same name on each scheduled run to get only new properties and price changes. Properties already saved under this name with the same price are skipped, not charged and not counted towards Max items. Each record gets a changeType: new or price_change.

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

Not needed for normal runs. If you see blocked or rate-limited requests on very large runs, switch on Apify Proxy (datacenter first).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490&sortType=6"
    }
  ],
  "maxItems": 5,
  "scrapeDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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&sortType=6"
        }
    ],
    "maxItems": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/rightmove-property-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&sortType=6" }],
    "maxItems": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,confidential_gnat/rightmove-property-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/6i4I4N0wfhguD0Mzu/builds/jABAC1CY5VxrUAGKc/openapi.json
