Search UK homes to rent or buy on Rightmove.
Searches Rightmove, the UK's largest property portal: homes to rent or for sale in a town, area or postcode (found with Rightmove's own location search), by price, bedrooms, type, radius and sort. Each result has the price (and monthly rent for lets), bedrooms, bathrooms, type, address, summary, added or reduced, available from, agent, coordinates, photo and link. Featured (paid extra) slots are dropped by default; premium listings stay, marked promoted.
- Site
- Rightmove, United Kingdom
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- 2a445714c7ee…
Run it with your agent
after installing WieldAsk in plain words. Your agent finds this recipe and calls it:
“Search UK homes to rent or buy on Rightmove.”
Read-only: it changes nothing on the site. No login needed.
{ "tool": "run", "arguments": { "recipe_id": "rightmove.co.uk/search-properties", "params": { "location": "Manchester", "max_price": 2000, "min_bedrooms": 2, "sort": "lowest_price" } } }
Requests
sent from your browser, in order- 1GETlos.rightmove.co.uk/typeahead?exclude&limit&queryRightmove's location search on los.rightmove.co.uk (Rightmove's own location service; the search box calls it from www with CORS). The first match becomes the locationIdentifier, e.g. REGION^904 or POSTCODE^837246.
- 2GET/{{f.path}}/find.html?index&locationIdentifier&maxBedrooms&maxPrice&minBedrooms&minPrice&propertyTypes&radius&sortTypeThe list page (server-rendered, __NEXT_DATA__ props.pageProps.searchResults). The one-item foreach picks the rent or sale path, the sort code and the page offset.
Parameters
from your agentReturns
to your agentWhere it can send
- www.rightmove.co.uk
- los.rightmove.co.uk
Anything else is blocked by the extension.
Reads from your session
Nothing. Your browser attaches the site's cookies by itself.
Used only in requests to the addresses on the left. Never sent to wield.run or your agent.
Checks
a run passes when- length(output.properties) > `15`
- starts_with(output.location, 'Manchester')
- output.total > `100`
- length(output.properties[?featured]) == `0`
- length(output.properties[?bedrooms < `2`]) == `0`
- length(output.properties[?starts_with(url, 'https://www.rightmove.co.uk/properties/') && price_gbp > `0`]) == length(output.properties)
Raw recipe
Served as canonical JSON from /api/v1/recipes/rightmove.co.uk/search-properties, so its sha256 matches the ETag and the index.
curl -s https://wield.run/api/v1/recipes/rightmove.co.uk/search-properties | shasum -a 256 # 2a445714c7ee78df5eb7727c7faaa44cee30dc90e681792a5fe8b62791537b6f
{ "description": "Searches Rightmove, the UK's largest property portal: homes to rent or for sale in a town, area or postcode (found with Rightmove's own location search), by price, bedrooms, type, radius and sort. Each result has the price (and monthly rent for lets), bedrooms, bathrooms, type, address, summary, added or reduced, available from, agent, coordinates, photo and link. Featured (paid extra) slots are dropped by default; premium listings stay, marked promoted.", "effect": "read", "id": "rightmove.co.uk/search-properties", "keywords": [ "rightmove", "property", "rent", "to let", "flat", "house", "for sale", "buy a house", "estate agent", "lettings", "pcm", "bedroom", "uk", "london", "manchester", "immobilien", "wohnung", "england", "scotland", "wales" ], "output": { "schema": { "properties": { "channel": { "type": "string" }, "location": { "description": "The place Rightmove matched", "type": "string" }, "page": { "type": "integer" }, "properties": { "items": { "properties": { "address": { "type": [ "string", "null" ] }, "agent": { "type": [ "string", "null" ] }, "auction": { "type": "boolean" }, "available_from": { "description": "Lets: YYYY-MM-DD", "type": [ "string", "null" ] }, "bathrooms": { "type": [ "integer", "null" ] }, "bedrooms": { "type": [ "integer", "null" ] }, "featured": { "description": "A 'Featured Property' slot (a paid extra placement); dropped unless include_featured", "type": "boolean" }, "first_listed": { "type": [ "string", "null" ] }, "frequency": { "description": "monthly, weekly, … for lets; not_specified for sales", "type": [ "string", "null" ] }, "id": { "type": "string" }, "image": { "type": [ "string", "null" ] }, "latitude": { "type": [ "number", "null" ] }, "listed": { "description": "e.g. 'Added today', 'Reduced on 03/11/2026'", "type": [ "string", "null" ] }, "longitude": { "type": [ "number", "null" ] }, "price_gbp": { "type": [ "number", "null" ] }, "price_text": { "description": "As Rightmove shows it, e.g. '£1,850 pcm', 'Offers over £350,000'", "type": [ "string", "null" ] }, "promoted": { "description": "Premium listing: the agent paid for a larger card; a genuine result in its normal place", "type": "boolean" }, "rent_pcm_gbp": { "description": "Rent per calendar month (weekly rents × 52 / 12)", "type": [ "number", "null" ] }, "students": { "type": "boolean" }, "summary": { "type": [ "string", "null" ] }, "title": { "description": "e.g. '2 bedroom apartment'", "type": [ "string", "null" ] }, "type": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "type": "object" }, "type": "array" }, "total": { "type": [ "integer", "null" ] } }, "required": [ "location", "channel", "properties" ], "type": "object" }, "value": "let $feat = params.include_featured == `true` in {location: steps.place.location_name, channel: params.channel || 'rent', total: steps.search[0].total && to_number(replace(steps.search[0].total, ',', '')) || `0`, page: params.page || `1`, properties: map(&(let $p = @ in {id: $p.id, title: $p.title, address: $p.address, price_gbp: $p.price, frequency: $p.frequency, rent_pcm_gbp: ($p.frequency == 'monthly' && $p.price) || ($p.frequency == 'weekly' && $p.price && floor($p.price * `52` / `12` + `0.5`)) || ($p.frequency == 'yearly' && $p.price && floor($p.price / `12` + `0.5`)) || `null`, price_text: $p.price_text, bedrooms: $p.bedrooms, bathrooms: $p.bathrooms, type: $p.type, summary: $p.summary, listed: $p.listed, first_listed: $p.first_listed, available_from: $p.available_from, agent: $p.agent, latitude: $p.latitude, longitude: $p.longitude, image: $p.image, featured: $p.featured, promoted: $p.promoted, students: $p.students, auction: $p.auction, url: join('', ['https://www.rightmove.co.uk/properties/', $p.id])}), steps.search[0].properties || `[]`)[?$feat || !featured]}" }, "params": { "additionalProperties": false, "properties": { "channel": { "default": "rent", "enum": [ "rent", "buy" ], "type": "string" }, "include_featured": { "default": false, "description": "Keep featured (paid) listings, marked", "type": "boolean" }, "location": { "description": "Town, area or postcode, e.g. 'Manchester', 'Clapham', 'SW1A 1AA'. The first match of Rightmove's location search is used", "maxLength": 80, "minLength": 2, "type": "string" }, "max_bedrooms": { "maximum": 10, "minimum": 0, "type": "integer" }, "max_price": { "description": "GBP; per calendar month when renting", "minimum": 0, "type": "integer" }, "min_bedrooms": { "maximum": 10, "minimum": 0, "type": "integer" }, "min_price": { "description": "GBP; per calendar month when renting", "minimum": 0, "type": "integer" }, "page": { "default": 1, "maximum": 42, "minimum": 1, "type": "integer" }, "property_type": { "enum": [ "flat", "detached", "semi-detached", "terraced", "bungalow", "land", "park-home" ], "type": "string" }, "radius_miles": { "default": 0, "enum": [ 0, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30, 40 ], "type": "number" }, "sort": { "default": "newest", "enum": [ "newest", "lowest_price", "highest_price", "oldest" ], "type": "string" } }, "required": [ "location" ], "type": "object" }, "provenance": { "method": "browser-inspect", "notes": "The search box calls https://los.rightmove.co.uk/typeahead?query=…&limit=10&exclude=STREET (Rightmove's location service, CORS for www with credentials; also matches postcodes: POSTCODE^837246 for SW1A 1AA). The list pages /property-to-rent/find.html and /property-for-sale/find.html are server-rendered: __NEXT_DATA__ props.pageProps.searchResults has resultCount ('3,021', a formatted string), 25 properties per page (index steps by 24) and searchParameters. sortType: 1 lowest price, 2 highest, 6 newest, 10 oldest. Featured Property cards (featuredProperty) are paid extra placements at the top; dropped by default. Premium listings (premiumListing) are genuine results with a larger card; kept and marked promoted. Weekly rents are converted to pcm × 52/12 the way Rightmove shows both. Answers servers.", "recorded_at": "2026-11-07T21:36:00+01:00", "recorded_by": "C4" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "GB", "id": "rightmove.co.uk", "language": "en", "name": "Rightmove", "origin": "https://www.rightmove.co.uk", "origins": [ "https://www.rightmove.co.uk", "https://los.rightmove.co.uk" ] }, "steps": [ { "description": "Rightmove's location search on los.rightmove.co.uk (Rightmove's own location service; the search box calls it from www with CORS). The first match becomes the locationIdentifier, e.g. REGION^904 or POSTCODE^837246.", "expect": { "assert": "length(body.matches) > `0`", "content_type": "json", "status": [ 200 ] }, "extract": { "json": { "location_id": "join('^', [matches[0].type, matches[0].id])", "location_name": "matches[0].displayName" } }, "id": "place", "request": { "credentials": "omit", "headers": { "Accept": "application/json" }, "method": "GET", "query": { "exclude": "STREET", "limit": "10", "query": "{{params.location}}" }, "url": "https://los.rightmove.co.uk/typeahead" } }, { "description": "The list page (server-rendered, __NEXT_DATA__ props.pageProps.searchResults). The one-item foreach picks the rent or sale path, the sort code and the page offset.", "expect": { "content_type": "html", "status": [ 200 ] }, "extract": { "embedded_json": { "selector": "script#__NEXT_DATA__", "vars": { "properties": "props.pageProps.searchResults.properties[].{id: to_string(id), title: propertyTypeFullDescription || `null`, address: displayAddress || `null`, price: price.amount || `null`, frequency: price.frequency || `null`, price_text: price.displayPrices[0].displayPrice || `null`, bedrooms: bedrooms, bathrooms: bathrooms, type: propertySubType || `null`, summary: summary || `null`, listed: addedOrReduced || `null`, first_listed: firstVisibleDate && firstVisibleDate[0:10] || `null`, available_from: letAvailableDate && letAvailableDate[0:10] || `null`, agent: customer.brandTradingName && join('', [customer.brandTradingName, customer.branchName && join('', [', ', customer.branchName]) || '']) || `null`, latitude: location.latitude || `null`, longitude: location.longitude || `null`, image: images[0].srcUrl || `null`, featured: featuredProperty == `true`, promoted: premiumListing == `true`, students: students == `true`, auction: auction == `true`}", "total": "props.pageProps.searchResults.resultCount" } } }, "foreach": { "as": "f", "in": "[{path: params.channel == 'buy' && 'property-for-sale' || 'property-to-rent', loc: steps.place.location_id, sort: (params.sort == 'lowest_price' && '1') || (params.sort == 'highest_price' && '2') || (params.sort == 'oldest' && '10') || '6', index: to_string(((params.page || `1`) - `1`) * `24`), radius: to_string(params.radius_miles || `0`)}]", "max": 1 }, "id": "search", "parse": "html", "request": { "headers": { "Accept": "text/html" }, "method": "GET", "query": { "index": "{{f.index}}", "locationIdentifier": "{{f.loc}}", "maxBedrooms": "{{params.max_bedrooms}}", "maxPrice": "{{params.max_price}}", "minBedrooms": "{{params.min_bedrooms}}", "minPrice": "{{params.min_price}}", "propertyTypes": "{{params.property_type}}", "radius": "{{f.radius}}", "sortType": "{{f.sort}}" }, "url": "/{{f.path}}/find.html" } } ], "task": "Search UK homes to rent or buy on Rightmove", "tos": { "notes": "Terms not reviewed yet for automated access (tos.reviewed false). One person's search: 2 requests, the same ones the search box and the list page make, no contact forms. robots.txt allows the find.html list pages. Enquiries and viewings stay on rightmove.co.uk.", "reviewed": false }, "verify": { "checks": [ "length(output.properties) > `15`", "starts_with(output.location, 'Manchester')", "output.total > `100`", "length(output.properties[?featured]) == `0`", "length(output.properties[?bedrooms < `2`]) == `0`", "length(output.properties[?starts_with(url, 'https://www.rightmove.co.uk/properties/') && price_gbp > `0`]) == length(output.properties)" ], "example_params": { "location": "Manchester", "max_price": 2000, "min_bedrooms": 2, "sort": "lowest_price" }, "max_ms": 5000 }, "version": 1 }