August 14, 2026 · 8 min read

Idealista Scraper Playbooks: 3 Ways to Extract Real Estate Data

By Crawlerbros Engineering Team

Direct answer

Extract real estate listing data from Idealista.com across Spain, Italy, and Portugal. Get property prices, sizes, locations, features, photos, and agent contacts for homes, offices, garages, new developments, and more. The most effective way to deploy this actor is to define your target metrics first, set strict criteria for inclusion, and configure a focused initial batch to validate formatting before scaling up collection runs.

Define your operational parameters first

Before running any collection job, write out your exact business objective and target market boundaries. Specify whether you are searching for properties for sale or rent, which country and municipality you need, and the specific property type. Establishing these parameters beforehand prevents messy datasets and wasted credits on irrelevant listings.

Separate essential criteria from optional attributes. Hard requirements determine whether a listing enters your processing pipeline, while optional attributes supply valuable context during analysis. Maintaining this distinction keeps your filtering logic clean and reliable.

Practical use cases

These use cases come from Idealista Scraper's published documentation. Each is expanded into an operating pattern so the Idealista Scraper output has a purpose beyond collection.

Use case 1: Market analysis

Outcome: Track property prices and trends across Spanish, Italian, and Portuguese cities.

Question to answer: Between this run and the last, what actually moved, and does the shift clear the bar for action?

Configure: Start with startUrls (Direct Idealista search result page URLs (e.g. https://www.idealista.com/venta-viviendas/madrid-madrid/). When provided, these override the location/operation/propertyType fields. Individual property/listing detail page URLs are not supported yet and will be skipped.), propertyType (Type of property to search for.), maxItems (Maximum number of property listings to scrape. Leave empty for all available results (up to 1,800 per search).). Use the narrowest Idealista Scraper values that represent the real task, keep the first result set small, and record why each selected input matters to the Idealista Scraper outcome.

Working method: Anchor every record to a durable identifier before comparing runs, then classify each delta as new, gone, or altered. Hold any delta that cannot be tied to a stable key out of the action queue until it can be.

Deliverable: Create a per-run delta report tagging each change as new, removed, or altered, with the field that triggered it. Include the Idealista Scraper source identifier and the collected fields behind every Idealista Scraper decision.

Stop condition: Pause when records cannot be matched reliably over time, collection scope changed between runs, or missing data looks like a real-world change. Fix the Idealista Scraper question, comparison rule, or configuration before expanding the Idealista Scraper run.

Use case 2: Investment research

Outcome: Compare prices per square meter across neighbourhoods and districts.

Question to answer: After grouping fairly, which gaps are large enough to matter, and which are within normal variation?

Configure: Start with maxItems (Maximum number of property listings to scrape. Leave empty for all available results (up to 1,800 per search).), startUrls (Direct Idealista search result page URLs (e.g. https://www.idealista.com/venta-viviendas/madrid-madrid/). When provided, these override the location/operation/propertyType fields. Individual property/listing detail page URLs are not supported yet and will be skipped.), proxyConfiguration (Apify Proxy is recommended. The actor uses a mirror-first fetch path and falls back to proxied requests when the mirror blocks direct cloud traffic.). Use the narrowest Idealista Scraper values that represent the real task, keep the first result set small, and record why each selected input matters to the Idealista Scraper outcome.

Working method: Build the cohorts on a documented rule first, then compare only records inside the same cohort to each other, keeping any record that spans cohorts flagged for separate review.

Deliverable: Create a ranked comparison brief listing each cohort, its defining fields, and the specific gap that matters for the decision. Include the Idealista Scraper source identifier and the collected fields behind every Idealista Scraper decision.

Stop condition: Pause when the cohorts are structurally different, coverage is uneven, or the ranking depends mainly on missing values. Fix the Idealista Scraper question, comparison rule, or configuration before expanding the Idealista Scraper run.

Use case 3: Lead generation

Outcome: Collect agency contact details for real estate businesses.

Question to answer: Which candidates clear every hard requirement, and which evidence field justifies each one that does?

Configure: Start with operation (Type of listing: properties for sale or for rent.), propertyType (Type of property to search for.), maxItems (Maximum number of property listings to scrape. Leave empty for all available results (up to 1,800 per search).). Use the narrowest Idealista Scraper values that represent the real task, keep the first result set small, and record why each selected input matters to the Idealista Scraper outcome.

Working method: Apply disqualifying rules first to clear out clear non-matches cheaply, then run the remaining candidates through the positive criteria one field at a time, recording the exact evidence behind each qualifying decision.

Deliverable: Create a qualification report listing every candidate's status and the specific field that decided it, with source links attached. Include the Idealista Scraper source identifier and the collected fields behind every Idealista Scraper decision.

Stop condition: Pause when identity is ambiguous, the fit reason cannot be traced to a collected field, or the workflow lacks a lawful and appropriate next step. Fix the Idealista Scraper question, comparison rule, or configuration before expanding the Idealista Scraper run.

Execute a controlled workflow

  1. Navigate to the Idealista Scraper interface on Apify.
  2. Define your target region using the location slug reference or paste direct search URLs into the request list.
  3. Configure operational parameters including property type, listing operation, and country code.
  4. Execute a preliminary test run with a low maximum item count to inspect output formatting.
  5. Review the resulting dataset for completeness, verifying that prices, sizes, and location fields are populated.
  6. Adjust parameters or switch to proxy-backed configurations if pagination stalls or blocks occur.
  7. Export verified records into your preferred analytical format for downstream processing.

This methodical sequence ensures reliable data extraction while minimizing unnecessary credit consumption during large-scale real estate research projects.

Configure the documented inputs

The published input schema contains these controls:

  • location (string) - City or area to search. Use the location slug from Idealista URLs. Spain: 'madrid-madrid', 'barcelona-barcelona', 'marbella-malaga'. Italy: 'roma-roma', 'milano-milano'. Portugal: 'lisboa', 'porto'. You can also paste a full Idealista search URL. Default: "madrid-madrid".
  • operation (string) - Type of listing: properties for sale or for rent. Default: "sale".
  • propertyType (string) - Type of property to search for. Default: "homes".
  • country (string) - Idealista country: Spain, Portugal, or Italy. Default: "es".
  • maxItems (integer) - Maximum number of property listings to scrape. Leave empty for all available results (up to 1,800 per search). Default: 100.
  • startUrls (array) - Direct Idealista search result page URLs (e.g. https://www.idealista.com/venta-viviendas/madrid-madrid/). When provided, these override the location/operation/propertyType fields. Individual property/listing detail page URLs are not supported yet and will be skipped.
  • proxyConfiguration (object) - Apify Proxy is recommended. The actor uses a mirror-first fetch path and falls back to proxied requests when the mirror blocks direct cloud traffic. Default: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}.

Turn raw records into deliverables

Property datasets require systematic organization before they can be presented to stakeholders. Map your extracted JSON fields directly into structured spreadsheet columns. Essential fields include property code, price, price by area, size, rooms, bathrooms, floor level, exterior status, address, municipality, district, country, thumbnail, photo count, and contact information.

Maintain strict separation between raw collection data and calculated analytical metrics. When optional features such as swimming pools, terraces, or elevators are absent, represent them as null or false values rather than inserting fabricated defaults.

Design around system limitations

  • Search pages only: The stable cloud path scrapes search-result cards. Individual property detail pages are not supported yet.
  • Search result cap: Idealista caps search results at ~1,800 listings (60 pages) per query. Split large cities into districts for broader coverage.
  • Rate limits: The scraper uses polite delays between pages. Small runs usually finish in under a minute.
  • No individual property pages: This version scrapes search result cards. Full detail pages (phone numbers, more photos) require navigating to each property URL individually.

Essential quality checks

  • Inspect initial output batches manually before launching large-scale extractions.
  • Verify that location slugs match regional naming conventions for Spain, Italy, and Portugal.
  • Maintain raw dataset records to allow retroactive debugging of normalization errors.
  • Deduplicate records using unique property codes rather than display titles.
  • Monitor run status messages in the console if zero listings are returned.

Frequently asked questions

Do I need a login or cookies?

No account is required because Idealista listings are publicly accessible.

Why does the input include proxy settings?

Cloud traffic can encounter blocks, so the actor keeps Apify Proxy enabled by default to ensure reliable public page access.

Which countries are supported?

The platform supports Spain via idealista.com, Portugal via idealista.pt, and Italy via idealista.it.

How many listings can I scrape per search?

You can collect up to 1,800 listings per search query, which represents the hard cap enforced by Idealista.

Resources

● Featured actors

Idealista Scraper

Scrape real estate listings from Idealista.com. Extract property prices, locations, features, photos, and agent contacts for Spain, Italy, and Portugal.

Run on Apify ↗