Rightmove
Rightmove Search API
Search UK property for sale or to rent on Rightmove by location, place name or agent branch. Filter by price, bedrooms, bathrooms, property type, must-haves (garden, parking, new home), exclusions (auction, retirement, shared ownership, new home), tenure, days since added, under offer, radius, furnishing and let type. Each listing carries price with its qualifier, address, coordinates, summary, key features, images, tenure, listing dates and the agent. Costs 1 credit per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonlocation_idstringA location_id from Locations (REGION^, OUTCODE^, POSTCODE^ or STATION^). Pass exactly one of location_id, location or branch_id.
Example: REGION^219
locationstringA place name, resolved to its first location match and echoed back in data.location.
Example: Bristol
branch_idstringOnly this agent branch's listings (branch_id from Agents or a listing's agent).
Example: 201404
listing_statusstringdefault:for_saleWhich market to search.
for_sale— Property for sale; prices in GBP.for_rent— Property to rent; prices are monthly rent in GBP.
min_pricenumberMinimum price in GBP (monthly rent on for_rent).
Example: 200000
max_pricenumberMaximum price in GBP (monthly rent on for_rent).
Example: 400000
beds_minintegerMinimum bedrooms, 0-10.
Example: 2
beds_maxintegerMaximum bedrooms, 0-10.
baths_minintegerMinimum bathrooms, 1-5.
property_typesstring[]Only these property types: detached, semi_detached, terraced, flat, bungalow, land, park_home.
Example: ["detached", "semi_detached"]
must_havestring[]Only listings with all of these: garden, parking, new_home.
Example: ["garden"]
excludestring[]Leave these listing kinds out: auction, retirement, shared_ownership, new_home.
Example: ["retirement"]
tenurestringfor_sale only: freehold or leasehold.
added_within_daysintegerOnly listings added in the last 1, 3, 7 or 14 days.
include_under_offerbooleandefault:falseInclude listings under offer or sold STC (for_sale), or let agreed (for_rent).
radius_milesnumberdefault:0Widen the area by this many miles: 0, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30 or 40.
furnishingstring[]for_rent only: furnished, part_furnished, unfurnished.
let_typestringfor_rent only: long_term or short_term.
sortstringdefault:newestnewest, oldest, price_low or price_high.
pageintegerdefault:1Results page, 1-42. Stop at max_page.
Example: 2
Notes
No keyword filter. Rightmove search has no keyword or free-text filter. A request that sends keywords (or keyword) is rejected with a 400 and is not billed, rather than silently returning an unfiltered search. Every listing carries summary and key_features, so match words like "annexe" or "workshop" on your side; the Property endpoint adds the full description.
42 pages per search. A page returns 24 or 25 listings and Rightmove serves 42 pages, about 1,000 listings, per search; max_page says where this one stops. To cover a big area, slice it by price band, property type or a smaller location (an outcode instead of a city).
Place names resolve to their first match. location is resolved to the first Rightmove location that matches and echoed back in data.location. A name that matches nothing is a billed 404; use Locations and location_id when you need a specific place.
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
res = client.rightmove.search(
location_id="REGION^219",
max_price=400000,
beds_min=2,
must_have=["garden"],
)
for l in res["data"]["listings"]:
print(l["price_display"], l["price_qualifier"], l["address"], l["agent"]["name"])Response