Idealista Scraper — Property Listings & Agents
Pricing
from $0.85 / 1,000 result items
Idealista Scraper — Property Listings & Agents
Scrape Idealista property listings with prices, features, locations, images, descriptions, and agency contacts for real estate research.
Pricing
from $0.85 / 1,000 result items
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Scrape Idealista real estate listings across Spain, Italy & Portugal. Extract price, GPS coordinates, energy rating, rooms, size, photos, and agency contact from any city, region, or full Idealista search URL. DataDome bypass included via stealth browser + residential proxy.
Built for property investors, proptech teams, market analysts, and data brokers who need a reliable Idealista API alternative without fighting anti-bot protection.
What does Idealista Scraper do?
- Extract Idealista listings across Spain (idealista.com), Italy (idealista.it), Portugal (idealista.pt)
- Filter by operation (sale / rent), property type, price, size, bedrooms, bathrooms, and 15+ amenity flags
- Returns GPS coordinates, energy rating, price/m², rooms, photos, agency contact
- Up to 1,800 listings per search (Idealista's hard cap)
- Handles DataDome anti-bot automatically — stealth Playwright + warmed residential profile
- Optional detail-page enrichment: address, geo, bathrooms, full amenities, agency phone
- Works on Apify Free plan — proxy rotation, scheduling, webhooks, REST API included
Why scrape Idealista?
Idealista is the dominant real estate platform in Southern Europe (60M+ monthly visits). Its public listing data is the canonical price signal for:
- Investors — yield analysis, neighborhood price tracking, comp sets across Madrid / Barcelona / Milan / Lisbon
- Proptech & valuation models — feed AVMs with GPS-accurate, energy-rating-tagged comps
- Real estate agencies — competitive monitoring of competitor inventory and pricing
- Researchers & journalists — Southern European housing dynamics, EU energy-certificate analysis
Idealista has no public API. This scraper is the practical alternative.
What data can Idealista Scraper extract?
| Field | Type | Description |
|---|---|---|
listingId | string | Idealista internal listing ID |
url | string | Canonical listing URL |
locale | ES | IT | PT | Country site |
price | number | Asking price (€) |
pricePerSqm | number | Price per m² |
rooms | number | Bedroom count |
size | number | Square meters |
energyRating | A–G | null | EU Energy Performance Certificate |
latitude / longitude | number | GPS coordinates |
title | string | Listing headline |
propertyType | string | Home / office / land / etc. |
operation | sale | rent | Listing operation |
agencySlug / agencyName | string | Listing agent identifier |
agencyPhone | string | Agency contact phone (fetchDetails) |
amenities, photos | array | Features + image URLs |
priceHistory | array | Historical price changes (fetchDetails) |
description | string | Full listing text (fetchDetails) |
scraped_at | string ISO | Scrape timestamp |
source_url | string | Traceability URL |
How to scrape Idealista listings
Quick start
- Open Idealista Scraper on Apify and click Try for free
- Pick Country (Spain / Italy / Portugal) and Operation (sale / rent)
- Enter a Location — either a slug like
madrid-comunidad_de_madridor a full Idealista search URL - Set Max items (1–1800) and any filters (price, bedrooms, amenities)
- Toggle Fetch listing details if you need address, geo, agency phone (~10× requests)
- Click Start — results stream into the dataset; export as JSON / CSV / Excel / HTML / XML or pull via Apify API
Input modes
Search mode (recommended for discovery):
{"operation": "sale","propertyType": "homes","country": "es","location": "madrid-comunidad_de_madrid","maxItems": 100,"sortBy": "mostRecent","minPrice": 200000,"maxPrice": 600000,"bedrooms": ["2", "3"]}
URL passthrough mode (for precise filtered searches):
{"startUrls": [{ "url": "https://www.idealista.com/venta-viviendas/madrid-madrid/con-precio-hasta_500000,habitaciones_2-3/" }],"maxItems": 500}
location accepts an Idealista URL slug or a full search URL (passthrough — all UI filters override slug-based behavior). Boolean amenity flags (balcony, terrace, lift, swimmingPool, seaViews, luxury, virtualTour, …) map 1:1 to Idealista's filter UI.
How much does it cost to scrape Idealista?
Pay-Per-Event pricing — you only pay for what you scrape.
| Event | Price | When charged |
|---|---|---|
| Actor Start | $0.007 | Once per run (per GB memory) |
| Result item | $0.00085 | Per listing scraped from search page |
| Enriched listing | $0.003 | Per detail page visit (only with fetchDetails: true) |
| Volume | Cost (search only) | Typical use |
|---|---|---|
| 1,000 listings | ~$0.85 | One city district, full sweep |
| 10,000 listings | ~$8.50 | ~5 metro searches across Spain |
| 100,000 listings | ~$85.00 | Full Madrid + Barcelona + Valencia snapshot |
fetchDetails: true adds $0.003/listing on top — it does not replace the base charge.
On the Apify Free plan ($5 platform credit), you can extract roughly 5,000+ Idealista listings. No subscription, no platform fees on top.
Output example
{"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","operation": "sale","agencySlug": "inmobiliaria-centro","agencyName": "Inmobiliaria Centro Madrid","agencyPhone": null,"amenities": ["lift", "balcony", "air-conditioning"],"photos": ["https://img4.idealista.com/blur/..."],"priceHistory": null,"scraped_at": "2026-06-24T10:00:00.000Z","source_url": "https://www.idealista.com/venta-viviendas/madrid-madrid/"}
Download the full dataset as JSON, CSV, Excel, HTML, or XML from the Storage tab, or pull it via the Apify API.
Tips
- Start narrow. Idealista caps results at ~1,800 per search. Split big metros by district or property type.
- Skip
fetchDetailsfirst. The list-page data covers price, size, rooms, energy rating, GPS for most use cases. Only enable details when you need agency phone or full amenities. - Bring your own proxy for hardened DataDome targets. Spanish residential IPs from Decodo / Bright Data / IPRoyal outperform shared pools.
- Schedule incremental runs with
publicationDate=W(last week) orT/Y(last 24/48h) to track new inventory cheaply. - Geo-fence with the slug.
madrid-comunidad_de_madrid≠madrid-madrid— first is the region, second is the city.
Integration
JavaScript / TypeScript
$npm install apify-client
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const input = {operation: 'sale',propertyType: 'homes',country: 'es',location: 'madrid-madrid',maxItems: 100,};const run = await client.actor('USERNAME/idealista-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
$pip install apify-client
from apify_client import ApifyClientclient = ApifyClient('<YOUR_API_TOKEN>')run = client.actor('USERNAME/idealista-scraper').call(run_input={'operation': 'sale','propertyType': 'homes','country': 'es','location': 'madrid-madrid','maxItems': 100,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
CLI
echo '{ "operation": "sale", "country": "es", "location": "madrid-madrid", "maxItems": 50 }' | \apify call USERNAME/idealista-scraper --silent --output-dataset
MCP server (for Claude / Cursor / ChatGPT)
{"mcpServers": {"apify": {"command": "npx","args": ["mcp-remote","https://mcp.apify.com/?tools=USERNAME/idealista-scraper","--header","Authorization: Bearer <YOUR_API_TOKEN>"]}}}
Is it legal to scrape Idealista?
Our scrapers are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our scrapers, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data (e.g. agent phone numbers published on the listing). Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
FAQ
Does it bypass Idealista's DataDome anti-bot?
Yes. The actor uses Playwright with stealth mode + pre-warmed residential proxy profiles tuned for DataDome. For aggressive blocking, plug in a premium ES residential proxy via customProxyUrl.
Can I scrape Spain, Italy, and Portugal in one run?
One country per run — the country input is single-select (es / it / pt). Schedule three runs in parallel; Apify routes each to the correct residential proxy region.
Is there an official Idealista API? Idealista offers a partner API to licensed real estate agencies only (no public access, requires application + commercial agreement). This actor is the practical alternative for everyone else.
What's the 1,800-listing cap? Idealista limits search results to ~1,800 per query. For larger markets, split by district, property subtype, or price band. Combine results downstream.
How fresh is the data? Live — every run hits Idealista directly. Schedule runs hourly / daily via Apify Scheduler for continuous monitoring.
Support
For feature requests, custom scraping work, or dedicated SLAs, contact us through the Apify Store actor page.
What is Idealista Scraper?
Idealista Scraper turns the target data into structured, reusable results on Apify. Use it when you need repeatable collection for real estate analysts, agencies, investors, lead-generation teams, and property-data workflows without maintaining a custom scraper or one-off integration. Run it manually, schedule recurring jobs, call it through the Apify API, or connect it to an AI agent through the Apify MCP server.
The Actor stores results in an Apify dataset, where they can be previewed and exported as JSON, CSV, Excel, XML, or RSS. Availability and completeness depend on the source, supplied inputs, public visibility, authentication requirements, and upstream rate limits.
Use cases for Idealista Scraper
- Build structured datasets for research, reporting, enrichment, or monitoring.
- Automate repetitive collection with schedules, webhooks, and API calls.
- Feed clean records into spreadsheets, databases, CRMs, BI tools, AI agents, or RAG pipelines.
- Track changes over time by running the same validated input on a schedule.
- Replace fragile manual copy-and-paste work with a reproducible Apify workflow.
How to use Idealista Scraper
- Open the Actor input page and choose a focused, valid target.
- Set a conservative result limit for the first run.
- Start the Actor and inspect the dataset for coverage and field availability.
- Export the results or connect the dataset to your downstream system.
- Scale gradually and use scheduling, pagination, or proxies when supported.
Important input options
startUrls— Use this field when the user provides one or more full Idealista search URLs (e.g. https://www.idealista.com/venta-viviendas/madrid-madrid/). Do NOT use this when the user describes a city ooperation— Listing operation: sale or rent. Use with location + country. Ignored when startUrls is provided.propertyType— Type of property to scrape. Ignored when startUrls is provided.country— Idealista country site. es=idealista.com, it=idealista.it, pt=idealista.pt. Determines residential proxy region.location— Idealista location URL slug (e.g. 'madrid-comunidad_de_madrid' or 'barcelona-barcelona') OR a plain city name (best-effort resolution). Use this when the user names a place — NOT when they pmaxItems— Maximum number of listings to extract. Idealista caps search results at ~1800 per query. The actor will split queries by price band to bypass this cap when set above 1500.sortBy— Sorting method applied to search results.minPrice— Minimum price filter. 0 = any.
API and automation example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('muhammadafzal/idealista-scraper').call({// Add the same input fields you use in the Apify Console.});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Related Apify Actors
Use these dedicated tools when a neighboring data source or workflow is a better match:
- Realtor & Real Estate Agent Lead Scraper — Verified Emails
- Instagram Followers & Following Scraper — With Cookies
- Leads Finder Pro - B2B Leads with Emails [Apollo Alternative]
- Yellow Pages US Scraper — Business Leads & Reviews
- Yellow Pages Australia Scraper — Business Leads & Reviews
- OpenTable Restaurants, Ratings & Reviews Scraper
- Etsy Scraper Pro — Products, Prices, Reviews & Shop Data
- Shopify Store Scraper - Products, Reviews & Emails
- 🔧 USA Plumbers Scraper — Leads with Phone, Address & Website
- Yellow Pages CA Scraper — Canadian Business Leads
Frequently asked questions
How many results can I scrape with Idealista Scraper?
The practical total depends on the source, input limits, pagination, available records, run timeout, and upstream restrictions. Start with a small run, verify the output, and increase the limit gradually.
Can I integrate Idealista Scraper with other apps?
Yes. Use Apify integrations, webhooks, schedules, dataset exports, Make, Zapier, Google Sheets, cloud storage, or your own application.
Can I use Idealista Scraper with the Apify API?
Yes. Start runs with the Apify REST API or an official Apify client, then retrieve records from the run's default dataset. Keep your API token in a secret or environment variable.
Can I use Idealista Scraper through an MCP Server?
Yes. The Apify MCP server can expose the Actor to compatible AI clients and agents. Review the input and expected cost before allowing an autonomous workflow to run it at scale.
Do I need proxies?
It depends on the source and volume. Use the default configuration first. For larger or geographically sensitive jobs, select an appropriate proxy configuration only when the Actor supports it.
Is it legal to scrape this data?
Scraping rules vary by source, jurisdiction, data type, and intended use. Collect only data you are authorized to access, respect applicable terms and privacy laws, and avoid restricted or personal data misuse. This documentation is not legal advice.
Your feedback
If a field is missing, a source layout has changed, or you need a supported use case documented, open an issue on the Actor page with a reproducible input and run ID.