Rightmove Scraper & New-Listing Monitor - UK Property Data
Pricing
from $0.69 / 1,000 property returneds
Rightmove Scraper & New-Listing Monitor - UK Property Data
Turn monitoring on and every later run returns only the listings it has not returned before, so you are never charged for the same property twice. Every Rightmove.co.uk listing as clean JSON: price with its meaning, bedrooms, type, address with coordinates, agency. No agent phones. Unofficial.
Pricing
from $0.69 / 1,000 property returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Rightmove Scraper - UK Property Data, Price & Bedrooms
Pull property listings from Rightmove.co.uk — the UK's largest property portal — as clean JSON: the price as a number and what it means, bedrooms, bathrooms, size, tenure, coordinates, key features and the agency, for sale or to rent, anywhere in the UK.
Unofficial. This Actor is not affiliated with, endorsed by, or sponsored by Rightmove. All product names are trademarks of their respective owners.
No API key. Reads the same public pages a visitor sees.
Run it tomorrow and you only get what is new
Schedule this Actor with monitoringMode: true and each run returns only the listings it has not returned before. Not "here is everything again, please de-duplicate it yourself" — the Actor remembers what it already gave you, so a daily feed of a 4,000-listing search costs you the handful of new homes, not 4,000 rows every morning. You are never charged for the same property twice.
Listings your filters removed are remembered too, so widening a filter later does not resurrect them as false "new" listings. Listings that did not fit under your limit are not remembered, so they are still waiting on the next run instead of being silently lost.
Why this one is different
"POA" is not sold to you as a price
Rightmove's page data carries a numeric amount on every listing — including the ones whose displayed price is "POA" (price on application). One of the 150 listings measured shows "POA" to visitors while carrying 65,000,000 underneath.
This Actor does not pass that number off as the price. A POA listing comes back with price: null, priceDisplay: "POA" and isPriceOnApplication: true. Where Rightmove shows a figure, you get it as a number plus Rightmove's own qualifier — Guide Price, Offers Over, Offers in Excess of, Fixed Price — in priceQualifier.
Rent is labelled by its real period, and both figures are Rightmove's own
A rent on Rightmove is stored in the period the agent chose: most are monthly, some are weekly (2 of the 25 rentals measured). priceType says which — monthly-rent or weekly-rent — and rentPerMonth / rentPerWeek are read from the two figures Rightmove itself displays ("£2,448 pcm", "£565 pw"), never converted here. Sales come back as priceType: "sale".
Every row says where Rightmove actually searched
Rightmove resolves any place name to some place. Wales is a village in Somerset. Scotland is a district of Leeds. Kings Lynn is the railway station, with a half-mile radius. Instead of guessing, every row carries searchedLocation (the name Rightmove shows) and searchedLocationId (REGION^87490, OUTCODE^2506, STATION^5177), so a wrong resolution is visible in the data rather than silent.
"Not found" is not "no results"
Rightmove answers an unknown location — or a value it does not accept, such as a 2-mile radius — with an HTTP 200 and a redirect to its not-found page. Read naively, that is an empty search. This Actor follows the redirect, recognises the page, and returns a no-such-search row that says what Rightmove accepts. A search that really has zero results is a different row (no-results), and both are free. Values Rightmove would reject are refused up front with the allowed list, so you are never charged for a run that could only end in a redirect.
No branch phone numbers
Rightmove's listing data includes the marketing branch's telephone on every one of the 150 listings measured. This Actor returns the agency name, branch name and branch page, and leaves the phone out; UK phone numbers written into the summary or features are removed as well. Property data, not a contact list.
One request, 24 complete properties
Rightmove ships the full listing — price, bedrooms, bathrooms, size, tenure, coordinates, features, agency, dates — inside the search page itself. This Actor reads them from that single page and never opens individual property pages. The featured property that repeats across pages is dropped before delivery, so you are never charged twice for the same listing.
Rightmove's own filters, then yours
Price, bedrooms, property type, radius, "added or reduced within", must-haves, exclusions, furnishing and sold/let-agreed are sent to Rightmove, so the pages fetched already contain only matching properties — each of these was checked on live pages and the returned rows satisfy them. Keywords are not sent, because Rightmove ignores them in the URL (a nonsense keyword returned the full list); the keyword filter, along with bathrooms, size, tenure, agency and first-listed date, runs here on the rows already fetched. Nothing extra is requested and nothing extra is charged. A property is never dropped for a value Rightmove did not publish.
Input
Either paste a search URL, or build one from the fields below.
| Field | Type | Default | Description |
|---|---|---|---|
searchUrl | string | — | e.g. https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490 or https://www.rightmove.co.uk/property-to-rent/Manchester.html. Price, bedroom, type, radius, must-have and sort parameters are kept (a sort in the URL wins over sortBy); keywords= is dropped |
channel | string | sale | sale or rent |
location | string | London | A town (Milton Keynes), an outcode (SW1A), or an identifier from a Rightmove address (REGION^87490) |
maxListings | integer | 20 | 1–1000. One property = one row = one charged event. Rightmove itself stops at 1,008 per search |
maxPages | integer | 0 | Hard cap on requests; 0 = decide from maxListings. Rightmove has 42 pages at most |
includeSummary | boolean | true | The card teaser. The keyword filter searches it either way |
useProxy | boolean | false | Off by default — Rightmove answers Apify's network directly. Switches on by itself if blocked |
| Rightmove's own filters | |||
minPrice / maxPrice | integer | 0 | GBP. Sale total, or rent per calendar month. POA listings are kept |
minBedrooms / maxBedrooms | integer | -1 | -1 = off. 0 is a studio |
propertyTypes | array | — | detached, semi-detached, terraced, bungalow, flat, land, park-home, private-halls |
radius | string | 0 | Miles: 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30, 40 — Rightmove's steps |
sortBy | string | newest | newest (last listed or reduced), oldest, price-high, price-low |
addedOrReducedWithinDays | string | 0 | 1, 3, 7 or 14. Rightmove counts a price reduction as an update |
mustHave / dontShow | array | — | garden, parking, newHome, retirement, sharedOwnership, auction |
furnishTypes | array | — | Rent only: furnished, partFurnished, unfurnished |
includeSSTC / includeLetAgreed | boolean | false | Include sold-STC (sale) or let-agreed (rent) listings |
| Filters applied here | |||
keywords / keywordMatch / excludeKeywords | array / string / array | — | Match on title, address, summary, type, features, labels and agency |
agencyNames | array | — | Keep only these agencies (partial match) |
requirePrice | boolean | false | Drop POA listings |
minBathrooms | integer | -1 | -1 = off. An unpublished count is kept |
minSizeSqFt / maxSizeSqFt | integer | 0 | 0 = off. A listing without a size is kept |
tenureTypes | array | — | FREEHOLD, LEASEHOLD, SHARE_OF_FREEHOLD. An unpublished tenure is kept |
excludeCommercial / excludeStudents | boolean | false | Drop commercial or student listings that Rightmove mixes in |
listedWithinDays | integer | 0 | By the date the property first appeared, ignoring reductions. 0 = off |
monitoringMode | boolean | false | Return only properties not returned on a previous run |
resetMonitoringState | boolean | false | One-shot: forget what was already returned |
{ "channel": "sale", "location": "Milton Keynes", "maxListings": 100,"minBedrooms": 3, "maxPrice": 450000, "propertyTypes": ["detached", "semi-detached"],"addedOrReducedWithinDays": 7, "dontShow": ["sharedOwnership", "retirement"], "tenureTypes": ["FREEHOLD"] }
Monitoring mode turns this into a daily feed
Schedule it and set monitoringMode: true: each run returns only the properties it has not returned before. Properties removed by your filters are remembered too, so changing a filter later does not resurrect them as false "new" listings — and properties that simply did not fit under maxListings are not remembered, so they are still waiting for you on the next run rather than being silently lost. Combine with addedOrReducedWithinDays: 1 to keep each run to one or two pages.
Measured on 2026-09-05: 59,361 properties for sale and 27,624 to rent in London.
Output
One row per property:
{"source": "rightmove.co.uk","status": "ok","listingId": "90204729","title": "3 bedroom semi-detached house for sale","address": "Elsiemaud Road, London","url": "https://www.rightmove.co.uk/properties/90204729#/?channel=RES_BUY","searchedLocation": "London","searchedLocationId": "REGION^87490","channelRaw": "BUY","transactionType": "sale","isCommercial": false,"propertyType": "Semi-Detached","bedrooms": 3,"bathrooms": 2,"price": 950000,"priceCurrency": "GBP","priceType": "sale","priceDisplay": "£950,000","priceQualifier": "Offers in Excess of","isPriceOnApplication": false,"rentPerMonth": null,"rentPerWeek": null,"sizeSqFt": null,"sizeRaw": null,"tenure": "FREEHOLD","latitude": 51.45449,"longitude": -0.029782,"features": ["Sold Chain Free", "Desired Location", "Over 1500 sq. ft", "Driveway", "Landscaped Garden", "Double Glazed", "Quiet Road", "EPC - C"],"labels": [],"isNewHome": false,"isDevelopment": false,"isBuildToRent": false,"isStudentListing": false,"isAuction": false,"isPremiumListing": true,"isFeaturedListing": true,"letAvailableDate": null,"feesText": null,"agencyName": "Acorn","agencyBranch": "Acorn, Brockley","agencyUrl": "https://www.rightmove.co.uk/estate-agents/agent/Acorn/Brockley-270020.html","imagesCount": 28,"floorplansCount": 1,"virtualToursCount": 1,"mainImageUrl": "https://media.rightmove.co.uk:443/dir/crop/10:9-16:9/property-photo/…_max_476x317.jpeg","firstListedAt": "2026-06-26T16:40:02Z","lastUpdateReason": "price_reduced","lastUpdatedAt": "2026-08-29T14:40:00Z","summary": "Situated on a sought-after residential road in the heart of Brockley, …","scrapedAt": "2026-09-05T07:08:16.112Z"}
Measured across 150 live listings (149 unique) on 2026-09-05: id, title, address, url, property type, bedrooms, coordinates, agency and both dates on 150 of 150; a displayed price on 149 (the other is POA); bathrooms on 146; key features on 124; tenure on 121; a size in sq ft on 93. bedrooms: 0 is a real value (a studio, a plot, a commercial unit), not a missing one. The summary is Rightmove's card teaser and is cut short by Rightmove on about a third of listings.
Rows that are never charged
status | when |
|---|---|
no-results | Rightmove reports zero properties for this search. That is its answer, not a failure |
no-such-search | Rightmove redirected to its not-found page: the location is not one it knows, or a value is not one it accepts (radius step, property-type word, added-within days, or a page beyond its 1,008-result ceiling). Not a claim that there is nothing there |
no-filter-match | Listings were read, but your filters removed all of them. The row says how many were read |
no-new-listings | Monitoring mode: nothing new since the previous run |
unreadable | The page could not be read, its embedded data was missing, or it claimed a total above zero while yielding nothing |
Pricing
Pay per property returned. Rows that report an empty search, an unknown location, a filter that matched nothing, or a page that could not be read are not charged. A property that appears twice across pages is dropped before delivery, so it is never charged twice.
Notes
robots.txtwas read in full on 2026-09-05. Under/property-for-sale/and/property-to-rent/it disallows onlycontactBranch.html,draw-a-search.html,map.html,market-information/andnearby-schools/. This Actor requests only the listing pages (find.htmland<place>.html) with Rightmove's own query parameters plusindex=N, and refuses a pasted URL that points at a disallowed path. Student accommodation search is disallowed by Rightmove and is not offered here.- Only public pages are read. No login, no API key.