Rightmove Scraper - UK Sale & Rent Property Listings avatar

Rightmove Scraper - UK Sale & Rent Property Listings

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Rightmove Scraper - UK Sale & Rent Property Listings

Rightmove Scraper - UK Sale & Rent Property Listings

Extract UK residential properties for sale and rent from Rightmove by location or URL. Get prices, bedrooms, photos, tenure and available agency contacts. Pay per delivered listing row plus a start fee.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

1

Monthly active users

6 hours ago

Last modified

Security

Limited permissions

Share

Rightmove Scraper

Extract UK residential properties for sale and to rent from Rightmove as structured rows you can export.

  • Search by location or supply Rightmove search and property URLs.
  • Collect prices, bedrooms, bathrooms, property types and available tenure information.
  • Add descriptions, photos, floorplans and agency contacts when available.
  • Export rows for market research, property comparisons and scheduled monitoring.
  • Pay $3.00 per 1,000 delivered rows on the Free plan, plus a small start fee.

What does Rightmove Scraper do?

Rightmove Scraper collects residential listings from rightmove.co.uk. Each row represents one property listing, with rowType: "listing". Use the same output for sale and rental research without maintaining separate spreadsheets for each search.

  • Location search: enter a UK place in location; choose BUY or RENT with channel.
  • URL input: provide search URLs or individual property URLs in startUrls.
  • Detail enrichment: scrapeDetails is on by default. Available detail fields are added to the listing row, not billed as separate rows.
  • Several inputs: each supplied URL has its own maxItems limit, subject to the total run limits.

Only searchCategory: "residential" is supported. Commercial, overseas, student, new-home and retirement searches are not supported categories.

What data can you extract from Rightmove?

Property listing rows

Fields depend on what the listing exposes. Detail fields may be absent when scrapeDetails is off or a detail page cannot be collected.

FieldDescriptionExample
rowTypeEntity represented by the row.listing
idRightmove listing identifier.123456789
urlProperty page URL.https://www.rightmove.co.uk/properties/123456789
channelSale or rental channel.BUY
searchCategoryCategory attached to search rows.residential
displayAddressAddress text displayed by the listing.Example Street, Example Town
primaryPriceDisplay price, including rental wording when supplied.£1,500 pcm
priceAmountNumeric price when available.1500
priceFrequencyRental price interval when available.monthly
bedroomsAdvertised bedroom count.2
bathroomsAdvertised bathroom count.1
propertySubTypeProperty type from the listing.Flat
tenureAvailable sale tenure information.Freehold
summaryShort search-result description.Two-bedroom flat
descriptionLonger property description from details.Example listing description
keyFeaturesAdvertised features, up to 50 entries.["Garden"]
mainImageMain image URL from search results.https://example.com/photo.jpg
imagesDetail image URLs, up to 50 entries.["https://example.com/photo.jpg"]
floorplansFloorplan information when supplied.Source-provided entries
stationsNearby station information when supplied.Source-provided entries
lettingsInfoAvailable rental terms.Source-provided object
salesInfoAvailable sale information.Source-provided object
orgEstate agency or property broker information.{"name": "Example Estate Agents"}
phonesPublished agency telephone numbers.[{"value": "+1 555 0100", "type": "landline"}]
emailsEmpty when no email is available.[]
addressStructured address information where available.{"full": "Example Street, Example Town"}
geoCoordinates when available.{"lat": 55.95, "lng": -3.19}
webAvailable agency profile link and social-link list.{"website": null, "socials": []}
leadAbsencesReasons contact fields are unavailable.["emails:闸门锁"]
scrapedAtCollection timestamp.2026-10-24T09:00:00+00:00

The fixed absence labels include: emails:闸门锁 means email access is gated, person:未验证 means a named person is unverified, and social:本站无 means social links are unavailable. These are explanations, not contact details.

How to scrape Rightmove

  1. Open Rightmove Scraper in Apify Console.
  2. Enter a location such as Edinburgh. For URLs, use the JSON input editor with the string-array format below.
  3. Choose channel and set maxItems to 3 for a small first run.
  4. Click Start and inspect the run status and dataset.
  5. Download the rows or read them through the API.

An empty JSON input, {}, selects an Edinburgh example with up to 3 rows. This is a normal billed run, not a free preview. Filling either target field selects the search operation automatically; there is no mode field to configure.

Search by location

Set location to a UK place name. Use channel: "BUY" for properties for sale or channel: "RENT" for rentals. The place must be resolvable; an unrecognized location is not a promise of zero matching listings.

Use search URLs or property URLs

Use plain URL strings in startUrls, not objects containing url. Search URLs must include locationIdentifier. Individual property URLs identify the listing through /properties/<id>.

When URLs are supplied, they take precedence over location. Set channel explicitly for rental searches even if the URL contains property-to-rent. Do not assume other URL filters or sorting are preserved; use the documented input fields. Direct property URLs collect the identified property.

What to fill in

FieldWhat to enterDefault
locationOne UK place name; used when no URLs are supplied.Form example: Edinburgh
startUrlsRightmove search or property URLs as an array of strings.Empty
channelBUY for sale or RENT for rent.BUY
searchCategoryKeep residential; no other category is supported.residential
maxItemsMaximum rows per URL or location, from 1 to 1,050.70; form example: 3
scrapeDetailsAdd available detail fields to search rows.true
sortType6: newest; 2: highest price; 1: lowest price; 10: oldest."6"
maxPagesLegacy setting; does not limit pages in current runs. Use maxItems.1
includeRawPayloadsInclude source records as rawSrp and rawLdp; increases row size.false
requestDelayMillisPause between enriched listings in milliseconds, from 0 to 10,000.500

Location input:

{
"location": "Edinburgh",
"channel": "BUY",
"maxItems": 3,
"scrapeDetails": true
}

Search URL input:

{
"startUrls": ["https://www.rightmove.co.uk/property-to-rent/find.html?locationIdentifier=REGION%5E87490"],
"channel": "RENT",
"maxItems": 3
}

Individual property input; replace the illustrative ID with a current listing:

{
"startUrls": ["https://www.rightmove.co.uk/properties/123456789"],
"maxItems": 1
}
  • maxItems is the canonical per-input row limit. maxResults, limit and max_results are accepted aliases.
  • Unknown fields do not fail the run: close misspellings are corrected where recognized, and other unknown fields are ignored with a note.
  • Unsupported sortType values are ignored. Invalid target values can stop the run with INVALID_INPUT: <field> — <how to fix> before any row is charged. A start charge can still apply.
  • Normal runs write INPUT_REPORT in the default key-value store, showing supplied, normalized, filled and ignored fields. Check it when the result differs from your input.

Output example

Illustrative rental row; identifiers and personal details are placeholders:

{
"rowType": "listing",
"id": "123456789",
"url": "https://www.rightmove.co.uk/properties/123456789",
"source": "rightmove",
"channel": "RENT",
"searchCategory": "residential",
"displayAddress": "Example Street, Example Town",
"primaryPrice": "£1,500 pcm",
"priceAmount": 1500,
"priceFrequency": "monthly",
"bedrooms": 2,
"bathrooms": 1,
"propertySubType": "Flat",
"org": {"name": "Example Estate Agents"},
"phones": [{"value": "+1 555 0100", "type": "landline"}],
"emails": [],
"scrapedAt": "2026-10-24T09:00:00+00:00"
}

Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. Nested fields are easiest to retain in JSON. The OUTPUT and RUN_SUMMARY records contain run counts, timestamps and warnings; ERROR_SUMMARY records errors when available.

Why use this Rightmove scraper?

  • Pay for delivered rows. Detail enrichment belongs to the same property row.
  • Keep usable results. Partial rows returned before the collection deadline can be delivered. Rows already written remain available if the run stops; rows not yet delivered are not guaranteed after an abort.
  • Understand missing values. Unavailable details stay empty rather than being invented.
  • Compare locations. Several search URLs can be supplied in one run.
  • Repeat research. Schedule searches and compare exported rows by listing ID and collection time.
  • No proxy setup. You do not need to set up proxies.

How much does it cost to scrape Rightmove?

The Actor uses pay-per-event pricing. The start event costs $0.005 per GB of selected memory, with a minimum of one event. At the default 512 MB, one normal run start costs $0.005. Platform usage is included in these prices.

Apify planStart at 512 MBPrice per rowPrice per 1,000 rows
Free$0.005$0.0030$3.00
Starter$0.005$0.0030$3.00
Scale$0.005$0.0026$2.60
Business$0.005$0.0022$2.20
Platinum$0.005$0.0020$2.00
Diamond$0.005$0.0016$1.60
  • maxItems applies to each URL, or to the location search when URLs are empty. The default is 70; larger requests are collected in parts of at most 70 rows.
  • Free-plan runs are capped at 200 rows in total. Free-plan users have 10 total runs of this Actor; paid plans remove that run-count cap. These are limits set by the publisher.
  • The whole run is bounded by Maximum cost per run, called maxTotalChargeUsd in the API. Set it as a run option, not inside the input JSON.
  • Fewer matching listings or incomplete collection can produce fewer rows than requested.

Example: three search URLs delivering 5 rows each produce 15 rows. On the Free plan at 512 MB, the charge is 15 × $0.003 + $0.005 = $0.050. An empty result has no row charge, but the start charge still applies.

Use with AI agents and the API

Apify MCP server

For Claude, ChatGPT, Cursor or VS Code clients that support remote MCP servers, add:

https://mcp.apify.com?tools=lentic_clockss/rightmove-property-scraper

Sign in with Apify when prompted, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool provides run and dataset identifiers; read the rows with get-dataset-items.

Clients without remote MCP support can run npx @apify/actors-mcp-server --tools lentic_clockss/rightmove-property-scraper with their token in APIFY_TOKEN.

Example prompt: "Find three residential properties for sale in Edinburgh. Return the price, bedrooms and listing URL."

Apify API

Use the same JSON input as in Console.

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lentic_clockss/rightmove-property-scraper").call(
run_input={"location": "Edinburgh", "channel": "BUY", "maxItems": 3}
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('lentic_clockss/rightmove-property-scraper')
.call({ location: 'Edinburgh', channel: 'BUY', maxItems: 3 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

For HTTP, send the input JSON to POST https://api.apify.com/v2/acts/lentic_clockss~rightmove-property-scraper/runs with an Authorization: Bearer <YOUR_APIFY_TOKEN> header. After the run finishes, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.

Standby HTTP endpoint

Base URL: https://lentic-clockss--rightmove-property-scraper.apify.actor.

MethodRoutePurpose
GET/Service information and readiness.
GET/healthService health response.
GET/input-exampleSample Actor input.
GET/openapi.jsonOpenAPI document.

These routes provide information, not dataset collection. Although the OpenAPI document also lists POST /search, that operation is not implemented by this Actor's HTTP service. Start collection through the normal Actor API above.

Integrations

Use Apify Schedules for recurring runs. Connect exported rows to Google Sheets, Make, Zapier, n8n, Slack or Airtable through integrations, or notify your application with a webhook.

FAQ

Public availability does not remove legal obligations. Check Rightmove's terms and applicable data-protection requirements for your use. Personal data requires a lawful basis; you are responsible for how you collect, store and use it.

Why did my run end as ABORTED?

A run can be aborted by a user or an external action. Check its status message and logs. This Actor does not automatically pause and resume runs; do not treat ABORTED as a promise that rows will arrive later.

How many results can I get?

Request 1 to 1,050 rows per input with maxItems. The actual count depends on available listings, collection success and the total charge limit. Free-plan runs stop at 200 rows in total.

Why are some fields empty?

The source may omit them, detail enrichment may be disabled, or a detail request may fail. Agency email addresses and named-person details are not guaranteed. The Actor does not submit contact forms to obtain missing information.

Can I collect sale and rental properties?

Yes. Set channel to BUY or RENT. Use separate runs for sale and rental searches; a rental URL alone does not change the channel setting.

Why did my Free-plan access stop after 10 runs?

The publisher limits Free-plan users to 10 total runs of this Actor. The run summary explains when this cap is reached. A paid Apify plan removes this particular limit.

Does maxPages limit my results?

No. It remains a compatibility field, but current runs paginate according to maxItems, available results and the run limits.

Does it collect property details?

Yes. Search rows are enriched when scrapeDetails is true, its default. An individual property URL requests that property's details directly.

Limitations

  • Only residential sale and rental searches are supported. Sold-price history is not exposed as an Actor input.
  • Search URLs need a usable locationIdentifier. Other URL filters are not guaranteed to carry over.
  • Use plain strings for startUrls; URL objects are not handled correctly by the current input processing.
  • Phone numbers, tenure, photos, stations and rental terms depend on what each listing supplies.
  • Image and feature lists are capped at 50 entries. Optional raw records may be trimmed or omitted for size.
  • No complete-market coverage or automatic recovery after an aborted run is guaranteed.

More real estate and property data scrapers from the same publisher:

Browse all of our scrapers at apify.com/lentic_clockss.

Support

Report problems or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.