Rightmove Scraper — UK Property Listings & Prices API | $0.8/1k
Pricing
from $0.80 / 1,000 property listings
Rightmove Scraper — UK Property Listings & Prices API | $0.8/1k
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.
Pricing
from $0.80 / 1,000 property listings
Rating
0.0
(0)
Developer
Raffy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Share
What does Rightmove Scraper do?
Rightmove Scraper extracts UK property listings for sale and to rent from Rightmove, 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,SW1AorM1 1AEand set filters. Rightmove's own location search resolves each name, and a place it does not know returns one unbillednot_foundrow 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 forokrows. - 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
- Open the Actor in Apify Console.
- 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.
- 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.
- Click Start. The default run takes about 4 seconds; rows appear in the dataset in real time.
- 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):
{"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):
{"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):
[{"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
maxItemssmall 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, thenminPrice: 250000withmaxPrice: 400000). - For a daily "new listings" feed, schedule the Actor with
maxDaysSinceAdded: 1andsort: newest. - If you see
errorrows 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 flaggedisCommercial. - Results reflect the public page at the time of the run; Rightmove may change its layout, in which case rows come back as
errorand 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 - use it for used-car listings instead of property.
- Cars.com Scraper - use it for US used-car listings and dealer data.
- Google Maps Scraper — Business Leads with Emails - use it to find local businesses and agents near a listing.
- Ryanair API — Cheap Flight Fares & Prices - 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.