Skip to content

everythingscraper/idealista-scraper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Idealista Scraper — Real Estate Listings (Apify Actor)

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.

Why this exists

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.

Output fields

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 AG
latitude / longitude GPS coordinates
propertyType flat · house · office · land · garage · etc.
agencySlug / agencyPhone Listing agent (Spain)
amenities / photos / priceHistory Detail-page enrichment

Quick start

git clone https://github.com/everythingscraper/idealista-scraper.git
cd idealista-scraper
pip install -r requirements.txt
APIFY_TOKEN=your_token python main.py

The 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.

Input options at a glance

  • 🌍 countryes · it · pt (single-select per run)
  • 🏠 propertyTypehomes · newDevelopments · offices · premises · garages · lands · storageRooms · buildings · bedrooms
  • 💰 operationsale · 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 per country
  • 🛡️ customProxyUrl — bring-your-own premium ES/IT/PT residential for hardened DataDome regions

Full schema lives on the Apify Input tab.

Sample dataset row

{
  "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.

Pricing

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.

FAQ

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.

Other Apify Actors

Legality

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.

License

MIT — see LICENSE.

About

Scrape Idealista real estate listings across Spain, Italy & Portugal. Extract price, GPS, energy rating, rooms, agency contact. DataDome bypass included.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages