# 🇪🇸 Idealista Property Scraper \[From 💰$0.75/1K] (`misterkhan/idealista-scraper`) Actor

\[From $0.75/1K] Extract property listings for sale and rent across Spain (idealista.com), Italy (idealista.it), and Portugal (idealista.pt) — prices, square meters, rooms, photos, and agency details.

- **URL**: https://apify.com/misterkhan/idealista-scraper.md
- **Developed by:** [Khan](https://apify.com/misterkhan) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.75 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## 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 Property Scraper \[From 💰$0.75/1K]

**\[From $0.75/1K] Extract property listings for sale and rent across Spain (idealista.com), Italy (idealista.it), and Portugal (idealista.pt) — prices, square meters, rooms, photos, and agency details.**

Paste one or more Idealista (Spain, Italy & Portugal) URLs and get back every property listing in clean, structured data. Export your results to **Excel, CSV, JSON**, or connect directly to Google Sheets, Airtable, and your favorite workflow tools.

***

### ✨ What Makes This Different

| Feature | Why It Matters |
|---|---|
| **Covers All 3 Idealista Countries** | Works seamlessly with Idealista Spain (.com), Italy (.it), and Portugal (.pt) search URLs. |
| **Works Out of the Box** | No proxy configuration or account login required — just paste your Idealista search URL. |
| **Complete Property Metrics** | Captures price in EUR, room count, floor area (m²), neighborhood/address, description, and listing link. |

***

### 📥 How to Use

1. Click **Try for free**
2. Paste one or more URLs into **Start URLs** (for example: `https://www.idealista.com/en/venta-viviendas/madrid-madrid/`)
3. Set **Max Results** to choose how many property listings you want to collect
4. Click **Start**
5. Download your data from the **Dataset** tab in **Excel, CSV, or JSON**

***

### 📤 What You Get

Each record includes:

- 💶 **Price** — formatted asking price or monthly rent in Euros
- 📍 **Title & Location** — property title, street/neighborhood, and municipality
- 📐 **Rooms & Area (m²)** — bedroom count, bathroom count, and size in square meters
- 📝 **Property Description** — summary text and key highlights from the listing
- 🖼️ **Property Photos & Link** — main image URL and direct link to the Idealista listing

**Example output:**

```json
{
  "id": "104829173",
  "title": "Flat / apartment for sale in Calle de Serrano, Recoletos, Madrid",
  "price": "€1,250,000",
  "price_raw": 1250000,
  "rooms": 3,
  "baths": 2,
  "size_sqm": 145,
  "address": "Recoletos, Salamanca, Madrid",
  "description": "Exterior apartment on the 4th floor with elevator, terrace, and natural light...",
  "image": "https://img4.idealista.com/blur/WEB_LISTING-M/0/id.pro.es.image.master/10/48/29/104829173.jpg",
  "url": "https://www.idealista.com/inmueble/104829173/"
}
```

***

### 🎯 Popular Use Cases

- **European Property Investment** — Track price-per-square-meter and rental yields across Madrid, Barcelona, Milan, Rome, Lisbon, and Porto
- **Real Estate Agency Lead Sourcing** — Monitor newly listed properties and market inventory changes daily
- **Valuation & Comparative Market Analysis** — Build historical pricing spreadsheets by district and property size
- **Relocation & Buyer Search** — Aggregate and filter hundreds of listings in Excel or Google Sheets

***

### ⚙️ Input Options

| Field | Description |
|---|---|
| **Start URLs** | One or more Idealista (Spain, Italy & Portugal) URLs to collect data from |
| **Max Results** | Maximum number of property listings to collect per run (default: `40`) |

***

### 💰 Cost & Free Tier

This Actor uses simple **Pay-Per-Result** pricing with a **`$0.00` start fee** — you only pay for the property listings successfully delivered to your dataset.

- **Try for Free:** With Apify's **free $5 monthly credit**, you can test the scraper at no cost (Free plan runs collect up to `40` property listings per run).
- **Volume Discounts on Paid Plans:** Upgrading to an Apify paid plan unlocks unlimited results per run and automatic volume discounts up to **90% off**:

| Apify Plan | Price per 1,000 Results | Price per Result | Per-Run Limit |
| :--- | :---: | :---: | :--- |
| **Free Plan** | **`$5.00 / 1K`** | `$0.0050` | Up to `40` results / run |
| **Starter (Bronze)** | **`$1.40 / 1K`** | `$0.0014` | Unlimited |
| **Scale (Silver)** | **`$1.00 / 1K`** | `$0.0010` | Unlimited |
| **Business+ (Gold / Platinum / Diamond)** | **`$0.75 / 1K`** | `$0.0008` | Unlimited |

***

### ❓ FAQ

**Do I need to configure proxies or accounts?**
No. Everything works out of the box with zero proxy setup and no login required.

**Can I pass multiple URLs in one run?**
Yes! Add as many URLs as you need to **Start URLs** and the scraper will collect property listings across all of them up to your **Max Results** limit.

**Can I download the results as an Excel or CSV spreadsheet?**
Yes. Once the run finishes, open the **Dataset** tab and click **Export** to download your data in Excel (`.xlsx`), CSV, JSON, or HTML table format.

***

### 🔗 Related Actors from Our Store

Combine this Actor with our other **`128 MB` Pay-Per-Event (PPE)** tools in the same workflow (`$0.00` start fee):

| Related Actor | Best For | Starting Price |
| :--- | :--- | :--- |
| **[🏡 Zillow Search Scraper](https://apify.com/misterkhan/zillow-scraper)** | US homes for sale, rentals & sold listings — prices, Zestimates, beds/baths & coordinates | **From 💰`$0.90 / 1K`** |
| **[🇫🇷 PAP.fr France FSBO Property Scraper](https://apify.com/misterkhan/pap-fr-particuliers-scraper)** | Owner-direct (Particulier à Particulier) property sales & rentals across France | **From 💰`$0.75 / 1K`** |

👉 **[See all Actors by `misterkhan` on Apify Store →](https://apify.com/misterkhan)**

***

### ⚠️ Disclaimer

This Actor collects publicly available data and is not affiliated with, endorsed by, or connected to Idealista. It is intended for market research and business analysis purposes only.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more Idealista (Spain, Italy & Portugal) URLs to collect property listings from (e.g., `https://www.idealista.com/en/venta-viviendas/madrid-madrid/`).

## `maxItems` (type: `integer`):

Maximum number of property listings to collect (Free plan runs collect up to 40 results per run; paid plans support unlimited results).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.idealista.com/en/venta-viviendas/madrid-madrid/"
    }
  ],
  "maxItems": 40
}
```

# Actor output Schema

## `results` (type: `string`):

All extracted property listings.

## `usage_summary` (type: `string`):

Execution telemetry and extraction summary stored in the default key-value store.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.idealista.com/en/venta-viviendas/madrid-madrid/"
        }
    ],
    "maxItems": 40
};

// Run the Actor and wait for it to finish
const run = await client.actor("misterkhan/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 = {
    "startUrls": [{ "url": "https://www.idealista.com/en/venta-viviendas/madrid-madrid/" }],
    "maxItems": 40,
}

# Run the Actor and wait for it to finish
run = client.actor("misterkhan/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 '{
  "startUrls": [
    {
      "url": "https://www.idealista.com/en/venta-viviendas/madrid-madrid/"
    }
  ],
  "maxItems": 40
}' |
apify call misterkhan/idealista-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,misterkhan/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/r156ObQbucde3T9LN/builds/7CChWPfCqlIkp6gVo/openapi.json
