Rightmove Scraper — Price History, Agent Contacts & EPC
Pricing
from $0.75 / 1,000 results
Rightmove Scraper — Price History, Agent Contacts & EPC
Scrape Rightmove UK largest property portal via Next.js JSON extraction. Buy, rent, sold, commercial & overseas listings with price history (reduced/new), agent phone, tenure, floorplans, EPC and full descriptions. Pure HTTP, no proxy or login needed.
Pricing
from $0.75 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Rightmove UK Property Scraper — Price History, Agent Contacts & EPC
The fastest, cheapest, and most data-rich Rightmove scraper on Apify. Extracts properties from the UK's #1 property portal — for-sale, to-rent, sold prices, commercial and overseas listings — via Next.js JSON extraction. Unlike competitors who parse HTML or run heavy browsers, we extract structured JSON directly from Rightmove's server-rendered data, giving you 50+ fields per property including agent phone numbers, price change history, days on market, tenure, floorplans and EPC ratings.
No proxy. No browser. No login. Rightmove serves its data as clean JSON — we just structure it for you.
Why This Actor?
Pure JSON Extraction — Faster & Cheaper
Rightmove is a Next.js application that embeds all search result data inside a <script id="__NEXT_DATA__"> JSON blob. We extract that blob directly — no HTML parsing, no browser rendering, no CAPTCHA solving. This means:
- Faster: 50-100 properties/second in list-only mode
- Cheaper: Zero proxy cost, minimal compute (256MB RAM)
- More reliable: JSON structure changes less often than HTML markup
- Richer data: Fields that HTML scrapers miss (listingUpdate reason, customer contactTelephone, premiumListing)
Price Change Intelligence
Rightmove exposes a listingUpdate field for every property. We surface whether a listing is new, reduced, or unchanged, with exact dates. Combined with firstVisibleDate, you get days-on-market automatically calculated. No other actor explicitly tracks price change history.
Agent Contact Built-In
Unlike most competitors that require a detail-page visit to get agent info, Rightmove includes agent phone numbers in the search result JSON. This means you can extract lead-generation data even in fast list-only mode (includeDetails: false).
All 5 Channels
| Channel | Path | Description |
|---|---|---|
| BUY | property-for-sale | Residential sales |
| RENT | property-to-rent | Residential lettings |
| SOLD | house-prices | Land Registry sold prices |
| Commercial | commercial-property-for-sale | Shops, offices, industrial |
| Overseas | overseas-property-for-sale | Spain, France, Portugal, etc. |
Data Fields
Every property record includes:
| Category | Fields |
|---|---|
| Identity | propertyId, title, propertyUrl, channel |
| Property | propertyType, propertySubType, bedrooms, bathrooms |
| Price | price (formatted), priceAmount (numeric GBP), priceQualifier, priceFrequency |
| Location | displayAddress, latitude, longitude |
| Size & Tenure | displaySize, sizeSqft, tenure, leaseYears |
| Status | listingStatus (new/reduced/unchanged), listingUpdateDate, firstVisibleDate, updateDate, daysOnMarket |
| Description | summary (from search), description (full, from detail), keyFeatures (JSON array) |
| Energy | epcRating, councilTax (from detail page) |
| Agent | agentName, agentPhone, agentBranchId, agentLogo |
| Media | images (JSON array), floorplans (JSON array), numberOfImages, numberOfFloorplans |
| Listing | premiumListing, searchLocation, scrapedAt |
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
channel | select | buy | BUY / RENT / SOLD / Commercial / Overseas |
locationIdentifier | string | REGION^93917 | Rightmove location ID (London). Find from URL: REGION^93917 = London, REGION^93548 = Manchester, POSTCODE^1013367 = NW3 |
minBedrooms | integer | 0 | Minimum bedrooms |
maxBedrooms | integer | 0 | Maximum bedrooms |
minPrice | integer | 0 | Min price in GBP |
maxPrice | integer | 500000 | Max price in GBP (0 = unlimited) |
propertyTypes | array | [] | Filter: detached, semi-detached, terraced, flat, bungalow, land, park-home |
includeSold | boolean | true | Include SSTC / Under Offer |
dontShow | array | [] | Exclude: newHome, retirement, sharedOwnership, auction |
radius | number | 0 | Search radius in miles |
sortType | select | 2 | Newest Listed / Most Recent / Most Reduced / Highest Price / Lowest Price |
startUrls | array | [] | Direct Rightmove URLs (overrides all filters) |
includeDetails | boolean | true | Visit each property for full description, EPC, floorplans, council tax |
maxItems | integer | 100 | Max properties (0 = no limit) |
maxPages | integer | 4 | Max result pages (25 props/page, ~42 pages max per search) |
requestDelay | integer | 300 | Delay between requests in ms |
maxConcurrency | integer | 10 | Parallel detail page requests |
Location Identifiers
Rightmove uses internal location codes. Find them from any Rightmove search URL:
| Location | Identifier |
|---|---|
| London | REGION^93917 |
| Manchester | REGION^93548 |
| Birmingham | REGION^93903 |
| Leeds | REGION^93529 |
| Bristol | REGION^93898 |
| Liverpool | REGION^93538 |
| Edinburgh | REGION^93516 |
| Cardiff | REGION^93932 |
| NW3 postcode | POSTCODE^1013367 |
| SW1A postcode | POSTCODE^1021947 |
For other locations, search on rightmove.co.uk and copy the locationIdentifier from the URL.
Usage Examples
1. Basic Search — London flats under £500K
{"channel": "buy","locationIdentifier": "REGION^93917","maxPrice": 500000,"propertyTypes": ["flat"],"minBedrooms": 1,"maxItems": 100}
2. Rental Market — Manchester 2+ beds
{"channel": "rent","locationIdentifier": "REGION^93548","minBedrooms": 2,"maxPrice": 1500,"includeDetails": false}
3. Sold Prices — Last 100 sales in a postcode
{"channel": "sold","locationIdentifier": "POSTCODE^1013367","radius": 0.5,"maxItems": 100}
4. Commercial Property
{"channel": "commercial","locationIdentifier": "REGION^93917","maxItems": 50}
5. Start URLs — Pre-filtered Searches
{"startUrls": ["https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION^93917&maxPrice=300000&propertyTypes=flat&dontShow=newHome,retirement,sharedOwnership"],"maxItems": 200}
Use Cases
1. Estate Agent Lead Generation
Every listing includes the agent's branch name and phone number. Build targeted prospecting lists for:
- Lettings agents in specific postcodes
- Independent vs. chain agents
- Agents with premium listings (higher marketing spend)
2. Property Market Analytics
- Price trends: Track
listingStatus(new vs. reduced) by area over time - Days on market: Measure market velocity by property type and location
- Supply analysis: Count active listings by channel, price band, property type
- Rental yields: Cross-reference BUY and RENT data for yield estimates
3. Investment Research
- Identify below-market properties (
listingStatus: reduced) - Track new-to-market opportunities (
listingStatus: new) - Filter by tenure (freehold vs. leasehold)
- Calculate price/sqft from
priceAmountandsizeSqft
4. Sold Price Comparables
Use the SOLD channel to access Land Registry sold-price data:
- Comps for valuation and underwriting
- Price-per-sqft benchmarks by postcode
- Transaction volume analysis
5. Development Site Sourcing
- Filter by property type (land, development opportunities)
- Identify properties with large lots or development potential
- Track auction listings
6. B2B PropTech
Feed structured property data into:
- Property valuation models
- Automated valuation tools (AVMs)
- Investment analysis platforms
- CRM enrichment for estate agency software
7. Market Research Reports
Schedule recurring weekly/monthly runs to track:
- New listing volume by region
- Average asking prices and trends
- Price reduction frequency (market cooling indicator)
- Supply/demand balance metrics
8. Tenant/Landlord Matching
For corporate relocation and B2B tenant services:
- Find rental properties matching employee requirements
- Track available stock in specific school catchment areas
- Monitor rental price trends for corporate housing budgets
Example Output
{"propertyId": "165879002","title": "3 bedroom end of terrace house for sale","channel": "BUY","propertyType": "House","propertySubType": "End of Terrace","bedrooms": "3","bathrooms": "2","price": "£500,000","priceAmount": "500000","priceQualifier": "Offers in Excess of","displayAddress": "Lynhurst Crescent, Hillingdon, UB10","latitude": "51.547821","longitude": "-0.437776","displaySize": "751 sq. ft.","tenure": "FREEHOLD","listingStatus": "new","listingUpdateDate": "2026-06-15T14:04:31Z","firstVisibleDate": "2025-08-18T12:43:05Z","daysOnMarket": "67","agentName": "Coopers, Hillingdon","agentPhone": "01895 544542","agentBranchId": "49645","propertyUrl": "https://www.rightmove.co.uk/properties/165879002","numberOfImages": "16","numberOfFloorplans": "1","premiumListing": "true","searchLocation": "buy — REGION^93917","scrapedAt": "2026-06-22T12:00:00.000Z"}
Performance
| Mode | Speed | Memory | Proxy |
|---|---|---|---|
List-only (includeDetails: false) | ~50-100 props/sec | ~128 MB | None needed |
With details (includeDetails: true) | ~10-20 props/sec | ~256 MB | None needed |
| Direct URLs | ~10-20 props/sec | ~256 MB | None needed |
Typical cost: 100 properties with full details = ~30-60 seconds, minimal CU consumption.
Limitations
- 1,050 results per search: Rightmove caps each query at ~42 pages × 25 results. For larger datasets, segment by location, price band, or property type.
- Detail page rate: With
includeDetails: true, each property gets one additional HTTP request. UsemaxConcurrency: 10-15for optimal speed. - SOLD channel: Returns recent Land Registry sold prices, not the full transaction history.
- Commercial/Overseas: Filter options are more limited than residential BUY/RENT.
Integration
JavaScript / TypeScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('haketa/rightmove-scraper').call({channel: 'buy',locationIdentifier: 'REGION^93917',maxPrice: 500000,maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python
from apify_client import ApifyClientclient = ApifyClient(token='YOUR_TOKEN')run = client.actor('haketa/rightmove-scraper').call(run_input={'channel': 'buy','locationIdentifier': 'REGION^93917','maxPrice': 500000,'maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().items
CLI
apify call haketa/rightmove-scraper \--input '{"channel":"buy","locationIdentifier":"REGION^93917","maxPrice":500000,"maxItems":100}'
Legal & Responsible Use
This actor extracts publicly available property listings from Rightmove.co.uk. Users are responsible for complying with applicable laws and Rightmove's terms of service. We recommend:
- Using the data for legitimate business intelligence, market research, and property analysis
- Respecting the platform's availability with reasonable request delays
- Not redistributing the data in violation of the source site's terms
- Complying with GDPR and UK Data Protection Act for any personal data processing
The most efficient Rightmove scraper on Apify — pure JSON extraction, zero proxy cost, all 5 channels, agent contacts built-in.