Rightmove Scraper
Pricing
from $0.90 / 1,000 results
Rightmove Scraper
[๐ฐ $0.9 / 1K] Extract property listings from Rightmove.co.uk โ buy, rent, and sold prices. Search by location or paste URLs, filter by price, bedrooms, property type, and radius. Get full details: agent contacts, photos, floorplans, EPC, council tax, and more.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
2
Monthly active users
11 hours ago
Last modified
Categories
Share
Pull UK property listings from Rightmove.co.uk at scale โ for-sale homes, rentals, and sold-price history with full agent contacts, photos, floorplans, full postcode and coordinates, council tax band, tenure, and nearest tube/train stations on the same flat row. Built for UK property investors, estate agents tracking competitors, lead-gen teams, and proptech / data platforms that need fresh Rightmove data without hand-crafting search URLs or maintaining a parser.
Why This Scraper?
- All three Rightmove channels in one actor โ for-sale, to-rent, and sold-price history. Auto-detected from the URL or chosen with a single dropdown.
- Type a city, town, or postcode โ no URL building required โ "London", "SW1A 1AA", "Newcastle upon Tyne" all resolve straight to Rightmove's location automatically. Competing scrapers force you to hand-craft
OUTCODE-style search URLs; this actor does the lookup for you. - Nine property-type filters wired to Rightmove's UI โ Houses, Flats, Bungalows, Land, Commercial, Farms, Parking, New Homes, or Any.
- Eleven radius bands โ
This area only, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30, and 40 miles. Mirrors the dropdown on Rightmove's own search page. - Up to ~1,000 results per query โ paginates Rightmove's full ceiling: 42 pages of 24 on for-sale and rental searches, 40 pages of 25 on sold prices, before the platform caps further results.
- Branch contact card on every for-sale and rental row โ branch name, phone (when published by the agent), branch landing page, profile URL, listings URL, logo, address, and full agent description HTML.
- Tenure, council tax band, lease years and ground rent on the same row โ no extra request, no nested dataset. Freehold / leasehold / share-of-freehold, years remaining on the lease, and annual ground-rent and service-charge figures wherever the agent published them, plus a direct link to the listing's EPC certificate.
- Nearest train and tube stations with walking distance โ name, distance, and station type (national rail, tube, light rail) per listing.
- The 10 nearest schools with Ofsted ratings โ name, Ofsted grade, straight-line distance, age range, pupil count, faith affiliation, and state / independent status, plus a direct link to each school's Ofsted inspection report.
- Machine-readable new-build, featured and premium flags โ
isNewHome,isFeaturedandisPremiumListingon every row, plus the rawlozengesbadges, so you can separate genuine search matches from paid placements without reading a word of the listing copy. - Honest
maxResultscap โ exact integer, no rounding to 50. Set 73 and you get 73 (or one full final page over โ never trimmed to under-deliver).
Use Cases
Investment & Portfolio Analysis
- Compare for-sale asking prices against sold-price history to surface under-priced listings
- Build CMA-style comparable lists by postcode, radius, and bedroom count
- Track rental yields by combining
rentchannel data withsoldchannel purchase data - Monitor price reductions (
listingUpdateReason: "Reduced") across a target area
Estate Agent Competitive Intelligence
- Pull every active instruction for a competing branch via
agent.listingsUrl - Benchmark instruction volume by postcode month over month
- Track average days on market and reduction frequency by branch
- Map an agent's branch network across the UK
Lead Generation
- Build outreach lists for renovation contractors targeting recently-listed properties
- Source mortgage broker leads from new-build and high-priced listings
- Power conveyancer and removal-company campaigns by postcode and listing date
- Surface landlord targets via the
to-rentchannel for property-management pitches - Compare nearby schools alongside listings (toggle
includeNearestSchoolson)
Market Research & Journalism
- Quantify housing supply by region with bedroom-count and price-band breakdowns
- Track new-build inventory across England, Scotland, Wales, and Northern Ireland
- Build longitudinal price-per-sqft datasets for media and policy reports
- Compare leasehold vs. freehold composition by city
Proptech & Data Products
- Power valuation models with structured prices, sqft, tenure and EPC bands where the agent published them
- Feed search portals with a fresh, normalised UK listing feed
- Build alerting systems triggered by new listings or price reductions in a target area
- Enrich existing CRM records with current Rightmove URLs and agent contacts
Getting Started
Search by Location (simplest)
{"searchLocation": "London","channel": "buy","maxResults": 50}
Filtered Rental Search
Two-bed-plus rentals in Manchester under ยฃ1,500 pcm:
{"searchLocation": "Manchester","channel": "rent","bedroomsMin": 2,"priceMax": 1500,"maxResults": 100}
Sold-Price History
Pull the public sold-price record for a postcode area:
{"searchLocation": "SW1A 1AA","channel": "sold","maxResults": 200}
Full-Featured Search (filters + enrichment)
Three-bed houses around Oxford within five miles, sorted price-ascending, with price history and schools enabled:
{"searchLocation": "Oxford","channel": "buy","propertyType": "houses","bedroomsMin": 3,"bedroomsMax": 4,"priceMin": 400000,"priceMax": 800000,"radiusMiles": "5","sortBy": "price-asc","maxResults": 200,"includePriceHistory": true,"includeNearestSchools": true,"includeNearestStations": true}
Paste a Rightmove URL
Search-results pages, individual property pages, and sold-price pages all work. Filters embedded in the URL โ including draw-area polygons and Property Status โ are honoured exactly:
{"startUrls": ["https://www.rightmove.co.uk/property-for-sale/London.html","https://www.rightmove.co.uk/properties/123456789","https://www.rightmove.co.uk/house-prices/sw1a.html"],"maxResults": 100}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | string[] | [] | Paste Rightmove URLs directly. Supports search results, individual property pages (/properties/123456789), and sold-price pages (/house-prices/...). Channel is auto-detected from the URL. |
searchLocation | string | "London" | Type a city, town, area, or postcode (e.g. "London", "Manchester", "SW1A 1AA"). Resolved to Rightmove's location automatically. Leave empty if using Start URLs. |
Search Filters
These apply to Search Location only โ URLs carry their own filters.
| Parameter | Type | Default | Description |
|---|---|---|---|
channel | select | buy | For Sale (Buy), To Rent, or Sold Prices. |
propertyType | select | any | Any Type, Houses, Flats / Apartments, Bungalows, Land, Commercial, Farms, Parking, or New Homes. |
bedroomsMin | integer | none | Minimum bedrooms (0โ10). |
bedroomsMax | integer | none | Maximum bedrooms (0โ10). |
priceMin | integer | none | Minimum price in GBP. For rentals, this is monthly rent. |
priceMax | integer | none | Maximum price in GBP. For rentals, this is monthly rent. |
radiusMiles | select | 0 | Search radius: This area only, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30, or 40 miles. |
sortBy | select | newest | Newest Listings, Oldest Listings, Price: Low to High, or Price: High to Low. |
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 100 | Hard cap on listings across all inputs. 0 = unlimited. Results may slightly overshoot if the cap falls mid-page โ you get the full last page rather than a trimmed one. |
includePriceHistory | boolean | false | Fetch the historical sold-price record for each listing's address when available. Adds an extra request per listing. |
includeNearestSchools | boolean | false | Include the 10 nearest schools with Ofsted ratings, distance, age range, pupil count and state / independent status. Adds an extra lookup per listing. |
includeNearestStations | boolean | true | Include nearest train and tube stations with walking distance. |
includeSoldSTC | boolean | false | Also return properties that are sold subject to contract, under offer, or let agreed. Rightmove hides these by default; the stage appears in displayStatus. |
Output
Every listing is one flat row. The same shape applies across buy, rent, and sold โ channel-specific fields (rental term, sold-date) populate when relevant and stay blank otherwise.
What's available per channel
| Field group | Buy | Rent | Sold |
|---|---|---|---|
| Core (id, url, title, propertyType, bedrooms, price, displayAddress) | yes | yes | yes |
Structured address (postcode, outcode, incode, ukCountry, latitude, longitude) | yes | yes | blank โ Rightmove's sold-prices page does not expose these |
Agent contact card (agent.*) | yes | yes | not applicable |
Tenure (tenure, yearsRemainingOnLease) | yes | rarely โ a tenancy has no tenure to state | yes |
| Council tax, EPC, features, images, floorplans | yes | yes | not applicable |
Rental terms (letAvailableDate, letType, furnishType, deposit) | not applicable | yes | not applicable |
Description (description, descriptionHtml) | yes | yes | not applicable โ a sold-price record is a land-registry entry, not an advert |
Transaction history (priceHistory[] โ every recorded sale of that address, newest first) | on request | on request | yes, always |
A few row-level notes:
agent.phoneis populated when the branch has published a landline. Some withdrawn or let-agreed listings omit the phone โ the field is present but blank.epc.certificateUrllinks the listing's own EPC document and appears on roughly 6 in 10 for-sale and rental rows.epc.currentRatingcarries the AโG letter wherever the agent stated it in the listing, which works out at about 1 row in 5 across a typical mixed search and over half on Scottish searches, where the Home Report band is quoted as a matter of course.epc.potentialRatingis different: agents almost never publish the potential band, so treat that one field as a rare bonus rather than a column to plan around. Where no letter is available you still get the certificate link.- On
buyandrentrows,firstVisibleDateandlistingUpdateDateare full ISO timestamps. Onsoldrows they carry the land-registry completion date as Rightmove prints it ("29 Apr 2026"), because that is the only date the public record publishes.
Example: For-Sale Listing
{"id": "123456789","url": "https://www.rightmove.co.uk/properties/123456789","channel": "buy","title": "3 bed semi-detached house","displayAddress": "Acacia Road, London, SW19","postcode": "SW19 4HJ","outcode": "SW19","incode": "4HJ","ukCountry": "England","latitude": 51.4189,"longitude": -0.2014,"propertyType": "Semi-Detached","bedrooms": 3,"bathrooms": 2,"sizeSqFeetMin": 1280,"sizeSqFeetMax": 1280,"price": 875000,"priceDisplay": "ยฃ875,000","priceQualifier": "Guide Price","pricePerSqFt": 683.59,"currency": "GBP","firstVisibleDate": "2026-04-12T09:14:00Z","listingUpdateDate": "2026-05-01T11:02:00Z","listingUpdateReason": "Reduced on 01/05/2026","displayStatus": "For Sale","productLabel": "Premium","isNewHome": false,"isFeatured": false,"isPremiumListing": true,"tenure": "Freehold","councilTaxBand": "E","tags": ["Garden", "Off-Street Parking"],"features": ["Three double bedrooms", "Modern kitchen", "Private garden"],"epc": { "currentRating": "C", "potentialRating": "B", "certificateUrl": "https://..." },"images": ["https://media.rightmove.co.uk/img/1.jpg"],"floorplans": ["https://media.rightmove.co.uk/floorplan/1.jpg"],"agent": {"name": "Foxtons Wimbledon","url": "https://www.rightmove.co.uk/estate-agents/agent/...","phone": "020 1234 5678","displayAddress": "12 The Broadway, Wimbledon, SW19 1RF","profileUrl": "https://www.rightmove.co.uk/estate-agents/...","listingsUrl": "https://www.rightmove.co.uk/property-for-sale/branch/..."},"nearestStations": [{ "name": "Wimbledon", "distance": 0.4, "unit": "miles", "types": ["NATIONAL_TRAIN", "TUBE"] }],"scrapedAt": "2026-05-07T10:30:00Z"}
Example: Sold-Price Record
A sold row is a land-registry entry, so it carries no advert copy, agent, or photos โ but it does carry every recorded sale of that address:
{"id": "5ffe93f9-bef3-497e-ace0-a8101e10ae23","url": "https://www.rightmove.co.uk/house-prices/details/5ffe93f9-...","channel": "sold","title": "2 bed Terraced","displayAddress": "40, Burnham Road, Birmingham B47 6AT","propertyType": "Terraced","bedrooms": 2,"price": 270000,"priceDisplay": "ยฃ270,000","currency": "GBP","tenure": "Freehold","firstVisibleDate": "29 Apr 2026","displayStatus": "Sold","sold": true,"archived": true,"priceHistory": [{ "date": "29 Apr 2026", "price": 270000, "event": "sold" },{ "date": "29 Nov 2023", "price": 272000, "event": "sold" }],"scrapedAt": "2026-08-19T16:12:00Z"}
priceHistory is where the sold data lives: one entry per completed transaction, newest first, so a single row shows you both the latest sale price and what the property changed hands for last time.
Core Fields
| Field | Type | Description |
|---|---|---|
id | string | Rightmove listing identifier |
url | string | Canonical Rightmove URL |
channel | string | buy, rent, or sold |
title | string | Short headline built from bed count and property type โ "3 bed semi-detached house" on for-sale and rental rows, "2 bed Terraced" on sold rows |
propertyType | string | Sub-type (Semi-Detached, Flat, Bungalow, etc.) |
bedrooms | integer | Number of bedrooms |
bathrooms | integer | Number of bathrooms |
sizeSqFeetMin | integer | Lower bound of internal size |
sizeSqFeetMax | integer | Upper bound of internal size |
tags | string[] | Listing tags (Garden, Parking, etc.) |
description | string | Plain-text description |
descriptionHtml | string | HTML description |
features | string[] | Bullet-point key features |
scrapedAt | string | ISO timestamp of extraction |
Address & Location
| Field | Type | Description |
|---|---|---|
displayAddress | string | Address as shown on the listing |
postcode | string | Full UK postcode where available |
outcode | string | Postcode prefix (e.g. SW19) |
incode | string | Postcode suffix (e.g. 4HJ) |
ukCountry | string | England, Scotland, Wales, or Northern Ireland |
latitude | number | Coordinate |
longitude | number | Coordinate |
Pricing & Status
| Field | Type | Description |
|---|---|---|
price | integer | Numeric price in GBP |
priceDisplay | string | Formatted price (ยฃ725,000, ยฃ1,500 pcm) |
priceQualifier | string | Guide Price, Offers Over, POA, etc. |
secondaryPrice | string | Weekly equivalent for rentals where shown |
pricePerSqFt | number | Asking price per square foot, on listings where Rightmove publishes a floor area |
currency | string | Always GBP |
firstVisibleDate | string | ISO timestamp of first listing (buy / rent); the printed completion date on sold rows |
listingUpdateDate | string | ISO timestamp of last update (buy / rent); the printed completion date on sold rows |
listingUpdateReason | string | Added on 12/06/2026, Reduced today, Added yesterday, etc. |
displayStatus | string | For Sale / To Rent while available, then Sold STC, Under offer, or Let agreed (turn on Include Sold STC to receive those) |
productLabel | string | Featured, Premium, or Standard |
isNewHome | boolean | New build or part of a development โ filter your results yourself without reading the copy |
isFeatured | boolean | Paid featured placement, so you can tell promoted listings from plain search matches |
isPremiumListing | boolean | Paid premium placement |
lozenges | string[] | Rightmove's own badges on the listing, e.g. ["NEW_HOME"] |
archived | boolean | Listing archived |
published | boolean | Listing published |
sold | boolean | Listing has sold |
Tenure, Tax & Running Costs
| Field | Type | Description |
|---|---|---|
tenure | string | Freehold, Leasehold, or Share of Freehold |
yearsRemainingOnLease | integer | Lease years remaining (leaseholds only) |
councilTaxBand | string | A through H |
councilTaxExempt | boolean | Property exempt from council tax |
councilTaxIncluded | boolean | Council tax bundled in rent |
domesticRates | string | Northern Ireland equivalent |
annualGroundRent | number | Annual ground rent in GBP (pence preserved) |
annualServiceCharge | number | Annual service charge in GBP (pence preserved) |
groundRentPercentageIncrease | number | Stated annual escalator |
groundRentReviewPeriodInYears | integer | Years between ground-rent reviews |
Rental-Specific Fields
Populated when channel: "rent".
| Field | Type | Description |
|---|---|---|
letAvailableDate | string | Available-from date |
deposit | integer | Required deposit in GBP |
minimumTermInMonths | integer | Minimum tenancy length |
letType | string | Long term, Short term, Student |
furnishType | string | Furnished, Unfurnished, Part Furnished |
Energy, Highlights & Media
| Field | Type | Description |
|---|---|---|
epc | object | {currentRating, potentialRating, certificateUrl} โ certificateUrl on ~6 rows in 10, currentRating (AโG) wherever the agent stated the band, potentialRating rarely |
highlights | object | electricity, broadband, water, sewerage, heating, accessibility, parking, garden, risks, obligations |
images | string[] | All property photo URLs |
floorplans | string[] | All floorplan image URLs |
brochures | string[] | Linked brochure PDFs |
Agent Contact
| Field | Type | Description |
|---|---|---|
agent.name | string | Branch / agency display name |
agent.phone | string | Branch contact number |
agent.url | string | Branch landing page |
agent.profileUrl | string | Agency profile page. Rightmove serves the branch landing page and the agency profile at the same address, so this normally matches agent.url |
agent.listingsUrl | string | Page listing every active instruction at this branch |
agent.displayAddress | string | Branch street address |
agent.logoUrl | string | Agency brand logo |
agent.descriptionHtml | string | Agency description (HTML) |
Optional Sub-Collections
| Field | Type | Description |
|---|---|---|
nearestStations | object[] | [{name, distance, unit, types}] โ populated by default |
nearestSchools | object[] | [{name, type, subType, distance, unit, ofstedRating, ratingBody, inspectionReportUrl, ageRangeMin, ageRangeMax, pupilCount, gender, religion, latitude, longitude}] โ the 10 nearest, closest first, populated when toggled on |
priceHistory | object[] | [{date, price, event}] โ every recorded sale of the address, newest first. Always present on sold rows; on buy / rent rows populated when Include Price History is on |
Tips for Best Results
- Use full city names for ambiguous places. "Newcastle" alone resolves to Newcastle in Northern Ireland โ type "Newcastle upon Tyne" for the English city. Same applies to "Bromley" and any other shared place name.
- Paste a Rightmove URL when you need a filter the input form doesn't expose. Draw-area polygon searches, "Auction" property status, "Include Sold STC", and Rightmove's "Look 2 / 3 bedrooms" combinations all serialise into the URL โ paste it as a
startUrlsentry and every URL parameter is honoured exactly. - Use
channel: "sold"for true comparables. Sold-price history is the gold standard for valuation work and CMA reports โ actual transaction prices, not asking prices. - Rightmove caps any single search at roughly 1,000 listings. For large areas, split the run into multiple postcodes or smaller radii rather than expecting one search to return more.
- Keep
includePriceHistoryoff unless you need it. It adds an extra request per listing and roughly doubles run time. Default rows already include the most recent listing-update reason and date. - Sort by
oldestto find stale listings. Properties on the market for many months are often signs of price misalignment โ useful for negotiation and for spotting overpriced inventory. - Set
radiusMilesto expand commuter searches. Buyers prepared to live within 5 or 10 miles of a city centre find materially better value once you step outside the immediate postcode. - Treat a
newest-sorted run over a busy market as a moving window, not a snapshot. Rightmove counts results from the top of a live list, so in a city like London or Manchester properties listed while your run is in progress push everything down a place. You still get every result once โ duplicates are removed for you and never billed twice โ but the set spans the minutes the run took rather than a single instant. When you need a clean point-in-time cut, sort byoldestor narrow the area so the run finishes faster. - Compare like with like when you join
soldtobuydata. Sold rows come from the public land-registry record, so they carry the completion date and full transaction history but no agent, photos, or description. Join the two channels ondisplayAddressrather than expecting one row to hold both.
Pricing
From $0.75 per 1,000 results โ one flat rate whether you pull a plain listing or a fully enriched row with schools, stations and price history. No compute or time-based charges: you pay per result, plus a small fixed start fee each time a run begins. Bronze, Silver, and Gold subscribers pay progressively less, and the table below shows the total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.090 | $0.086 | $0.081 | $0.075 |
| 1,000 | $0.90 | $0.86 | $0.81 | $0.75 |
| 10,000 | $9.00 | $8.60 | $8.10 | $7.50 |
| 100,000 | $90.00 | $86.00 | $81.00 | $75.00 |
A "result" is one property row in your dataset. Duplicate properties are removed before they reach the dataset, so you are never billed twice for the same listing. Standard Apify platform fees apply on top.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n โ Workflow automation
- Google Sheets โ Direct spreadsheet export
- Slack / Email โ Notifications on new results
- Webhooks โ Trigger custom APIs on run completion
- Apify API โ Full programmatic access
Legal & Ethical Use
This actor is intended for legitimate property research, market analysis, lead generation, and proptech use cases. Users are responsible for complying with Rightmove's Terms of Service, the UK Data Protection Act, and the GDPR when handling any personal data contained in agent contact fields. Do not use extracted data for spam, harassment, or any unlawful purpose.