How to get Rightmove listings in Python
By the end of this guide you have a CSV of Manchester flats to rent, with the letting agent's name and phone number, from one script you can run again tomorrow. Everything below was run on 15 October 2026; the output table is what it returned.
Why scraping Rightmove yourself breaks
- Rightmove has no API for reading listings. Its Real Time Data Feed is for agents and their software to upload their own properties.
- The property data sits as JSON in each search page, which makes parsing easy once you have the page.
- From cloud servers Rightmove often answers with a JavaScript check instead of the page, so a plain requests call returns no listings.
- Price and bedroom filters are part of Rightmove's own search link, and a place name has to be turned into Rightmove's location id first.
None of that is impossible, but each point is code you then maintain. The rest of this guide uses Listingrail, which does the reading and hands back clean JSON. The Rightmove API page has the official options with sources.
1. Get a key
One request with your email returns a key with 100 free listings. It is shown once, so keep it in an environment variable.
curl -X POST https://listingrail.com/v1/signup \
-H "content-type: application/json" \
-d '{"email": "you@example.com"}'
export LISTINGRAIL_KEY=re_...2. Search and save to CSV
Install requests (pip install requests), then run:
import csv
import os
import requests
r = requests.post(
"https://listingrail.com/v1/listings/search",
headers={"Authorization": f"Bearer {os.environ['LISTINGRAIL_KEY']}"},
json={"source":"rightmove","location":"Manchester","type":"rent","limit":50},
timeout=300,
)
r.raise_for_status()
listings = r.json()["listings"]
fields = ["price", "currency", "beds", "baths", "area", "address", "url"]
with open("rightmove-manchester.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(fields)
for home in listings:
writer.writerow([home[k] for k in fields])
print(len(listings), "listings saved to rightmove-manchester.csv")The request body, on its own:
{
"source": "rightmove",
"location": "Manchester",
"type": "rent",
"limit": 50
}Each listing returned costs one credit. A search that finds nothing, or fails at Rightmove, costs nothing. A request can take up to a minute or two, because Rightmove is read at that moment.
3. What comes back
The first three rows of the run on 15 October 2026:
Every listing has the same keys on all 17 portals, so the code for Rightmove reads the others too. Fields Rightmove does not show come back as null, and the portal's own record sits in raw. With pandas:
import pandas as pd
df = pd.DataFrame(listings)
df["agent"] = df["agent"].str.get("company")
print(df[["price", "beds", "baths", "area", "address", "agent"]].head())4. Get new listings and price cuts every day
Running the script on a schedule works, but then you compare the files yourself. A monitor stores the search, checks it once a day, and sends only what changed: new listings and price cuts. The free key holds one monitor.
requests.post(
"https://listingrail.com/v1/monitors",
headers={"Authorization": f"Bearer {os.environ['LISTINGRAIL_KEY']}"},
json={
"source": "rightmove",
"location": "Manchester",
"filters": {"type":"rent"},
"webhook_url": "https://example.com/new-listings",
},
timeout=30,
)Changes can also be read with GET /v1/monitors/{id}/changes or downloaded as CSV. Plans and limits are on the monitors page.
Rightmove quirks worth knowing
- Pass a town, area, outcode or postcode. For price or bedroom filters, build the search on rightmove.co.uk and pass its link as location.
- Rentals come with price_period "month" when Rightmove shows a monthly rent.
- area is in square feet when the agent gave it; many listings leave it empty.
- agent.name, agent.phone and agent.company are the branch that lists the property. listed_at is when the listing first appeared on Rightmove.
Questions
Does Rightmove allow API access?
Only for estate agents and their CRM software, and only to publish their own stock. There is no Rightmove API for searching listings.
Can I get Rightmove sold prices?
Not through Listingrail. Sold prices in England and Wales are published as open data in HM Land Registry's Price Paid Data.
How do I filter by price or bedrooms?
Set the filters on rightmove.co.uk, copy the search link, and pass that link as location.