Pull asking prices, GPS coordinates, energy ratings, room counts, sizes, and agency contacts from Idealista — the #1 property portal in Spain, Italy, and Portugal. Production-grade DataDome bypass via residential proxies, optional premium proxy fallback (Decodo / Bright Data / IPRoyal), and structured JSON ready for valuation models, comp sets, and proptech pipelines.
🔗 Run it on Apify (zero-install): https://apify.com/hotels-scrapers/idealista-scraper
This repo is a small Python client example that fires the Actor over the Apify API and prints the cheapest €/m² listings from a Madrid search.
Idealista is the dominant real estate platform in Southern Europe (60M+ monthly visits) and has no public API — partner access is gated to licensed agencies. This Actor handles the hard parts: DataDome anti-bot, residential ES/IT/PT IP rotation, listing-page + detail-page enrichment, and the 1,800-result-per-search ceiling. You provide a country and a location slug; it provides a clean dataset.
| Field | What it is |
|---|---|
listingId |
Idealista internal listing ID |
url |
Canonical listing URL |
locale |
ES · IT · PT |
price |
Asking price (€) |
pricePerSqm |
€ per m² |
rooms / size |
Bedrooms · square meters |
energyRating |
EU EPC grade A–G |
latitude / longitude |
GPS coordinates |
propertyType |
flat · house · office · land · garage · etc. |
agencySlug / agencyPhone |
Listing agent (Spain) |
amenities / photos / priceHistory |
Detail-page enrichment |
git clone https://github.com/everythingscraper/idealista-scraper.git
cd idealista-scraper
pip install -r requirements.txt
APIFY_TOKEN=your_token python main.pyThe script pulls 25 sale listings in Madrid and prints the cheapest 5 by €/m². Get your API token at https://console.apify.com/settings/integrations.
- 🌍
country—es·it·pt(single-select per run) - 🏠
propertyType—homes·newDevelopments·offices·premises·garages·lands·storageRooms·buildings·bedrooms - 💰
operation—sale·rent - 📍
location— Idealista slug (madrid-comunidad_de_madrid) or full search URL passthrough - 🔢
maxItems— hard cap (1–1,800; Idealista's ceiling) - 🎯 Filters —
minPrice·maxPrice·minSize·maxSize·bedrooms[]·bathrooms[]·publicationDate·sortBy - 🛁 Amenity flags —
airConditioning·lift·balcony·terrace·garage·garden·swimmingPool·seaViews·luxury·virtualTour· … - 🔍
fetchDetails— visit each listing page for address, geo, agency phone, full features (~10× requests) - 🌐
proxyConfiguration— Apify residential, country auto-pinned percountry - 🛡️
customProxyUrl— bring-your-own premium ES/IT/PT residential for hardened DataDome regions
Full schema lives on the Apify Input tab.
{
"listingId": "99887766",
"url": "https://www.idealista.com/inmueble/99887766/",
"locale": "ES",
"price": 450000,
"pricePerSqm": 4500,
"rooms": 3,
"size": 100.0,
"energyRating": "B",
"latitude": 40.4168,
"longitude": -3.7038,
"title": "Piso en Madrid centro 3 habitaciones",
"propertyType": "flat",
"amenities": ["lift", "balcony"],
"agencySlug": "inmobiliaria-centro",
"agencyPhone": "+34 91 123 4567",
"scrapedAt": "2026-04-28T10:00:00Z"
}Export the run as JSON, CSV, Excel, HTML, or XML from Apify Storage — or pull via the Apify API.
Pay-per-result: €1.50 per 1,000 listings.
| Apify plan | Monthly credit | ≈ Idealista listings |
|---|---|---|
| Free | $5 | ≈ 3,000 |
| Starter | $49 | ≈ 30,000 |
| Scale | $499 | ≈ 305,000 |
fetchDetails: true doesn't change result price — only run time and proxy usage.
Is there an official Idealista API? Partner-only — gated to licensed agencies with a commercial agreement. This Actor is the practical alternative for everyone else.
Will datacenter proxies work? No. DataDome flags them within seconds. Stick to Apify residential, or pin a premium ES/IT/PT residential pool via customProxyUrl for hardened regions.
Why is the cap 1,800? Idealista itself caps search results around 1,800 per query. For larger markets, split by district, property subtype, or price band and combine downstream.
Can I scrape Spain, Italy, and Portugal in one run? One country per run. Schedule three runs in parallel — Apify routes each to the correct residential region.
How fresh is the data? Live — every run hits Idealista directly. Schedule hourly / daily via Apify Scheduler for incremental monitoring (publicationDate=W for last-week-only).
Can I trigger this from Make / n8n / Zapier / a webhook? Yes — first-party Apify integrations and standard webhooks on dataset-created.
- 🏢 LoopNet Scraper — US commercial real estate (CRE)
- 🏠 Airbnb Scraper — STR metrics, ADR, RevPAR, 12-month calendar
- 🏨 Trip.com Hotel Scraper — hotel pricing across 51 countries
- 🏖️ Traveloka Hotel Scraper — Southeast Asia hotel data
- 📊 Moz Domain Authority Checker — DA / PA / backlinks at scale
This Actor reads only publicly visible Idealista listings. It does not bypass authentication or harvest private user data. Listings frequently include personal data (agent names, phone numbers) — that data is regulated by GDPR and local equivalents. Use it for legitimate real estate research and consult counsel where relevant.
MIT — see LICENSE.