Idealista Scraper - Spain, Italy & Portugal Real Estate Data avatar

Idealista Scraper - Spain, Italy & Portugal Real Estate Data

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Idealista Scraper - Spain, Italy & Portugal Real Estate Data

Idealista Scraper - Spain, Italy & Portugal Real Estate Data

Scrape property listings from Idealista (idealista.com, .it, .pt): price, price/m², size, rooms, bathrooms, floor, GPS coordinates, energy rating, description, photos and agency contacts.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Ahmed Jasarevic

Ahmed Jasarevic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a few seconds ago

Last modified

Share

Idealista Property Scraper — Spain, Italy & Portugal Real Estate Listings

Scrape Idealista property listings from idealista.com (Spain), idealista.it (Italy) and idealista.pt (Portugal) in one run. Extract the full listing record: title, price, price per m², size, rooms, bathrooms, floor, location, neighborhood, district, city, GPS coordinates, energy rating, year built, price history, description, photos, and agency contact details (name, phone, website, address).

Built on the Apify platform — get results as a clean JSON/CSV/Excel dataset via API, schedule recurring runs, and integrate with any workflow.

Why use this actor?

  • One actor, three markets — Spain, Italy and Portugal share the same Idealista layout; this actor handles all three with a single input.
  • Investor-grade data — price history, price per m², community fees, property tax and energy rating are exactly what market analysts and investors need.
  • Agency lead generation — every record includes the listing agency's name, phone, website and address, perfect for real estate agencies, relocation services and proptech startups.
  • Hybrid browser + HTTP engine — a stealthy Camoufox browser (anti-detect Firefox) solves Idealista's DataDome challenge once per sticky residential IP. The harvested datadome cookie, exact User-Agent and Accept-Language are then replayed by Impit clients (real Firefox TLS/HTTP2 fingerprints) over plain HTTP — roughly 20x faster than browser-per-page scraping at a fraction of the compute cost.
  • Self-healing sessions — if DataDome blocks or rate-limits a session, it is retired automatically, a fresh proxy session is warmed in the browser, and the affected requests are retried — no manual intervention.
  • Safe by default — hard caps on pages, items and browser launches; free users get a 10-listing preview.

How to use

  1. Open the actor on Apify and click Start.
  2. Pick the country (Spain / Italy / Portugal), operation (sale / rent) and property type.
  3. Optionally enter a location slug (e.g. madrid, barcelona, milano, roma, lisboa, porto) or paste custom start URLs.
  4. Set max listings and max search pages, then run.
  5. Download the dataset as JSON, HTML, CSV or Excel, or pull it via the Apify API.

Input

FieldTypeDescription
countryselectspain (idealista.com), italy (idealista.it) or portugal (idealista.pt)
operationselectsale or rent
propertyTypeselecthomes, apartments, houses/villas, offices, shops/premises, garages, land
locationstringCity/district SEO slug, e.g. madrid, milano, lisboa (empty = whole country)
maxItemsnumberMax listings to scrape (default 50)
maxPagesnumberMax search result pages to crawl (default 5, ~30 listings/page)
sessionsnumberBrowser-warmed proxy sessions (default 2, max 8)
maxConcurrencynumberParallel HTTP requests across sessions (default 8, max 16)
requestDelayMsnumberMin delay between requests on the same session (default 900 ms)
fetchDetailsboolVisit each listing's detail page for the full record (default ON; OFF = much faster, fewer fields)
startUrlsarrayCustom Idealista search or listing URLs (overrides the fields above)
debugSaveHtmlboolSave raw HTML of key pages to the key-value store for debugging
proxyproxyApify proxy config; Residential group recommended

Example input:

{
"country": "spain",
"operation": "sale",
"propertyType": "apartments",
"location": "madrid",
"maxItems": 100,
"maxPages": 5,
"sessions": 3,
"maxConcurrency": 8,
"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Output

Each dataset item is one listing. Example:

{
"id": "123456789",
"url": "https://www.idealista.com/inmueble/123456789/",
"title": "Piso en calle Gran Vía, Madrid Capital",
"price": 350000,
"pricePerSqm": 2917,
"currency": "EUR",
"size": 120,
"rooms": 3,
"bathrooms": 2,
"floor": "2ª planta",
"location": "Calle Gran Vía, Madrid Capital",
"neighborhood": "Gran Vía",
"district": "Centro",
"city": "Madrid Capital",
"province": "Madrid",
"country": "Spain",
"latitude": 40.4203,
"longitude": -3.7058,
"energyRating": "E",
"yearBuilt": 1960,
"priceHistory": [{ "date": "2025-06-01", "price": 365000 }],
"description": "Piso luminoso en pleno centro...",
"photos": ["https://img3.idealista.com/foto/123456789.jpg"],
"agency": {
"name": "Inmobiliaria Ejemplo",
"phone": "910000000",
"website": "https://www.inmobiliaria-ejemplo.com",
"address": "Calle Mayor 1, Madrid"
},
"features": { "rooms": "3", "bathrooms": "2", "size": "120 m²", "condition": "Buen estado" }
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Data table

FieldDescription
id / urlListing ID and canonical URL
titleListing headline
price / pricePerSqm / currencyPrice, price per m², currency
size / rooms / bathrooms / floorProperty dimensions
location / neighborhood / district / city / province / countryFull location hierarchy
latitude / longitudeGPS coordinates
energyRating / yearBuiltEnergy certificate and construction year
priceHistoryArray of { date, price } entries
descriptionFull listing description
photosFull-resolution photo URLs
agency{ name, phone, website, address }
featuresAll feature-item key/value pairs (condition, orientation, heating, etc.)
reference / communityFees / propertyTaxAdvert reference and recurring costs

How much does it cost to scrape Idealista?

  • Free tier: every run scrapes up to 10 listings at no charge.
  • Paid runs: billed by Apify compute units. The browser is only used for the short DataDome-solving step per session; everything else is fast HTTP, so a run of ~100 listings typically costs a few hundredths of a dollar in compute. Residential proxy traffic is billed per GB by Apify — keep maxItems/maxPages modest to control cost.
  • Runs are bounded: maxItems, maxPages, a hard cap on browser launches, and per-session request pacing mean a run can never spin out of control.

Tips

  • Use Residential proxy — Idealista's DataDome protection blocks datacenter IPs. The actor defaults to the RESIDENTIAL Apify proxy group. Each new IP gets its DataDome challenge solved once in the Camoufox browser; when a cookie expires or a block is detected, that session is retired and a fresh one is warmed automatically.
  • Empty location = whole country — with no location, Idealista serves a landing page without a listing grid; the actor automatically discovers and crawls the zone search pages linked from it. For targeted runs, set a city/province slug (e.g. madrid) for maximum speed.
  • Tune speed vs. stealth — more sessions and higher maxConcurrency finish faster but spread more load; if you see frequent "Session blocked" warnings, increase requestDelayMs or lower maxConcurrency.
  • Tune speed vs. richness — with fetchDetails: false the actor extracts ~30 listings per search-page request straight from the result cards (title, price, size, rooms, floor, description snippet, agency, photos): 50 listings in a couple of requests instead of 50+. Turn it on (default) for the full record including GPS coordinates, energy rating and complete descriptions.
  • Start small — test with maxItems: 10 on one city before scaling to a full country crawl.
  • Custom URLs — you can paste any Idealista search URL (e.g. a filtered search with price/rooms constraints) into startUrls and the actor will follow it and its pagination.
  • Debugging — enable debugSaveHtml to store the raw HTML of the first search page in the run's key-value store.
  • Schedule it — use Apify's scheduler to track price changes over time; combine with the priceHistory field for market analysis.

FAQ, disclaimers and support

  • Is scraping Idealista legal? Scraping publicly available data may be subject to the website's Terms of Service and local law. You are responsible for how you use the data. This actor respects robots.txt and rate limits.
  • Why do some fields come back empty? Idealista hides some data (e.g. phone numbers behind a click, price history only on some listings). The actor extracts everything that is publicly visible on the page.
  • Idealista blocks my run — make sure Residential proxy is enabled; if you still see blocks, the site may have tightened protection — open an issue and we'll update the actor.
  • How does the DataDome bypass work? Idealista server-renders every page, so all data (including JSON-LD) is in the raw HTML. DataDome serves a JS challenge to first-time visitors, which a pure HTTP client cannot execute — so the actor runs one Camoufox (anti-detect Firefox) visit per sticky residential IP to solve it, then harvests the datadome cookie together with the browser's exact User-Agent and Accept-Language. All subsequent requests on that IP go over plain HTTP through Impit, which reproduces Firefox's TLS and HTTP/2 fingerprints, so the traffic stays consistent with the browser that earned the cookie. Expired cookies and blocks are detected and re-solved automatically.
  • Need a custom version? Contact us for tailored extraction, additional markets, or integration with your pipeline.