IdealiScrape is a real estate tool that monitors Idealista for new listings using the Official Idealista API. It sends instant notifications to your Telegram channel when new properties matching your criteria are found.
- 🚀 Official API Integration: Fast, reliable, and no more CAPTCHAs or blocks!
- 🔍 Parametric Search: Filter by location (coordinates or zone name), price, type (Sale/Rent), and distance.
- 📱 Telegram Notifications: Instant formatted alerts with Price, Size, Location, and Link.
- 💾 Database Storage: Prevents duplicate notifications by tracking listings in a local SQLite database (
data/listings.db).
- Python 3.10+
- Idealista API Keys (Request at developers.idealista.com)
-
Clone the repository:
git clone https://github.com/yourusername/IdealiScrape.git cd IdealiScrape -
Create a Virtual Environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install Dependencies:
pip install -r requirements.txt
-
Configuration: Create a
.envfile in the root directory:cp .env.example .env
Edit
.envwith your credentials:TELEGRAM_TOKEN=your_bot_token TELEGRAM_CHAT_ID=your_chat_id IDEALISTA_API_KEY=your_api_key IDEALISTA_API_SECRET=your_api_secret
Run the tool using main.py.
python main.py --type rent --price-max 1200| Argument | Description | Default | Example |
|---|---|---|---|
--center |
Coordinates (Lat,Lng) | 40.4167,-3.70325 (Madrid) |
--center "41.3851,2.1734" |
--zone |
Name of zone/city to search via Nominatim | None |
--zone "Valencia" |
--distance |
Search radius in meters | 3000 |
--distance 5000 |
--price-max |
Maximum price filter | None |
--price-max 1500 |
--type |
Listing type: sale or rent |
sale |
--type rent |
Rentals in Barcelona (Center) under 1500€:
python main.py --type rent --price-max 1500 --center "41.3851,2.1734"Rentals in Valencia (Zone Name):
python main.py --type rent --zone "Valencia"Sales in Madrid within 1km of Sol:
python main.py --type sale --zone "Madrid" --distance 1000To run the script periodically via cron, you can add a line to your crontab.
If you need to use a proxy, make sure to export HTTP_PROXY and HTTPS_PROXY in the cron command.
# Example: Run every 30 minutes
*/30 * * * * HTTP_PROXY="http://proxy:port" HTTPS_PROXY="http://proxy:port" /path/to/IdealiScrape/venv/bin/python /path/to/IdealiScrape/main.py --zone "Madrid" >> /path/to/IdealiScrape/logs/ideali.log 2>&1
*/30 * * * * /path/to/IdealiScrape/venv/bin/python /path/to/IdealiScrape/main.py --zone "Madrid" >> /path/to/IdealiScrape/logs/ideali.log 2>&1IdealiScrape/
├── data/
│ └── listings.db # SQLite database
├── src/
│ ├── api.py # Official API Client (Auth, Search)
│ ├── database.py # Database operations
│ ├── notifier.py # Telegram notification logic
│ └── settings.py # Configuration loader
├── main.py # Entry point
├── requirements.txt # Dependencies
└── .env # Secrets
This tool is for educational purposes. Ensure you comply with Idealista's API Terms of Service.
