Rightmove BMV Deal Finder
One run samples an area, builds the market median per bedrooms and property type, and delivers the listings priced well below their group...
One run samples an area, builds the market median per bedrooms and property type, and delivers the listings priced well below their group - below-market-value leads with the discount percent computed. Asking prices, honestly labeled. No agent contact data.
$3.86 / 1,000 · 100.0% success over 30 public runs in the last 30 days.
Run it on Apify → Free to try - runs bill per result on your own account.
What you give it
Every field is optional unless marked; sensible defaults do the rest.
| Field | Type | What it does | Default |
|---|---|---|---|
location |
string | Place to search, exactly as you would type it in the Rightmove search box: a town ("Manchester"), area ("Camden, London") or outcode ("EN2"). The first suggestion Rightmove offers for it is used. | Manchester |
channel |
string | Search properties for sale (buy) or to rent (rent). | buy |
priceMinGbp |
integer | Only include properties priced at least this many pounds. For rentals this is pounds per month. | - |
priceMaxGbp |
integer | Only include properties priced at most this many pounds. For rentals this is pounds per month. | - |
bedroomsMin |
integer | Only include properties with at least this many bedrooms. | - |
bedroomsMax |
integer | Only include properties with at most this many bedrooms. | - |
radiusMiles |
integer | Widen the search this many miles around the location. 0 = the location only. | - |
maxItems |
integer | Upper bound on deals delivered. Free-plan runs are capped at 5 items. The form starts at 25 for a cheap first run - that is the form's prefill, not a cap on your plan; clear it to use the default of 100. | 100 |
discountThresholdPct |
integer | A listing must be at least this far below its group median (same bedrooms + property type) to count as a deal. 15 is a sensible sourcing bar. | 15 |
samplePages |
integer | Result pages sampled to establish the market medians (2-42). More pages = steadier medians, longer run. | 12 |
reportFailures |
boolean | When a run fails, send the developer the actor name and build, an error category, the error message (truncated) and a one-way hash of your input - so a bug can be fixed without anyone asking you to reproduce it. Your input itself, your results and your identity are never sent, and successful runs send nothing at all. Switch this off and the actor behaves exactly the same. | True |
What you get back
One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.
A real result row from a recent run:
{
"addedOrReduced": "Added today",
"agencyName": "Auction House, South Yorkshire",
"auction": true,
"bathrooms": 1,
"bedrooms": 2,
"bucket": "2-bed flat",
"bucketMedianGbp": 125000,
"bucketSize": 9,
"channel": "buy",
"currency": "GBP",
"discountPct": 88,
"displayAddress": "Flat 22, Meridian House, 2 Artist Street, Armley, Leeds LS12 2EW",
"displaySize": null,
"featured": false,
"firstVisibleDate": "2026-10-15T13:41:36Z",
"imageUrls": [
"https://media.rightmove.co.uk:443/dir/crop/10:9-16:9/property-photo/ddfdbd0e0/94350300/ddfdbd0e00215f5098deab343ba86cb5_max_476x317.jpeg",
"https://media.rightmove.co.uk:443/dir/crop/10:9-16:9/property-photo/c7218169a/94350300/c7218169a9bee2b22919e5a9e63c4cb4_max_476x317.jpeg",
"https://media.rightmove.co.uk:443/dir/crop/10:9-16:9/property-photo/277c822b2/94350300/277c822b2191f349a8bd4a2eb5b980c5_max_476x317.jpeg",
"https://media.rightmove.co.uk:443/dir/crop/10:9-16:9/property-photo/c3f1380d7/94350300/c3f1380d7d9b424ec7eb4b3e3cce33c4_max_476x317.jpeg",
"https://media.rightmove.co.uk:443/dir/crop/10:9-16:9/property-photo/7a612eb22/94350300/7a612eb22fee778ce0e15ffa49f868f6_max_476x317.jpeg",
"https://media.rightmove.co.uk:443/dir/crop/10:9-16:9/property-photo/2a3e62796/94350300/2a3e62796b4fad0a113d968bb0b73223_max_476x317.jpeg",
"https://media.rightmove.co.uk:443/dir/crop/10:9-16:9/property-photo/1f30df9bc/94350300/1f30df9bc48e402dcb7cb0316e908db2_max_476x317.jpeg"
],
"listingUpdateDate": "2026-10-15T13:47:07Z",
"listingUpdateReason": "new",
"priceFrequency": null,
"priceGbp": 15000,
"priceQualifier": "Guide Price",
"propertyId": "94350300",
"propertyType": "Flat",
"summary": "FOR SALE VIA NATIONAL ONLINE AUCTION. BIDDING OPENS ON MONDAY 16th NOVEMBER AT 1PM, AND CLOSES TUESDAY 17th NOVEMBER FROM 11AM. REGISTER TO ...",
"tenureType": "LEASEHOLD",
"title": "2 bedroom flat for sale",
"url": "https://www.rightmove.co.uk/properties/94350300"
}
| Field | Type | Meaning |
|---|---|---|
propertyId |
string | Rightmove property ID. |
url |
string | Direct link to the property listing. |
title |
string | The site's full listing headline. |
displayAddress |
string | The address exactly as the listing displays it - the granularity the agent chose to publish. Exact coordinates are never collected. |
priceGbp |
['integer', 'null'] | Asking price in pounds; for rentals see priceFrequency (usually per month). |
currency |
string | Always GBP. |
priceFrequency |
['string', 'null'] | Rental payment frequency (monthly, weekly). Null for sales. |
priceQualifier |
['string', 'null'] | The site's price qualifier, e.g. Guide Price, Offers Over. |
bedrooms |
['integer', 'null'] | Number of bedrooms. |
bathrooms |
['integer', 'null'] | Number of bathrooms, when the listing reports it. |
propertyType |
['string', 'null'] | Property subtype, e.g. End of Terrace, Apartment, Detached. |
channel |
['string', 'null'] | buy or rent. |
tenureType |
['string', 'null'] | FREEHOLD or LEASEHOLD, when reported. |
displaySize |
['string', 'null'] | Floor area as displayed, e.g. "1,033 sq. ft.". |
summary |
string | Listing summary text as the agent wrote it. |
firstVisibleDate |
['string', 'null'] | When the listing first appeared (ISO timestamp). |
listingUpdateReason |
['string', 'null'] | Last update kind, e.g. price_reduced, new. |
listingUpdateDate |
['string', 'null'] | When the listing was last updated (ISO timestamp). |
addedOrReduced |
['string', 'null'] | The site's added/reduced banner text. |
agencyName |
['string', 'null'] | Estate agency trading name and branch - business identity only. Agent phone numbers and contact routes are never collected. |
featured |
boolean | True for featured/premium paid placements. |
auction |
boolean | True when the property is sold at auction. |
imageUrls |
array | Listing photo URLs (up to 8). |
bucket |
string | The comparison group the deal was scored in (bedrooms + property type). |
bucketSize |
integer | Priced listings in the comparison group sample. |
bucketMedianGbp |
integer | The group's median asking price in the sampled area. |
discountPct |
integer | How far below the group median this listing is priced, in percent. |
Health
100.0% success over 30 public runs in the last 30 days. Live record, failures included: status page.
Full documentation, examples and the AI-assistant prompt live on the store page.