# Rightmove Scraper — UK Property Listings & Prices API | $0.8/1k (`glasswing/rightmove-scraper`) Actor

Scrape Rightmove property listings for sale and to rent: price, address, postcode district, bedrooms, bathrooms, type, tenure, key features, dates, status, photos, map position and agent branch. Search by URL or by location. Export CSV or JSON.

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

## Pricing

from $0.80 / 1,000 property listings

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

### What does Rightmove Scraper do?

Rightmove Scraper extracts **UK property listings for sale and to rent** from [Rightmove](https://www.rightmove.co.uk/), the UK's largest property portal, and delivers them as clean, structured JSON, CSV or Excel. It works as a **Rightmove API alternative**: paste a Rightmove search URL with all its filters, or just type a town, area, postcode or station and pick buy/rent, price, bedrooms and property type, and get one row per property back in seconds, without a browser, without residential proxies and without writing a scraper yourself.

Typical use cases:

- Track asking prices, rents, price reductions and new listings in the areas you invest in, every day.
- Build comparables for a valuation or a buy-to-let yield model: price, bedrooms, bathrooms, property type, tenure, floor area and exact map coordinates for every listing.
- Map the estate and letting agents active in a town: branch name, branch phone number and Rightmove branch page on every row.

It does **not** log in, read hidden data or collect private individuals' data. It reads only Rightmove's public search result pages.

### Why use Rightmove Scraper?

- **Fast and cheap.** One page request returns 24 listings (pure HTTP, no headless browser). The default run of 20 listings finishes in about 4 seconds on the Apify platform, and 1,440 rentals from six cities took 35 seconds.
- **Search the easy way.** Paste any Rightmove search URL (for sale, to rent or new homes, every filter kept), or type locations such as `Leeds`, `Clapham`, `SW1A` or `M1 1AE` and set filters. Rightmove's own location search resolves each name, and a place it does not know returns one unbilled `not_found` row instead of a wrong search.
- **Honest results.** Every row carries a `status` (`ok`, `not_found`, `error`), so you (or an AI agent calling this Actor) can tell "no property matches" apart from "the site could not be read". You are only billed for `ok` rows.
- **Business data only.** Every Rightmove listing is published by an estate or letting agent; the agent columns carry the agent's trading name, branch and the branch phone number the agent publishes. There is no field for any private person.
- **Runs anywhere Apify runs.** Schedule it, call it from the API, chain it with other Actors, or receive results via integrations (Google Sheets, Slack, webhooks, Zapier, Make).

### What data can Rightmove Scraper extract?

| Field | Type | Description |
|---|---|---|
| `propertyId` | string | Rightmove property ID (the number in the listing URL) |
| `url` | string | The listing page on Rightmove |
| `listingType` | string | `sale` or `rent` |
| `listingStatus` | string | `For sale` / `To let`, or the badge Rightmove shows: `Under offer`, `Sold STC`, `Let agreed`, `Reserved` |
| `price` | number | Asking price in GBP as a number; for rentals the rent per `priceFrequency`. Left out for price-on-application (POA) listings |
| `currency` | string | `GBP` |
| `priceFrequency` | string | Rentals only: `monthly`, `weekly`, `quarterly` or `yearly` |
| `displayPrice` | string | The price exactly as shown, e.g. `£550,000`, `£1,250 pcm`, `POA` |
| `priceQualifier` | string | `Guide Price`, `Offers Over`, `Offers in Excess of`, `Fixed Price`, ... when the agent sets one |
| `address` | string | Display address as listed by the agent |
| `outcode` | string | Postcode district, e.g. `M41`, `SW18`, when the address ends with one |
| `latitude` / `longitude` | number | Map position of the listing |
| `bedrooms` | integer | Bedrooms (0 = studio) |
| `bathrooms` | integer | Bathrooms, when the agent gives them |
| `propertyType` | string | `House`, `Flat`, `Bungalow`, `Land`, `Park home`, `Commercial` or `Other` |
| `propertySubType` | string | Rightmove's sub-type: `Detached`, `Semi-Detached`, `Terraced`, `Apartment`, `Penthouse`, ... |
| `propertyDescription` | string | Card headline, e.g. `4 bedroom detached house for sale` |
| `tenure` | string | `FREEHOLD`, `LEASEHOLD`, `SHARE_OF_FREEHOLD`, ... when published |
| `size` | string | Floor area as shown, e.g. `743 sq. ft.`, when published |
| `summary` | string | Short description from the search card |
| `keyFeatures` | array | The agent's key features bullet list |
| `addedOrReduced` | string | `Added on 04/09/2026`, `Reduced today`, ... as shown on the card |
| `listingUpdateReason` | string | Latest listing event: `new` or `price_reduced` |
| `listingUpdateDate` | string | ISO timestamp of that event |
| `firstListedDate` | string | ISO timestamp when the listing first appeared on Rightmove |
| `letAvailableDate` | string | Rentals: date the property is available from (`YYYY-MM-DD`) |
| `images` | array | Full-size photo URLs |
| `imageCount` | integer | Number of photos |
| `hasFloorplan` / `floorplanCount` | boolean / integer | Whether the listing has floorplans, and how many |
| `hasVirtualTour` | boolean | Whether the listing has a virtual tour or video |
| `agentName` | string | Estate or letting agent (trading name) |
| `agentBranch` | string | Agent branch |
| `agentPhone` | string | Branch phone number as published by the agent business |
| `agentUrl` | string | Branch page on Rightmove |
| `agentBranchId` | string | Rightmove branch ID |
| `isNewHome` | boolean | New-build / development listing |
| `isAuction` | boolean | Auction listing |
| `isCommercial` | boolean | Commercial listing that appears in a residential search |
| `searchLocation` | string | The location the search covered, e.g. `Manchester, Greater Manchester` |
| `searchUrl` | string | The Rightmove result page the row came from |
| `status` | string | `ok`, `not_found` or `error` (see below) |
| `error` | string | Reason when `status` is not `ok` |
| `scrapedAt` | string | ISO 8601 time of extraction |

A field is left out when the listing does not state it (for example `bathrooms`, `tenure` or `size`); a missing field is never a guess. The search results page does not carry the full description, room sizes, council tax band or nearby stations, so those are not in the output.

#### Result status (tri-state output)

| `status` | Meaning | Billed? |
|---|---|---|
| `ok` | The listing was found and extracted. | Yes |
| `not_found` | Rightmove answered, but the search has no results, or it knows no place with the name you typed. | No |
| `error` | Rightmove could not be read after retries (network error, block, or layout change), or the input was not a Rightmove search URL. `error` says why. | No |

### How to scrape Rightmove with Rightmove Scraper

1. Open the Actor in Apify Console.
2. Either paste Rightmove search URLs into **Rightmove search URLs** (set your filters on rightmove.co.uk, then copy the address bar), or type places into **Locations** and pick **Buy or rent**, price, bedrooms, property types, radius, **Added in the last** days and **Sort by**.
3. Set **Maximum results** (start with the default 20 to see the output). With several locations, **Maximum results per search** keeps one big city from using up the whole run.
4. Click **Start**. The default run takes about 4 seconds; rows appear in the dataset in real time.
5. Open the **Output** tab or **Export** the dataset as JSON, CSV, Excel, XML or HTML.

To automate it, use the **API** tab (Node.js, Python, curl examples) or add a **Schedule**, for example every morning with **Added in the last** set to 1 day to collect only new listings.

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

This Actor uses **pay-per-event** pricing:

| Event | Price |
|---|---|
| Actor start | $0.005 per run |
| Result (`status: ok` row) | $0.0008 per listing |

Example: 1,000 listings cost about $0.81 ($0.005 to start plus 1,000 x $0.0008). Rows with `status` `not_found` or `error` are never billed. Platform compute is included, so the start fee and the price per result are the whole price list. The $5 of monthly credit on Apify's entry plan covers about 6,000 listings. You can cap spending per run with **Maximum results** and in the run's **Max total charge** option. The Actor stops gracefully when your run's maximum charge is reached.

### Input

See the **Input** tab for the full schema. The main options:

| Field | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array of strings | newest homes for sale in Manchester | Rightmove search URLs (for sale, to rent, new homes); every filter in the URL is kept |
| `locations` | array of strings | - | Towns, areas, postcodes or stations, e.g. `Leeds`, `SW1A`, `M1 1AE`; a Rightmove location ID such as `REGION^904` works too |
| `listingType` | string | `sale` | `sale` or `rent` |
| `minPrice` / `maxPrice` | integer | - | Price range in GBP (monthly rent for rentals) |
| `minBedrooms` / `maxBedrooms` | integer | - | Bedroom range, 0-10 |
| `propertyTypes` | array | all | `detached`, `semi-detached`, `terraced`, `flat`, `bungalow`, `land`, `park-home` |
| `radius` | number | this area only | Miles around the location: 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30 or 40 |
| `maxDaysSinceAdded` | integer | any time | Only listings added in the last 1, 3, 7 or 14 days |
| `includeUnavailable` | boolean | `false` | Also return Sold STC (sale) or Let agreed (rent) listings |
| `sort` | string | `newest` | `newest`, `oldest`, `price_high`, `price_low` |
| `maxItems` | integer | `20` | Stop after this many rows in total |
| `maxItemsPerSearch` | integer | - | Cap for each search URL or location |
| `proxyConfiguration` | object | Apify Proxy off | Optional; the Actor works without a proxy, datacenter proxy is enough if you want one |

The filter fields apply to **Locations**. If you fill in Locations or a filter and leave the example URL untouched, the example is skipped, so `{"locations": ["Leeds"]}` returns only Leeds; a filter without Locations searches the example location (Manchester).

Example input (a URL search):

```json
{
    "startUrls": ["https://www.rightmove.co.uk/property-for-sale/find.html?searchType=SALE&locationIdentifier=REGION%5E904&sortType=6"],
    "maxItems": 20
}
```

Example input (locations and filters):

```json
{
    "locations": ["Leeds", "York", "LS6"],
    "listingType": "rent",
    "minBedrooms": 2,
    "maxPrice": 1500,
    "propertyTypes": ["flat", "terraced"],
    "maxDaysSinceAdded": 7,
    "maxItemsPerSearch": 200,
    "maxItems": 600
}
```

### Output

You can download the dataset in various formats such as JSON, HTML, CSV or Excel. Example rows, taken from real runs on the Apify platform (photo lists shortened):

```json
[
    {
        "url": "https://www.rightmove.co.uk/properties/93624906",
        "status": "ok",
        "scrapedAt": "2026-09-27T21:48:08.859Z",
        "propertyId": "93624906",
        "listingType": "sale",
        "listingStatus": "For sale",
        "price": 550000,
        "currency": "GBP",
        "displayPrice": "£550,000",
        "priceQualifier": "Offers Over",
        "address": "Estonfield Drive, Urmston, Manchester, M41 9RR",
        "outcode": "M41",
        "latitude": 53.448294,
        "longitude": -2.335518,
        "bedrooms": 4,
        "bathrooms": 2,
        "propertyType": "House",
        "propertySubType": "Detached",
        "propertyDescription": "4 bedroom detached house for sale",
        "tenure": "FREEHOLD",
        "summary": "CUL DE SAC LOCATION! NO ONWARD CHAIN ! TRADING PLACES ESTATE AGENTS are delighted to offer for sale this FOUR BEDROOM/TWO BATHROOM detached family residence situated on the",
        "keyFeatures": ["Views over local Allotments", "Conservatory", "Kitchen-Diner", "No Chain", "Off Road parking for several cars", "Modern fitted kitchen Contemporary kitchen", "Modern bathroom", "Mature Garden", "Close to train station", "Close to Amenities"],
        "addedOrReduced": "Added yesterday",
        "listingUpdateReason": "new",
        "listingUpdateDate": "2026-09-26T18:58:05Z",
        "firstListedDate": "2026-09-26T18:52:21Z",
        "images": [
            "https://media.rightmove.co.uk/property-photo/aa3becd4a/93624906/aa3becd4a8826b5b71b2a878de71ebf6.jpeg",
            "https://media.rightmove.co.uk/property-photo/b73eb6b9a/93624906/b73eb6b9ac37c8eaf93b8bc7ea1384b9.jpeg"
        ],
        "imageCount": 17,
        "hasFloorplan": false,
        "floorplanCount": 0,
        "hasVirtualTour": false,
        "agentName": "Trading Places",
        "agentBranch": "South Manchester",
        "agentPhone": "0161 524 7890",
        "agentUrl": "https://www.rightmove.co.uk/estate-agents/agent/Trading-Places/South-Manchester-121858.html",
        "agentBranchId": "121858",
        "isNewHome": false,
        "isAuction": false,
        "isCommercial": false,
        "searchLocation": "Manchester, Greater Manchester",
        "searchUrl": "https://www.rightmove.co.uk/property-for-sale/find.html?searchType=SALE&locationIdentifier=REGION%5E904&sortType=6"
    },
    {
        "url": "https://www.rightmove.co.uk/properties/93631143",
        "status": "ok",
        "scrapedAt": "2026-09-27T21:33:31.948Z",
        "propertyId": "93631143",
        "listingType": "rent",
        "listingStatus": "To let",
        "price": 1250,
        "currency": "GBP",
        "priceFrequency": "monthly",
        "displayPrice": "£1,250 pcm",
        "address": "Cyprus Road, Nottingham, NG3",
        "outcode": "NG3",
        "latitude": 52.971916,
        "longitude": -1.146679,
        "bedrooms": 2,
        "bathrooms": 1,
        "propertyType": "Flat",
        "propertySubType": "Flat",
        "propertyDescription": "2 bedroom flat",
        "addedOrReduced": "Added today",
        "listingUpdateReason": "new",
        "firstListedDate": "2026-09-27T19:08:07Z",
        "letAvailableDate": "2026-10-09",
        "imageCount": 17,
        "agentName": "OpenRent",
        "agentBranch": "London",
        "agentPhone": "020 3322 3265",
        "searchLocation": "Nottingham, Nottinghamshire",
        "searchUrl": "https://www.rightmove.co.uk/property-to-rent/find.html?searchType=RENT&locationIdentifier=REGION%5E1019&sortType=6"
    },
    {
        "url": "https://los.rightmove.co.uk/typeahead?query=Qqzzxxnotaplace&limit=10",
        "status": "not_found",
        "error": "No results for this page",
        "scrapedAt": "2026-09-27T21:55:00.199Z"
    }
]
```

### Benchmark (real cloud runs)

| Run | Pages | Listings | Time | Blocked requests |
|---|---|---|---|---|
| Default input (Manchester, for sale) | 1 | 20 | 4 s | 0 |
| 6 cities for sale, 5 pages each, no proxy | 30 | 720 | 9 s | 0 |
| 6 cities to rent, 10 pages each, no proxy | 60 | 1,440 | 35 s | 0 |
| London to rent, all 42 pages, no proxy | 42 | 1,008 | 44 s | 0 |
| 6 places, 20 pages each, Apify datacenter proxy | 120 | 2,880 | 142 s | 0 |

*Honest notes: measured on 2026-09-27 from Apify's cloud. Rightmove shows at most 42 pages per search, so one search returns at most about 1,000 listings.*

### Tips

- Keep `maxItems` small while testing, then raise it.
- Put several locations or URLs in one run instead of many single runs; you pay the start fee once.
- For more than about 1,000 listings in one area, split the search by price bands or bedrooms (for example `maxPrice: 250000`, then `minPrice: 250000` with `maxPrice: 400000`).
- For a daily "new listings" feed, schedule the Actor with `maxDaysSinceAdded: 1` and `sort: newest`.
- If you see `error` rows mentioning blocking, enable Apify Proxy (datacenter) in **Proxy configuration**.

### Limitations

- Rightmove shows at most 42 pages of 24 listings (about 1,000) per search; the Actor follows the pages until **Maximum results** or that last page. Split bigger pulls by price or bedrooms.
- The output comes from the search results pages: the full description, room sizes, council tax band, EPC and nearby stations of a listing page are not included.
- Sold house prices (`/house-prices/`), commercial property searches, overseas listings, map views and single listing pages (`/properties/...`) are not supported as start URLs; commercial listings that appear in normal searches are included and flagged `isCommercial`.
- Results reflect the public page at the time of the run; Rightmove may change its layout, in which case rows come back as `error` and the Actor is updated quickly (report it in the **Issues** tab).

### FAQ

#### Is it legal to scrape Rightmove?

Scraping publicly available data is generally legal, but you are responsible for how you use the output. Read the legal notice below and Rightmove's terms of use, and do not collect personal data without a legitimate reason.

#### Does the output contain personal data?

The Actor does not look for any. Rightmove listings are published by estate and letting agents, and the agent columns carry the agent's trading name, branch and the branch phone number the business publishes. Listing text is copied as the agent wrote it.

#### How do I find the right location?

Type it the way you would on rightmove.co.uk: a town (`Bath`), an area (`Clapham`), a postcode district (`SW18`), a full postcode (`M1 1AE`) or a station. The Actor uses Rightmove's own location search and takes the first place it suggests; `searchLocation` on every row shows which one it searched. For full control, set up the search on rightmove.co.uk and paste the URL.

#### Can I use this Actor from an AI agent or MCP client?

Yes. It runs with no input at all, the search fields are plain strings and numbers, every row is self-describing (`status` + `error`), and results can be fetched via the dataset API or the Apify MCP server.

#### Why did I get fewer rows than `maxItems`?

The search had fewer listings, it reached Rightmove's last page (42 pages), `maxItemsPerSearch` capped it, or the run hit your **Max total charge** limit. Check the run log for "Stopping gracefully".

#### What if a field is missing?

Optional fields are left out when the listing does not state them. If a field that should always be present is missing, open an issue in the **Issues** tab with the run ID.

### Related Actors

- [AutoScout24 Scraper](https://apify.com/glasswing/autoscout24-scraper) - use it for used-car listings instead of property.
- [Cars.com Scraper](https://apify.com/glasswing/cars-scraper) - use it for US used-car listings and dealer data.
- [Google Maps Scraper — Business Leads with Emails](https://apify.com/glasswing/google-maps-leads-2-49-1k) - use it to find local businesses and agents near a listing.
- [Ryanair API — Cheap Flight Fares & Prices](https://apify.com/glasswing/ryanair-flights-scraper) - use it to price the travel side of a relocation alongside the property search.

### Legal and data-protection notice

This Actor extracts only data that Rightmove publishes publicly; it does not extract private user data such as e-mail addresses, gender or precise personal location, and it does not log in or circumvent access controls. The phone numbers it returns are the branch numbers that estate and letting agents publish for their business. However, your results could still contain personal data. Personal data is protected by the GDPR in the European Union, the UK GDPR in the United Kingdom and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you are unsure whether your reason is legitimate, consult your lawyers. You are responsible for complying with Rightmove's terms of use and applicable law when using the extracted data.

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Rightmove or its owners. All trademarks belong to their respective owners.

# Changelog

This Actor's version history is a separate document: https://apify.com/glasswing/rightmove-scraper/changelog.md

# Actor input Schema

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

Search result pages copied from rightmove.co.uk (for sale, to rent or new homes), one per line. Every filter in the URL is kept: price, bedrooms, property type, radius, keywords, must-haves. The Actor follows the pages of each search. Leave the example here if you use Locations below; it is skipped automatically.

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

Towns, cities, areas, postcodes or stations, one per line, e.g. "Leeds", "Clapham", "SW1A", "M1 1AE". Each one is looked up with Rightmove's own location search and searched with the filters below. A place Rightmove does not know gives one free not\_found row.

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

Search homes for sale or to rent. Applies to Locations. Default: for sale.

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

Lowest asking price in GBP, e.g. `200000` for £200,000. For rentals this is the monthly rent in pounds, e.g. `1000` for £1,000 pcm.

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

Highest asking price in GBP, e.g. `500000` for £500,000. For rentals this is the monthly rent in pounds, e.g. `2000` for £2,000 pcm.

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

At least this many bedrooms, e.g. `2` (range 0-10; 0 = studio).

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

At most this many bedrooms, e.g. `4` (range 0-10; 0 = studios only).

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

Only these property types, e.g. `flat`, `terraced`. Leave empty for all.

## `radius` (type: `number`):

Also include listings this many miles around the location. Rightmove's steps are 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30 and 40; other values snap to the nearest step. Default: this area only.

## `maxDaysSinceAdded` (type: `integer`):

Only listings added to Rightmove in the last 1, 3, 7 or 14 days (other values round up to the next step). Leave empty for any time.

## `includeUnavailable` (type: `boolean`):

Also return listings that are Sold STC (for sale) or Let agreed (to rent). Under offer listings are always included, as on the website.

## `sort` (type: `string`):

Order of the results. Default: newest listed first.

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

Stop after this many rows in total. Each saved listing (status ok) is one billable result. One search returns at most about 1,000 listings (Rightmove shows 42 pages); split big areas by price or bedrooms to get more.

## `maxItemsPerSearch` (type: `integer`):

Optional cap for each search URL or location, so one big city cannot use up Maximum results before the next location runs.

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

Optional. The Actor is HTTP-only and works without a proxy. Apify Proxy (datacenter) can be switched on if you run very large jobs; residential proxies are not needed.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.rightmove.co.uk/property-for-sale/find.html?searchType=SALE&locationIdentifier=REGION%5E904&sortType=6"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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": [
        "https://www.rightmove.co.uk/property-for-sale/find.html?searchType=SALE&locationIdentifier=REGION%5E904&sortType=6"
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("glasswing/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 = {
    "startUrls": ["https://www.rightmove.co.uk/property-for-sale/find.html?searchType=SALE&locationIdentifier=REGION%5E904&sortType=6"],
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

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

```

## MCP server setup

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