Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rightmove Scraper

A Python scraper for extracting property-for-sale listings from Rightmove by UK outcode (e.g. EH16, SW1A). Supports multi-threaded scraping for faster data collection.

Note: This tool is for educational purposes only. Always respect Rightmove's terms of service and robots.txt before scraping.


Features

  • Scrape all property listings for a given UK outcode
  • Extract rich property details from each listing:
    • Address (display address, outcode, incode, country)
    • Bedrooms and bathrooms
    • Price (primary and secondary)
    • Location (latitude/longitude)
    • Property sub-type and ownership details (including shared ownership)
    • Features: heating, parking, garden, broadband, electricity, accessibility, sewerage, water
    • Flood risk: flood sources, flood defences, flooded in last 5 years
    • Living costs: council tax band, ground rent, service charge
    • Property sizings
  • Multi-threaded scraping with configurable worker count
  • Polite request pacing with configurable delay between requests
  • Progress bars via tqdm
  • Early stopping when no further listings are found

Requirements

  • Python 3.13+
  • uv (recommended) or pip

Installation

git clone https://github.com/th-tsai/rightmove-scraper.git
cd rightmove-scraper
uv sync

Or with pip:

pip install requests selectolax tqdm

Usage

Quick start

Edit the outcode variable in main.py and run:

python main.py

By default it scrapes EH16 using all available CPU cores minus one.

Programmatic usage

from src.RightmoveScraper import RightmoveScraper, RightmoveScraperParams

params = RightmoveScraperParams()
scraper = RightmoveScraper(params)

properties = scraper.scrape_property_data_by_outcode(
    outcode="SW1A",
    multi_threading=True,
    max_workers=7,
)

Configuration

RightmoveScraperParams accepts the following options:

Parameter Default Description
base_url Rightmove search URL Base URL for property search
headers Chrome user-agent HTTP headers sent with requests
max_listing_page 42 Maximum listing pages to paginate through
delay_between_requests 1.0 Seconds to wait between property detail requests
outcode_mapping_file_path ./data/rightmove_outcode_mappings.json Path to the outcode-to-ID mapping file

Output

Each property is returned as a dictionary. Example fields:

{
    "url": "https://www.rightmove.co.uk/properties/12345678",
    "status_code": 200,
    "display_address": "1 Example Street, Edinburgh",
    "outcode": "EH16",
    "incode": "5AY",
    "uk_country": "Scotland",
    "bedrooms": 3,
    "bathrooms": 2,
    "price": "£350,000",
    "latitude": 55.9234,
    "longitude": -3.1821,
    "council_tax_band": "D",
    "property_sub_type": "Terraced",
    "flood_sources": [],
    "heating": ["Gas central heating"],
    "parking": ["Driveway"],
    ...
}

Project Structure

rightmove_scraper/
├── main.py                          # Entry point
├── src/
│   └── RightmoveScraper.py          # Scraper implementation
├── data/
│   └── rightmove_outcode_mappings.json   # Outcode → Rightmove location ID mapping
└── pyproject.toml

License

For educational and personal use only. Not for commercial use.

About

A Python scraper for extracting property-for-sale listings from Rightmove by UK outcode

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages