Idealista is the dominant property portal in Spain, Portugal and Italy, which makes it the single richest public source of Southern European real estate data — asking prices, floor area, location, and how long a listing has sat on the market. It is also well defended. This guide is deliberately realistic about what that takes: what you can collect, the approach that actually works, and the GDPR obligations that come with scraping an EU property site.
Start With Realistic Expectations
Idealista is not a site you scrape with a plain requests.get() loop. Expect to run into:
- Bot protection that blocks datacenter IPs and unusual request patterns outright.
- Geo-sensitivity — the portal serves different country sites (.es, .pt, .it) and behaves best when your IP matches the market you are browsing.
- Dynamic content — parts of the listing and search experience are rendered client-side.
- Aggressive rate limiting — a single IP making rapid sequential requests gets throttled quickly.
- Rotating markup — class names change, so hard-coded selectors rot fast.
Idealista also operates an official API for approved partners. If your use case fits it, that is far more stable and lower risk than scraping — check it before building anything.
What Data Is Available
Public search results and listing pages typically expose:
- Asking price, and price per square metre.
- Floor area, number of bedrooms and bathrooms, floor level.
- Location — province, municipality, and neighbourhood.
- Property type (flat, house, new build), condition, and features like lift, terrace or parking.
- Listing age and whether the price has been reduced.
- Whether the seller is an agency or a private individual.
That last field matters legally: private-seller listings often contain personal data. More on that below.
The Approach That Works
Two components make the difference: a real browser, and local residential IPs.
1. Use a headless browser. Because content is partly client-side rendered and the site fingerprints clients, Playwright is a far more reliable base than raw HTTP requests.
2. Exit from the right country. Browsing the Spanish market from a Spanish residential IP looks ordinary; hitting it from a datacenter range in another continent does not. Route through residential proxies with country targeting.
from playwright.sync_api import sync_playwright
# country-targeted residential exit (set the country in your proxy username)
PROXY = {"server": "http://geo.spyderproxy.com:12321",
"username": "USERNAME", "password": "PASSWORD"}
def fetch(url):
with sync_playwright() as p:
browser = p.chromium.launch(headless=True, proxy=PROXY)
page = browser.new_page(locale="es-ES")
page.goto(url, wait_until="networkidle", timeout=60000)
page.wait_for_timeout(2000)
html = page.content()
browser.close()
return html
3. Crawl in two phases. Walk the paginated search results to collect listing URLs first, then visit each listing for full detail. That is the standard list crawling pattern and it keeps the job restartable.
One deliberate omission: we are not publishing CSS selectors. Idealista's markup changes often enough that any selector printed here would be wrong within weeks. Open DevTools, inspect the current structure, and anchor on stable attributes or text landmarks rather than generated class names.
Scaling Without Getting Blocked
- Rotate residential IPs so no single address accumulates a suspicious request count.
- Throttle and randomize — add realistic delays; property data does not change by the second, so there is no reason to hammer.
- Scrape narrow, not broad — target the provinces or price bands you actually need rather than crawling an entire country.
- Retry with a fresh IP on a challenge rather than retrying the blocked one.
- Cache aggressively so a re-run does not refetch listings you already have.
Store results as JSON to keep nested fields, or flatten to CSV for analysis — see JSON vs CSV.
GDPR and Terms: Take This Seriously
Idealista is an EU site, so the GDPR applies directly — and property listings frequently contain personal data (a private seller's name, phone number, sometimes an address). Practical guidance:
- Collect only public listing data; never log in to scrape.
- Do not collect seller contact details unless you have a lawful basis and a genuine need. Aggregate market data rarely requires them.
- Minimize and retain briefly — store the fields your analysis needs and nothing more.
- Respect
robots.txtand rate limits. - Remember listing photos and descriptions are copyrighted by whoever posted them — analyse, do not republish.
- Idealista's Terms of Service restrict automated access; read them before scaling.
This is educational, not legal advice — see is web scraping legal for the fuller picture, and take proper advice for a commercial project.
What People Build With It
- Market analysis — price per square metre by neighbourhood, tracked over time.
- Investment screening — spotting listings priced below their area median, or long-stale listings likely to accept an offer.
- Rental yield modelling by combining sale and rental data for the same area.
- Competitive intelligence for agencies tracking local inventory and pricing.
Frequently Asked Questions
Can you scrape Idealista?
Technically yes, but not with simple HTTP requests. Idealista uses bot protection and renders part of its content client-side, so a reliable scraper needs a headless browser such as Playwright routed through rotating residential proxies in the target country. Check whether their official partner API covers your use case first.
Why do I need Spanish or Italian IPs to scrape Idealista?
Idealista runs country-specific portals and responds most normally to visitors from that market. A residential IP in the country you are browsing looks like an ordinary house hunter, while a datacenter IP from another continent is an obvious anomaly and is far more likely to be challenged or blocked.
Is scraping Idealista legal?
Collecting public data is broadly permitted in many jurisdictions, but Idealista is an EU site so the GDPR applies, its Terms of Service restrict automated access, and listings often contain personal data from private sellers. Collect only public non-personal fields, minimize what you store, and get legal advice before running a commercial project.
What data can you get from Idealista listings?
Public listings typically expose asking price, price per square metre, floor area, bedrooms and bathrooms, property type and condition, location down to neighbourhood, features such as lift or terrace, listing age, price reductions, and whether the seller is an agency or a private individual.
Conclusion
Idealista is an advanced scraping target, not a beginner one. The combination that works is a headless browser for the rendering and fingerprinting, country-matched residential IPs so you look like a local visitor, stable-attribute selectors that survive markup churn, polite pacing, and a genuinely careful approach to GDPR. Get those right and you have the best public view of Southern European property that exists.
Scrape EU property data from local IPs: SpyderProxy residential proxies from $2.75/GB — country and city targeting across Spain, Portugal, Italy and 195+ more.