A Python scraper for Rightmove, the UK's largest property marketplace, powered by ScrapingAnt API.
- Scrape property listings from 20+ UK regions
- Support for sale and rental listings
- Filter by bedrooms, price range, and property type
- URL-based pagination support
- Export to CSV and JSON formats
- Automatic deduplication of listings
- Configurable request delays
- Python 3.8+
- ScrapingAnt API key (Get free API key)
Note: The ScrapingAnt free plan has a concurrency limit of 1 thread. For higher throughput, consider upgrading to a paid plan.
- Clone the repository:
git clone https://github.com/scrapingant/RightmoveScraper.git
cd RightmoveScraper- Create a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Set your ScrapingAnt API key:
export SCRAPINGANT_API_KEY="your_api_key_here"Scrape properties for sale in London (default):
python main.pypython main.py -r london manchester birminghampython main.py --type rentpython main.py --min-beds 2 --max-beds 4python main.py --min-price 200000 --max-price 500000python main.py --property-type flats
python main.py --property-type housespython main.py -p 5 # Scrape 5 pagespython main.py --list-regionspython main.py -o results.csv # Custom CSV filename
python main.py --json # Also export to JSONusage: main.py [-h] [-r REGIONS [REGIONS ...]] [-p PAGES] [-d DELAY]
[-o OUTPUT] [--json] [--type {sale,rent}]
[--property-type {all,houses,flats,bungalows,land,commercial}]
[--min-beds MIN_BEDS] [--max-beds MAX_BEDS]
[--min-price MIN_PRICE] [--max-price MAX_PRICE]
[--list-regions] [--api-key API_KEY]
Options:
-r, --regions Regions to scrape (default: london)
-p, --pages Max pages per region (default: 2)
-d, --delay Delay between requests in seconds (default: 1.0)
-o, --output Output CSV filename
--json Also export to JSON format
--type Listing type: sale or rent (default: sale)
--property-type Property type filter
--min-beds Minimum bedrooms filter
--max-beds Maximum bedrooms filter
--min-price Minimum price filter
--max-price Maximum price filter
--list-regions List all available regions
--api-key ScrapingAnt API key (or use SCRAPINGANT_API_KEY env var)
| Region | Description |
|---|---|
| london | Greater London |
| manchester | Greater Manchester |
| birmingham | Birmingham |
| leeds | Leeds |
| glasgow | Glasgow |
| liverpool | Liverpool |
| bristol | Bristol |
| edinburgh | Edinburgh |
| sheffield | Sheffield |
| newcastle | Newcastle |
| nottingham | Nottingham |
| cardiff | Cardiff |
| belfast | Belfast |
| leicester | Leicester |
| brighton | Brighton |
| oxford | Oxford |
| cambridge | Cambridge |
| bath | Bath |
| york | York |
| reading | Reading |
| Field | Description |
|---|---|
| title | Property title/address |
| price | Asking price or rent |
| address | Full property address |
| property_type | Type (Flat, Terraced, Detached, etc.) |
| bedrooms | Number of bedrooms |
| bathrooms | Number of bathrooms |
| description | Property description |
| agent_name | Estate agent name |
| added_date | Date listing was added |
| listing_url | Full URL to listing |
| property_id | Rightmove property ID |
| region | Search region |
| listing_type | sale or rent |
| image_url | Main property image URL |
| scraped_at | Scraping timestamp |
RightmoveScraper/
├── config.py # Configuration settings
├── models.py # Data models
├── scraper.py # Main scraper logic
├── utils.py # Utility functions
├── main.py # CLI entry point
├── requirements.txt # Dependencies
├── output/ # Output directory
│ └── .gitkeep
└── README.md
MIT License