# Idealista Scraper (`dz_omar/idealista-scraper`) Actor

Extract unlimited property data from Idealista (Spain/Portugal/Italy). Bypasses 1,800-listing limit. Gets prices, specs, photos & contacts. Monthly $15 + API costs. One-day free trial.

- **URL**: https://apify.com/dz_omar/idealista-scraper.md
- **Developed by:** [FlowExtract API](https://apify.com/dz_omar) (community)
- **Categories:** Lead generation, Real estate, SEO tools
- **Features:** Limited permissions
- **Stats:** 285 total users, 5 monthly users, 100.0% runs succeeded, 23 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🏘️ Idealista Bulk Property Scraper

Extract high-quality real estate data from **multiple Idealista property listings** across **Spain**, **Portugal**, and **Italy** in a single run.

This actor is designed for bulk property data extraction, processing search result pages and individual property listings efficiently. Perfect for real estate analysts, investors, agencies, and developers who need to scrape dozens or hundreds of properties at once.

***

### 🔎 What This Actor Does

This bulk scraper processes **Idealista search result pages** and extracts detailed information from each property listing, including:

- 📌 Title, description, and address
- 💰 Price information
- 📏 Area, number of rooms and bathrooms
- 🖼️ Complete image galleries
- 🏢 Agency details and contact information
- 📍 GPS coordinates and maps
- 🔧 Property features (terrace, elevator, AC, etc.)
- ⚡ Energy performance ratings
- 🏗️ Building characteristics

**Key Features:**

- **Bulk Processing**: Handle multiple search URLs simultaneously
- **Unlimited Extraction**: Bypass Idealista's 1,800-property pagination limit
- **Resume Capability**: Automatically resumes from where it left off if interrupted
- **Rate Limiting**: Built-in delays to respect server resources
- **Error Handling**: Robust retry mechanisms for failed requests

***

### 🛠️ How It Works

This actor uses the **[Idealista Property Scraper API](https://apify.com/dz_omar/idealista-scraper-api?fpr=smcx63)** internally to extract individual property data. While the API actor processes one property at a time, this bulk scraper:

1. **Processes search URLs** containing multiple property listings
2. **Navigates through properties** automatically using smart navigation
3. **Calls the Idealista Property Scraper API** for detailed data extraction
4. **Aggregates results** into a comprehensive dataset

> 💡 **Cost Efficiency**: Instead of manually running the single-property scraper hundreds of times, this actor automates the entire workflow.

***

### 🌐 Supported Input URLs

You can use this actor with **Idealista search result URLs** such as:

- `https://www.idealista.com/en/geo/venta-obranueva/andalucia/con-2-dormitorios,3-dormitorios,4-dormitorios/pagina-4?ordenado-por=precios-asc`
- `https://www.idealista.pt/comprar-casas/porto/`
- `https://www.idealista.it/vendita-case/roma/`

The actor will automatically detect the first property on the page and navigate through subsequent listings.

***

### ⚙️ Input Configuration

```json
{
  "Url": [
    "https://www.idealista.com/en/geo/venta-obranueva/andalucia/con-2-dormitorios,3-dormitorios,4-dormitorios/pagina-4?ordenado-por=precios-asc"
  ],
  "desiredResults": 50,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

#### Input Parameters

| Parameter | Type | Description | Default |
|-----------|------|-------------|---------|
| `Url` | Array | List of Idealista search URLs to scrape | Required |
| `desiredResults` | Integer | Maximum properties to scrape | 10 |
| `proxyConfig` | Object | Proxy configuration (required) | RESIDENTIAL |

***

### 📊 Sample Output

Each property in your dataset will contain comprehensive information:

```json
{
  "propertyCode": "34406643",
  "thumbnail": "https://img4.idealista.pt/blur/480_360_mq/0/id.pro.pt.image.master/00/21/9e/292889917.webp",
  "externalReference": "VCM14500",
  "numPhotos": 37,
  "price": 890000,
  "priceInfo": {
    "price": {
      "amount": 890000,
      "currencySuffix": "€"
    }
  },
  "propertyType": "chalet",
  "operation": "sale",
  "size": 970,
  ....
  "sourceUrl": "https://www.idealista.pt/en/comprar-casas/viana-do-castelo-distrito/com-apartamentos,moradias/?ordem=precos-asc",
  "scrapedAt": "2026-02-06T10:15:19.019Z"
}
```

***

### 💰 Pricing Model - Monthly Subscription + Idealista Property Scraper API Costs

**🎯 Monthly Subscription: $15/month + Idealista Property Scraper API costs per property**

This actor operates with a **monthly rental subscription** plus charges for the internal **[Idealista Property Scraper API](https://apify.com/dz_omar/idealista-scraper-api?fpr=smcx63)** calls.

#### **Pricing Structure:**

- **Monthly Rental**: $15/month (auto-renewing subscription)
- **Idealista Property Scraper API Costs**: Variable pricing based on your Apify subscription tier
- **one-day Free Trial**: Test the actor before committing to subscription

#### **Cost Formula:**

```
Monthly Total = $15 + (Number of Properties × API Cost per Property)
```

### 🚀 Use Cases

- **🏢 Real Estate Agencies**: Bulk market analysis and competitor research
- **📈 Property Investors**: Track market trends across multiple regions
- **🔍 SEO & Content Teams**: Gather property data for content creation
- **🤖 Developers**: Build automated property monitoring systems
- **📊 Market Analysts**: Extract insights from large property datasets
- **🏗️ Construction Companies**: Identify development opportunities

***

### ⚡ Key Features

#### **Unlimited Extraction Capability**

- **Breaks Through Idealista's 60-Page Limit**: While Idealista typically limits users to 60 pages (≈1,800 properties) and shows the message *"Have you seen 1,800 homes and still can't find what you're looking for?"*, this actor can extract **ALL available properties**
- **No Artificial Limits**: Extract thousands of properties from a single search URL
- **Continuous Navigation**: Uses internal property navigation to bypass page limitations
- **Only Limited by Your Subscription**: Extract properties with active subscription (API costs apply per property)

> 🚀 **Breakthrough Feature**: Most scrapers hit Idealista's 1,800-property wall, but this actor navigates property-by-property, completely bypassing pagination limits!

#### **Resume Capability**

- Automatically saves progress during execution
- Resumes from the last processed property if interrupted
- Perfect for large-scale scraping operations

#### **Smart Error Handling**

- Exponential backoff for failed requests
- Skips invalid properties automatically
- Comprehensive logging for debugging

#### **Rate Limiting**

- Configurable delays between requests
- Respects server resources
- Reduces risk of being blocked

#### **Multi-Domain Support**

- Spain: `idealista.com`
- Portugal: `idealista.pt`
- Italy: `idealista.it`

***

#### **Input Validation**

- Only Idealista domains are accepted
- URLs must be properly formatted search result pages
- Invalid URLs are automatically skipped

***

### 🎯 Getting Started

1. **Start Free Trial**: Activate the one-day free trial
2. **Consider Apify Subscription**: Upgrade to Silver/Gold for 88% API cost savings
3. **Test the Actor**: Run small extractions to verify functionality
4. **Subscribe**: Convert to monthly subscription for unlimited access
5. **Scale Up**: Extract thousands of properties with confidence

#### **Subscription Management**

- **Auto-Renewal**: Monthly subscription automatically renews
- **Cancel Anytime**: Cancel subscription in Apify Console
- **Immediate Access**: Start extracting immediately after subscription

***

### 🤝 Support & Resources

### 📞 Support

#### Get Help

- 🌐 **Website**: [flowextractapi.com](https://flowextractapi.com)
- 📧 **Email**: <flowextractapi@outlook.com>
- 🙋 **Apify Profile**: [FlowExtract API](https://apify.com/dz_omar?fpr=smcx63)
- 💬 **GitHub Issues**: [FlowExtractAPI](https://github.com/FlowExtractAPI)

#### Social Media

- 💼 **LinkedIn**: [flowextract-api](https://www.linkedin.com/in/flowextract-api/)
- 🐦 **Twitter**: [@FlowExtractAPI](https://x.com/FlowExtractAPI)
- 📱 **Facebook**: [flowextractapi](https://www.facebook.com/flowextractapi)

### 🌟 Related Actors by FlowExtract API

#### 🎬 Video & Media

- **[YouTube Transcript Extractor](https://apify.com/dz_omar/youtube-transcript-metadata-extractor?fpr=smcx63)** - Extract transcripts with timestamps
- **[YouTube Scraper Pro](https://apify.com/dz_omar/Youtube-Scraper-Pro?fpr=smcx63)** - Complete channel and playlist extraction
- **[Zoom Scraper](https://apify.com/dz_omar/zoom-scraper?fpr=smcx63)** - Download recordings and transcripts
- **[Loom Scraper](https://apify.com/dz_omar/loom-video-scraper?fpr=smcx63)** - Loom video and transcript extraction

#### 🏠 Real Estate

- **[Idealista Scraper API](https://apify.com/dz_omar/idealista-scraper-api?fpr=smcx63)** - Spanish property data with API
- **[Idealista Scraper](https://apify.com/dz_omar/idealista-scraper?fpr=smcx63)** - Real estate listings extractor

#### 🛠️ Developer Tools

- **[Screenshot](https://apify.com/dz_omar/screenshot?fpr=smcx63)** - Fast webpage screenshots
- **[Ultimate Screenshot](https://apify.com/dz_omar/ultimate-screenshot?fpr=smcx63)** - Advanced screenshot tool
- **[Network Security Scanner](https://apify.com/dz_omar/network-security-scanner?fpr=smcx63)** - Security vulnerability scanner

#### 📱 Social Media

- **[Facebook Ads Scraper Pro](https://apify.com/dz_omar/facebook-ads-scraper-pro?fpr=smcx63)** - Extract Facebook ads data

***

#### **⚖️ Legal & Compliance**

- **Public Data Access**: Only processes publicly available Facebook Ad Library data
- **Rate Limiting**: Respects Facebook's service limits and terms of use
- **Data Protection**: No storage of personal information or unauthorized data collection
- **Commercial Use**: Suitable for business intelligence and research applications

***

# Changelog

This Actor's version history is a separate document: https://apify.com/dz_omar/idealista-scraper/changelog.md

# Actor input Schema

## `Url` (type: `array`):

Idealista search URLs to scrape. Supports all Idealista sites (ES, PT, IT) with optional sorting parameters via URL query strings.

## `desiredResults` (type: `integer`):

Maximum properties to scrape per URL

## `proxyConfig` (type: `object`):

Proxy settings for scraping. Residential proxies recommended to avoid blocking

## Actor input object example

```json
{
  "Url": [
    "https://www.idealista.com/en/venta-viviendas/balears-illes/?ordenado-por=precios-asc"
  ],
  "desiredResults": 10,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `properties` (type: `string`):

Complete property details including pricing, location, features, and images

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "Url": [
        "https://www.idealista.com/en/venta-viviendas/balears-illes/?ordenado-por=precios-asc"
    ],
    "desiredResults": 10,
    "proxyConfig": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("dz_omar/idealista-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "Url": ["https://www.idealista.com/en/venta-viviendas/balears-illes/?ordenado-por=precios-asc"],
    "desiredResults": 10,
    "proxyConfig": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("dz_omar/idealista-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "Url": [
    "https://www.idealista.com/en/venta-viviendas/balears-illes/?ordenado-por=precios-asc"
  ],
  "desiredResults": 10,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call dz_omar/idealista-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dz_omar/idealista-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/GWh7Xd12MDFp9LDmh/builds/m4OIue9sI1n8YTbKd/openapi.json
