Rightmove Properties Scraper avatar

Rightmove Properties Scraper

Pricing

from $1.26 / 1,000 results

Go to Apify Store
Rightmove Properties Scraper

Rightmove Properties Scraper

UK properties for sale and to rent from Rightmove: address, price, bedrooms, tenure, geo coordinates, selling agent, images and listing dates. Search by place name - locations are resolved for you.

Pricing

from $1.26 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

UK properties for sale and to rent from Rightmove — address, price, bedrooms, bathrooms, tenure, latitude/longitude, the selling agent, images and listing dates.

Search by plain place name; locations are resolved for you. HTTP only, no browser, no login.

Input

{
"channel": "buy",
"locations": ["London", "Bath"],
"minPrice": 300000,
"maxPrice": 750000,
"minBedrooms": 2,
"maxPages": 5
}

locations also accepts a Rightmove identifier (REGION^87490) or a full Rightmove search URL, so you can paste whatever you already have.

What you get

recordTypeOne perCarries
SEARCH_SUMMARYlocationresolved identifier and display name, other matches for an ambiguous name, upstream match count, the reachable ceiling, pages fetched, duplicates dropped, how many rows were featured
PROPERTYlistingid, URL, address, price, bedrooms/bathrooms, tenure, geo coordinates, agent, images, listing dates — plus the raw upstream object
ERRORfailed inputwhy
{
"recordType": "PROPERTY",
"propertyId": 148711631,
"propertyUrl": "https://www.rightmove.co.uk/properties/148711631",
"displayAddress": "One Hyde Park, Knightsbridge, London, SW1X",
"propertySubType": "Apartment",
"bedrooms": 5, "bathrooms": 5,
"price": 60000000, "priceDisplay": "£60,000,000", "currency": "GBP",
"latitude": 51.501871, "longitude": -0.161945,
"tenure": "LEASEHOLD",
"agentName": "Global 1, London",
"isFeatured": false
}

Known limits — read these before you rely on the output

Rightmove reports far more matches than you can actually retrieve. A London sale search reports 59,420 matches, but paging is capped at roughly 1,025 properties — index 1000 returns rows, index 1025 returns none. The count is not a lie about the market; it is a lie about what is reachable. Both numbers are on every summary (upstreamResultCount and reachableCeiling), and the run logs a warning when they diverge.

To get past the ceiling, narrow the search rather than paging deeper — price bands, bedroom counts, or smaller locations (borough instead of "London"). Several narrow searches beat one wide one.

Featured listings are placed first regardless of sort. Between 2 and 9 of every 25 rows are promoted, so the top of a price-sorted page is routinely out of order. Every row carries isFeatured, and the summary reports featuredRowsReturned, so you can drop them before sorting yourself.

Sale and rent prices are not the same kind of number. Rent rows carry priceFrequency: "monthly" and an allDisplayPrices list holding both "£5,000 pcm" and "£1,154 pw". Comparing a rent price to a sale price without reading the frequency compares one month's rent to a purchase price.

A price of £1 is a real listing, not a parsing bug. Auction and guide-price listings carry a nominal amount with a priceQualifier such as "Guide Price". They are flagged with isNominalPrice rather than being dropped or nulled. Separately, some listings display "POA" while still carrying a real price — the amount is present even though the site hides it.

Ambiguous place names pick the top match. "London" resolves to REGION^87490, but Rightmove also offers Wimbledon, Central London and South London for that query. The runners-up are reported in the summary as locationAlternatives, so you can tell when you got a different Richmond than you meant. Pass an identifier directly to be certain.

Bad filter values return an empty page, not an error — so this actor refuses unknown sorts, property types, channels and radii up front. Without that, a typo would look like "nothing matched" rather than "you sent a bad filter".

Rightmove's own property categories are loose. A bungalow search returns some rows sub-typed Land or Detached. That is upstream's classification, passed through unchanged.

Technical

Server-rendered Next.js; the whole page of results is strict JSON inside <script id="__NEXT_DATA__"> at props.pageProps.searchResults — no HTML parsing at all. 25 properties per page, paged with &index= in steps of 24.

The TLS fingerprint pool is an allowlist, not a preference. On the same URL, chrome124, chrome120, safari17_0, safari15_5 and edge101 all return 200, while chrome131 and firefox133 are refused with an empty-body 403. Only verified-passing profiles are used, so a retry can never rotate into a guaranteed block.

robots.txt was checked at path level on both hosts used — the search path and the location typeahead.

Full recon trail is in CRAWLING_METHOD.md.