Rightmove Property Search, Price Drops and Sold Prices avatar

Rightmove Property Search, Price Drops and Sold Prices

Pricing

from $1.00 / 1,000 property returneds

Go to Apify Store
Rightmove Property Search, Price Drops and Sold Prices

Rightmove Property Search, Price Drops and Sold Prices

Rightmove scraper for UK property searches: address, price, bedrooms, agent, photo and link per property, newest first, for sale or to rent. New Rightmove listings alert and Rightmove price drop monitor built in, plus UK sold house prices by postcode. No login. Pay per property returned.

Pricing

from $1.00 / 1,000 property returneds

Rating

0.0

(0)

Developer

Adrian Voss

Adrian Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Share

A Rightmove scraper for UK property searches. Type a town or postcode, or paste any Rightmove search link with its filters, and get one row per property, newest first: address, asking price, price qualifier, bedrooms, bathrooms, agent and branch, first-listed date, coordinates, photo and link. Turn on monitoring and the same search becomes a new Rightmove listings alert and a Rightmove price drop monitor, and one tick adds UK sold house prices by postcode. No login, no browser, no proxy needed. You pay per property returned.

Who it's for

  • Property investors and buy-to-let landlords watching a town, a postcode or a price band for fresh stock and reductions before other buyers ring the agent.
  • Estate agents, sourcing agents and valuers who want a daily table of new instructions, price cuts and withdrawn properties in their patch, with the agent branch on every row.
  • Home hunters who would rather get a Slack message or a Google Sheets row than refresh the results page ten times a day.
  • Analysts and developers feeding Rightmove listings into n8n, Make, Clay, a database or an AI agent without maintaining their own scraper.

Why this one

  • Monitoring is built in. The other Rightmove scrapers on the Store return a snapshot and stop; none of memo23, automation-lab or azzouzana tracks changes between runs at all. Here a named watchlist remembers every property between scheduled runs and returns only what is new, cheaper, dearer or gone. See Monitoring.
  • A fraction of the run cost. We charge $0.00005 to start a run where memo23, automation-lab and azzouzana all charge $0.005, so an hourly watchlist costs about a third of theirs. A run with nothing new or cheaper costs only that start fee.
  • Never charged for nothing. A search with no matches, an unknown place, a run with nothing new or cheaper, price rises and gone properties are all free. Duplicates that shift between pages are removed before you are billed.
  • Sold prices in the same table. One tick adds the median of the most recent sales for each postcode outcode, from Rightmove's public house-prices pages. See Sold prices.
  • Honest about what Rightmove shows. A "gone" row means the property left the search, which is sold subject to contract, let or withdrawn. Rightmove never says which, and neither do we.
  • Business data only. Agent name and branch are the listing's own business contact details.

How to use

  1. In the Apify Console. Open the actor page and click Start — the searches field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~rightmove-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"searches":["Manchester"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
  1. In the Input tab, type one search per line: a place name (Manchester, Milton Keynes, Leeds) or an outcode (N11, SW1P), or paste a search link from rightmove.co.uk.
  2. For a typed place, pick For sale or To rent and the optional price, bedroom, property type and radius limits under "Search filters". A pasted link keeps its own filters and its own sale-or-rent choice.
  3. Set "Most properties to return per search" to your budget (100 by default, up to 1,000).
  4. To watch the search instead of running it once, turn on monitoring under "Monitoring" and schedule the actor hourly or daily. The first run returns everything as new and remembers it.
  5. For a place with a common name or a filter this form does not offer (tenure, keywords, "added in the last 24 hours"), set it on rightmove.co.uk and paste the search link. Only the sort is forced, to newest first.

Input

{
"searches": [
"Manchester"
]
}

One per line: a place name or outcode such as "Manchester" or "N11" (use the sale/rent setting below), or a search link copied from rightmove.co.uk with all its filters. Results always come back newest first. Accepted formats: Manchester, N11, https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490&minBedrooms=2&maxPrice=600000, https://www.rightmove.co.uk/property-to-rent/find.html?locationIdentifier=REGION%5E787.

The other settings are optional: sale or rent, price, bedrooms, property type and radius for a typed place, "Add sold-price context", the monitoring options, and the usual output filters (onlyFound, includeKeywords, excludeKeywords, maxResults, columns).

How to filter

Optional, additive inputs on top of the existing sale/rent, price, bedrooms and radius settings. Client-side filters run before billing — a dropped property is never charged. Leave them empty and the dataset is the same as before, plus two alias columns: title (copy of displayAddress) and listedAt (copy of firstVisibleDate).

1. Only sold-subject-to-contract excluded is not a filter here — Rightmove's search already drops SSTC on typed places. For Manchester sales under £500,000 in a named neighbourhood:

{
"searches": ["Manchester"],
"maxPrice": 500000,
"cities": ["Didsbury"]
}

cities is a contains match on the address string (Rightmove has no separate city column).

2. Like-new is not a grade on Rightmove. Cheapest flats whose address mentions "Victorian":

{
"searches": ["Manchester"],
"propertyType": "flat",
"includeKeywords": ["Victorian"],
"sortBy": "price_asc"
}

3. Available-only / made-to-order do not apply (this is housing, not goods). Exclude new-builds from the title and keep newest first (the default fetch order):

{
"searches": ["N11"],
"excludeKeywords": ["new build"],
"sortBy": "newest",
"maxListings": 20
}

sortBy reorders only the properties this run fetched. Leave it empty to keep Rightmove's newest-first page order.

Output

One row per property. Every row starts with the search summary (searchUrl, totalAvailable, listingCount, truncated, newCount, priceDropCount, priceRiseCount, goneCount, monitorStatus, medianPrice), then the property:

FieldWhat it is
propertyId, urlRightmove's property ID and the link to the listing
displayAddress, postcodeOutcodeThe address as Rightmove shows it, and its outcode (N11, SW1P) when the address carries one
price, currency, priceQualifier, priceFrequencyAsking price in GBP; Guide Price, Offers in excess of and similar; monthly or weekly for a rental
transactionType, propertySubTypesale or rent; Detached, Terraced, Flat and so on
bedrooms, bathrooms, summaryAs the agent published them
agentName, agentBranchThe estate agent and its branch
addedOrReduced, firstVisibleDate, listingUpdatedAtRightmove's "Added today" / "Reduced on 23/09/2026" text, when it first appeared, and when it was last added or reduced
latitude, longitude, imageUrlLocation and the main photo
isFeaturedA paid featured placement, shown out of date order
changeType, previousPrice, priceDeltaPct, firstSeenAt, lastSeenAt, daysListedMonitoring, null when it is off
soldMedianPrice, soldSampleSizeSold-price context, null unless it is on

Three table views are ready in the Output tab: Overview, Listings and Changes (new properties, price drops, price rises and gone properties).

A search with no matches comes back as one summary row with listingCount: 0 and is not charged. A place Rightmove does not know comes back as found: false, also free.

queryfoundstatussearchUrltotalAvailablelistingCounttruncatednewCountpriceDropCountpriceRiseCountgoneCountmonitorStatusmedianPricepropertiespropertyIdurldisplayAddresstitlepostcodeOutcodepricecurrencypriceFrequencypriceQualifiertransactionTypepropertySubTypebedroomsbathroomssummaryagentNameagentBranchaddedOrReducedfirstVisibleDatelistedAtlistingUpdatedAtlatitudelongitudeimageUrlisFeaturedscrapedAt
ManchestertrueOK<properties returned (billed)><all properties found (full list)><title (same as address)><rent period (monthly / weekly)><price qualifier (guide price, offers in excess of ...)><added / reduced><listed at (same as first listed)><featured listing (paid promotion)>1970-01-01T00:00:00.000Z

A real row, from a monitored search of "Manchester" (2+ bedrooms, up to GBP 400,000, sold prices on). The outcode is empty because Rightmove's address for this property carries none, so there is no sold-price context for it:

{
"query": "Manchester",
"found": true,
"status": "OK",
"scrapedAt": "2026-09-28T10:44:27.082Z",
"searchUrl": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E904&maxPrice=400000&minBedrooms=2&radius=0.0&includeSSTC=false&sortType=6&index=0",
"listingCount": 20,
"totalAvailable": 4250,
"truncated": true,
"newCount": 20,
"priceDropCount": 0,
"priceRiseCount": 0,
"goneCount": 0,
"monitorStatus": "CHANGES",
"medianPrice": 230000,
"propertyId": "93644556",
"url": "https://www.rightmove.co.uk/properties/93644556",
"displayAddress": "Palatine Road, Manchester",
"postcodeOutcode": null,
"price": 190000,
"currency": "GBP",
"priceFrequency": null,
"priceQualifier": "Offers Over",
"transactionType": "sale",
"propertySubType": "House",
"bedrooms": 2,
"bathrooms": 1,
"summary": "Situated in the charming Northenden village, this stylish house on Palatine Road offers a delightful blend of...",
"agentName": "Hunters",
"agentBranch": "Hunters, South Manchester",
"addedOrReduced": "Added today",
"firstVisibleDate": "2026-09-28T11:35:59Z",
"listingUpdatedAt": "2026-09-28T11:41:10Z",
"latitude": 53.411098,
"longitude": -2.254971,
"imageUrl": "https://media.rightmove.co.uk:443/dir/crop/10:9-16:9/property-photo/5f63be185/93644556/5f63be18520036616b676a15467c01cc_max_476x317.jpeg",
"isFeatured": false,
"soldMedianPrice": null,
"soldSampleSize": null,
"changeType": "new",
"previousPrice": null,
"priceDeltaPct": null,
"firstSeenAt": "2026-09-28T10:44:27.164Z",
"lastSeenAt": "2026-09-28T10:44:27.164Z",
"daysListed": 0
}

Example runs

Three inputs that need no API key or login and return rows as they stand. Paste one into the Input tab and press Start.

1. A new Rightmove listings alert for two-bed homes in Manchester

{
"searches": ["Manchester"],
"transactionType": "sale",
"minBedrooms": 2,
"maxPrice": 300000,
"maxListings": 100,
"deltaMode": true,
"alertOnNewOnly": true,
"deltaName": "manchester-2-bed-under-300k"
}

The first run returns everything currently listed as new and remembers it. Schedule the same input hourly and each later run returns only properties that appeared since.

2. UK sold house prices by postcode, next to what is on the market now

{
"searches": ["N11"],
"maxListings": 25,
"includeSoldPrices": true
}

Every row carries soldMedianPrice and soldSampleSize for its outcode, so asking price and recent sold prices sit in one table.

3. Rentals in Leeds, newest first

{
"searches": ["Leeds"],
"transactionType": "rent",
"minBedrooms": 1,
"maxPrice": 1200,
"maxListings": 50
}

price is per month for a rental and priceFrequency says so.

Monitoring: only what changed

Turn on "Only return properties that are new, cheaper, dearer or gone since the last run" and each search becomes a watchlist, stored in a named key-value store on your own Apify account between runs.

  • New: a Rightmove property ID this watchlist has never returned.
  • Price drop / price rise: a property it has seen whose asking price moved by at least "Smallest price change to report" (0.5% by default) since it was last reported. previousPrice and priceDeltaPct (signed, negative is cheaper) say by how much.
  • Gone: the property left the part of the search this run read. See below.
  • Unchanged properties are dropped before billing, so a quiet run costs only the start fee and returns one summary row with monitorStatus: NO_CHANGES.
  • What is returned: with both alert boxes off (the default) every change is returned: new, price drop, price rise and gone. Tick "Alert on new properties only" or "Alert on price drops" to narrow it; tick both for new properties and price drops only.
  • What is billed: new and cheaper properties. Price rises and gone rows are returned free.
  • First run: everything is new. Turn on "Seed silently" to remember it all without returning or billing it, so a webhook does not get a hundred messages on day one.
  • Watchlist name: leave it empty and one is derived from your filters. Type a name to keep one memory across a filter change. A property not seen for 30 days is forgotten, so the store stays small.

Gone properties

Rightmove never says why a property left a search, so a gone row means it was delisted: most often sold subject to contract, sometimes let, withdrawn, or edited out of your filters. Each gone row carries the last known details, price (the last asking price), firstSeenAt, lastSeenAt and daysListed.

How it decides: a run only sees the newest properties in your search, and one that slid below that window is still on the market. So each property's position in the newest-first feed is remembered, and one that disappeared is called gone only if, after counting new arrivals and properties whose price was just reduced (Rightmove moves those to the top), it should still have been inside the part of the search this run read. Properties near the bottom edge are never called gone, featured placements are never used, and a run where a page failed makes no gone check at all. For a reliable sold signal, set "Most properties to return per search" comfortably above the number of new listings you expect between runs.

Sold prices

Tick "Add sold-price context" and each row gets soldMedianPrice and soldSampleSize: the median of the latest sale of each property on Rightmove's public house-prices page for that row's postcode outcode (up to 25 recent sales). It reads one house-prices page per distinct outcode, at most 20 per search, at no extra charge. A row whose address carries no outcode, or an outcode Rightmove has no page for, stays empty. Individual sale records are not returned, only the median and the count.

Pricing

  • Property returned: $2 per 1,000 listings

Plus a $0.00005 start fee per run. Each event above is billed independently, only when it actually returns data — misses (found:false) are never charged.

You pay per property returned. Empty searches, unknown places, price-rise and gone rows, and unchanged properties on a monitored search are never charged.

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~rightmove-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"searches":["Manchester"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~rightmove-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"searches":["Manchester"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~rightmove-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"searches":["{{search}}"]}, mapping the row's search into the searches array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "Rightmove scraper: new listings, price drops, sold prices" — the agent will find and run this actor.

FAQ

What can I type as a place? A town, city or area (Manchester, Milton Keynes, Camden) or a postcode outcode (N11, SW1P). If Rightmove does not recognise it the row says so (free), and pasting the search link from rightmove.co.uk always works.

Which filters can I use? For a typed place: sale or rent, price from/to, minimum bedrooms, property type and radius. For anything else, set it on rightmove.co.uk and paste the search link. All its filters are kept; only the sort order is forced to newest first.

How many properties per search? Up to 1,000 per search per run, newest first (Rightmove itself stops at about 1,000). totalAvailable tells you how many match in total.

Does it need a proxy or a browser? No. Rightmove serves its results pages over plain HTTP, and this actor reads the data embedded in them. Apify's default proxy is used and no login is needed.

Does it identify itself as a crawler? No. It sends an ordinary browser User-Agent, and only reads pages that Rightmove's robots.txt allows for all visitors.

Why is one property flagged isFeatured? Rightmove puts one paid featured property at the top of every results page, out of date order. It is returned like any other row and marked so you can filter it.

Is a "gone" property really sold? Not necessarily. See Gone properties.