Is There a Rightmove API? How to Get UK Listing Data

Every developer who builds anything for the UK property market eventually runs the same search: is there a Rightmove API? This time the results look encouraging. There genuinely is a developer portal at api-docs.rightmove.co.uk, with a sign-in, app registration, and API keys waiting at the end. So you register, you create an app, you go looking for the endpoint that returns listings, and it isn't there.
It was never going to be there. Here's the honest version of the answer, plus the part most articles skip: what you can actually run today.
The short answer
Yes, Rightmove has official APIs. No, none of them let you read listings. That's the distinction almost every "Rightmove API" article gets wrong, in both directions: half of them claim no API exists, the other half link the developer portal without mentioning which way the data flows.
Rightmove's own developer end-user licence agreement names the family: the Commercial API, the New Homes API, the Overseas API, and the UK Sales and Lettings API. Every one of them is a feed that estate agents and their software providers use to push property data into Rightmove. The Real Time Data Feed specification is refreshingly blunt about the direction of travel: you POST to sendpropertydetails, and the closest thing to a read call, getbranchpropertylist, hands back your own branch's properties. Not anyone else's. The newer Commercial Listings API sits behind a portal titled "Early adopters," is limited to commercial stock, and tells residential agents to keep using the data feed.
There's a third door, and it's the one most articles miss entirely. Rightmove Data Services is a real and substantial product line: an Automated Valuation Model, a Surveyors Comparable Tool, a Market Intelligence Centre, Property Risk Alerts, several of them offered with API integration. It is also sold by talking to a sales team, priced for lenders and surveyors, and built to answer "what is this house worth" rather than "give me every two-bed flat in E8 under £600,000."

Three official doors, none of them opening onto listing search. Which leaves you with the same set of options everyone else has, and they differ a lot in cost, effort, and how often they page you at 3am.
Why Rightmove doesn't open a read API
It helps to see the numbers before you take the closed door personally. In its 2025 full-year results, Rightmove reported 16.8 billion minutes spent on its site and apps over the year, an 89% share of all time spent on UK property portals in December 2025 by Comscore's measure, and over 85% of that traffic arriving direct or organic. On the other side of the marketplace sat 16,385 estate agency branches paying to advertise, out of 19,272 total memberships.
Listing distribution is the product. Those 16,385 branches are paying, month after month, for access to that audience. An open read API would let anyone rebuild a competing portal on Rightmove's inventory in a weekend, which is a strange thing to sell for the price of a free developer key. The same report notes that Rightmove spent the year overhauling its commercial API specifically to ingest richer data. Even when they invest in APIs, the arrow points inward.
The terms of use close the loop. Rightmove's site terms prohibit bots, crawlers, scrapers and other automated means of collecting content, and separately prohibit using the platform for property market research intended for commercial gain without written consent from their legal team. That second clause is the one people miss, and it's broader than the anti-bot one.
Portal APIs point in whichever direction protects the portal's revenue. Rightmove's point inward, because that is where the money is.
Your actual options in 2026
Every route to Rightmove listing data is a trade between money, engineering time, and fragility. The honest comparison:
| Option | Pricing | Setup effort | Where it hurts |
|---|---|---|---|
| Official Rightmove feeds (RTDF, Commercial, New Homes, Overseas) | Included with membership | Days, plus an agency or feed-provider account | Upload only. You publish your own stock and read your own branch back. There is no search across the market, and access assumes you're a Rightmove member. |
| Rightmove Data Services | Contact sales | Weeks, contract-shaped | Valuations, comparables and market analytics, not live listing search. No self-serve signup and no published price list. |
| DIY scraper (headless browser plus proxies) | "Free," plus proxies and your time | Days to build, forever to maintain | Bot detection, layout changes, IP bans. Plus the location problem below, which eats your first week before you fetch a single listing. |
| Scraper marketplaces (e.g. Apify actors) | From $15/month rental, plus platform usage and proxies | Hours | You still own schemas, dedup, pagination and monitoring. Actors break when the site shifts underneath them, and you find out from your users. |
| Hosted REST endpoints (RealtyAPI) | Free tier of 250 requests/month; paid plans from $20/month for 20,000 | Minutes | Read-only and UK-only. You cannot publish listings to Rightmove through it, and it covers Rightmove's world rather than the whole UK market. |
The location problem nobody warns you about
Here's the detail that turns a Rightmove scraper from an afternoon into a fortnight. Rightmove does not search by place name. It searches by an internal identifier, the kind that looks like REGION^87490 or OUTCODE^…, and every search request needs one. Before you can ask for "flats in Clapham," you have to build and maintain a mapping from human input to Rightmove's identifier space, including outcodes, stations, and regions that overlap in ways no postcode file will tell you about. This walkthrough is a good look at how much work that one step really is:
If you're weighing the build-it-yourself route seriously, we've written up the general trade-off in web scraping vs. using an API. Short version: scraping wins when the data has no API at any price and your volume is tiny. It loses the moment uptime matters.
Is scraping Rightmove even legal?
The question everyone asks quietly. The unsatisfying answer: scraping publicly visible pages isn't automatically unlawful in the UK, but Rightmove's terms prohibit it explicitly, and the commercial-research clause is written broadly enough to cover a lot of what a proptech startup would want to do. Add UK database rights and GDPR obligations around agent contact details, and the picture gets muddier rather than clearer. We cover the landscape properly in is website scraping legal? and explain how we source data in is RealtyAPI legal? The practical read hasn't changed in years: the legal risk is ambiguous, the engineering pain is certain, and most teams quit scraping because of maintenance rather than lawyers.
What RealtyAPI's Rightmove endpoints cover
RealtyAPI runs hosted Rightmove endpoints as part of its real estate data platform: you call a normal REST endpoint with an API key, and proxies, identifier resolution and anti-bot plumbing stop being your problem. Thirteen endpoints across six groups:
| Endpoint | What it returns |
|---|---|
GET /details/byid | Full listing record by numeric id: address, photos, prices, beds, baths, property type, key features, description, floorplans, EPC, tenure, council tax band, branch, lat/lon |
GET /details/byurl | The same record, from a Rightmove listing URL |
GET /details/byaddress | The same record from a free-text UK address, plus resolvedAddress, a matchConfidence score, and near-miss alternatives |
GET /search/bylocation | Listings for a town, city, neighbourhood, region, station or outcode, with the full filter set |
GET /search/byzip | The same search, keyed on a full postcode or outcode |
GET /search/bycoordinates | The same search, within a radius in miles of a lat/lon point |
GET /search/byurl | Replays an existing Rightmove search URL, filters and all |
GET /agent/details | Branch name, address, phone, opening hours, logos, and sales/lettings capabilities |
GET /sold-prices | Land Registry sold-price history for a location: sale date, price, property type, tenure, address |
GET /autocomplete | Ranked location suggestions, each with the locationIdentifier a search needs |
GET /address | Every full address for a UK postcode |
GET /commercial/search/bylocation | Offices, retail, industrial, leisure and land, for sale or to let, with size in sq ft |
GET /commercial/details/byid | One commercial listing: price per sq ft, sizings, use classes, tenure, brochures, agent |
Auth is a single x-realtyapi-key header and responses are JSON. Most calls cost one request against your plan; a few of the heavier ones, like address resolution, cost more, and the pricing page says which.

The filters that make it feel like Rightmove
Generic listing APIs treat Britain as a slightly damp version of everywhere else, which is how you end up unable to answer "unfurnished two-bed, garden, no shared ownership, added this week." These are the UK-native parameters that matter, and all four search endpoints accept the same set:
searchType:BUYorRENT. On the rent channel,priceRangeis read as pounds per month and each result carriesmonthlyRentpropertyType: British stock types rather than American ones, includingterraced,semi_detached,bungalow,park_homeandstudent_hallsmustHaveanddontShow: the same vocabulary in both directions, coveringgarden,parking,new_home,retirement,house_share,shared_ownership,auctionandstudentletType:long_term,short_termorstudent, because a serviced let and an assured shorthold tenancy are not the same marketfurnishType:furnished,part_furnishedorunfurnished, on the rent channel onlydaysSinceAdded:1,3,7or14, which is the cheapest way to run a daily "what's new" jobincludeUnavailable: set it totrueto keep sold, under-offer and let-agreed listings in the results, which is how you measure how fast a street actually movesradius: miles, up to 40, around the resolved centre pointkeywords: free text against the description, for the things that never became a filter ("period property", "loft conversion")
Sold prices, the endpoint nobody else mentions
Every scraper comparison online stops at live listings. /sold-prices is the one that changes what you can build, because it returns Land Registry completion history for a location: what actually sold, when, for how much, and on what tenure. Filter by propertyType, by tenure (FREEHOLD or LEASEHOLD), and by soldIn to restrict to the last N years.
Asking prices tell you what sellers hope for. Sold prices tell you what buyers agreed to. Put the two together for one postcode and you have the gap that every valuation tool, comparables report and "is this listing overpriced" feature is built on. That's a genuinely different product from a listings feed, and it's one request.
Quick-start: UK listings in three requests
Base URL: https://rightmove.realtyapi.io. Auth: your key in the x-realtyapi-key header. The free tier gives you 250 requests a month with no card, which is enough to feel out the shapes before you commit, and the docs cover key setup in a couple of minutes.
1. Resolve the location
curl "https://rightmove.realtyapi.io/autocomplete?input=clapham&channel=RENT" \
-H "x-realtyapi-key: YOUR_KEY"
You get back up to ten ranked suggestions covering regions, outcodes and stations, each carrying a locationIdentifier in Rightmove's own REGION^87490 format. This is the step that costs a DIY scraper its first week, and here it is one request. You can skip it entirely if you're happy passing a free-text location and letting the search endpoint resolve it for you.
2. Search
curl -G "https://rightmove.realtyapi.io/search/bylocation" \
-H "x-realtyapi-key: YOUR_KEY" \
--data-urlencode "location=Clapham" \
--data-urlencode "searchType=RENT" \
--data-urlencode "priceRange=min:1800,max:2800" \
--data-urlencode "bedroomsRange=min:2,max:2" \
--data-urlencode "furnishType=unfurnished" \
--data-urlencode "mustHave=garden" \
--data-urlencode "daysSinceAdded=7" \
--data-urlencode "sortOrder=newest" \
--data-urlencode "resultCount=40"
Each listing carries an id, address, photos, displayed and numeric prices, beds, baths, property type, listing date, and a branch summary whose branch.id feeds /agent/details. Paging is a boolean: the response includes nextPage, and you keep incrementing page until it's false. Note the ceiling on resultCount: 40 records per page is Rightmove's own server cap, not ours, so a large area is a paging job rather than one fat request.
3. Pull the full record
curl "https://rightmove.realtyapi.io/details/byid?propertyId=LISTING_ID" \
-H "x-realtyapi-key: YOUR_KEY"
If all you have is a URL somebody pasted into Slack, /details/byurl takes it directly. If all you have is an address, /details/byaddress will resolve it, as long as you include a postcode or outcode for it to anchor on.
A production-ish Python loop
Same flow, with the pagination and error handling you actually want, since any API fronting live web data will occasionally have a bad minute upstream:
import requests
BASE = "https://rightmove.realtyapi.io"
HEADERS = {"x-realtyapi-key": "YOUR_KEY"}
def get(path, **params):
r = requests.get(BASE + path, params=params, headers=HEADERS, timeout=60)
r.raise_for_status()
return r.json()
def search(location, **filters):
"""Yield every listing for a location, one page at a time."""
page = 1
while True:
data = get("/search/bylocation", location=location,
page=page, resultCount=40, **filters)
listings = data.get("properties") or data.get("results") or []
if not listings:
break
for listing in listings:
yield listing
if not data.get("nextPage"):
break
page += 1
new_this_week = search(
"Clapham",
searchType="RENT",
priceRange="min:1800,max:2800",
bedroomsRange="min:2,max:2",
daysSinceAdded=7,
)
seen_branches = {}
for listing in new_this_week:
branch = (listing.get("branch") or {})
seen_branches[branch.get("id")] = branch.get("name")
print(listing.get("id"), listing.get("monthlyRent"))
print(f"{len(seen_branches)} agents listed in Clapham this week")
Two small things worth copying. Break on an empty page as well as on nextPage, because "no results" and "no more results" arrive differently and you don't want an infinite loop discovering that at 40 requests a minute. And collect branch.id as you go: agent-level aggregation is the cheapest interesting analysis in UK property data, and you already have the field.

The commercial half everyone forgets
Rightmove Commercial runs on a separate backend from the residential site, with its own channels, which is why residential search endpoints return nothing for offices and warehouses no matter how you filter. It's a real market: Rightmove's 2025 results put over 60% of all time spent on UK commercial property portals on its own platform, and commercial revenue grew 13% that year.
/commercial/search/bylocation takes channel=buy or channel=rent, filters by propertyType across office, retail, industrial, leisure, land, healthcare and hotel, and, crucially, by minSize and maxSize in square feet. Square footage is the axis commercial search actually turns on, and it's the one thing residential APIs never model. Pair it with /commercial/details/byid for price per sq ft, use classes and brochures.
What you still can't get
Honesty section, because a comparison table that only lists other people's limitations isn't a comparison table. These endpoints return what's on Rightmove now: live listings, their details, current filters, plus Land Registry completions. They are not a time machine for asking prices. If you want to track how a listing's price moved over eighteen months, you capture snapshots yourself on a schedule; the loop above plus a cron job and a Postgres table gets you further than you'd expect, and we walk through that pattern in building price drop alerts.
Nor is this a Rightmove partnership. If you're an estate agent who needs to publish stock to Rightmove, none of the above helps and the Real Time Data Feed is genuinely what you want; go and get a membership. And if your product needs to span countries, Rightmove stops at the Channel, which is why the platform pairs it with the other portals we've written up: StreetEasy for New York, Redfin, and Realtor.com.
Key takeaways
- Rightmove's official APIs exist and point inward. The Real Time Data Feed, the Commercial API and their siblings let members publish listings and read back their own branch. There is no public search endpoint waiting behind that sign-in page.
- Data Services is the enterprise door, not the developer one. Valuations, comparables and market intelligence, sold by contract to lenders and surveyors. Worth knowing about; not what you integrate on a Thursday.
- The location identifier is the hidden cost of DIY. Rightmove searches by internal region ids, so a scraper needs a resolver before it needs a parser. Budget for that, or use an endpoint that hands you one.
- Sold prices are the differentiator. Land Registry completion history next to live asking prices is what separates a valuation product from a listings clone, and almost no scraper comparison mentions it.
- Whatever route you pick, keep the integration one layer thick. When a source changes, you want to swap one client file, not an application's worth of parsing assumptions.
If you're building for the UK market, the fastest way to find out whether this data fits your product is to run the three requests above on the free tier, point them at your own postcode, and see what comes back. Two hundred and fifty requests is enough to know by lunchtime.