Idealista Scraper API
An Idealista scraper API for Spain, Italy and Portugal: pass a location slug or a listing URL and get one row per property — title, price as shown and parsed, price per m², rooms, size in m², the detail chips, description excerpt, listing agency and thumbnail. Sale or rent, per country site.
$0.001 per delivered listing · $2 free every month · Failed runs never billed
$ curl $QD/idealista_search/run \
-H "Authorization: Bearer $QD_API_KEY" \
-d '{"location": "madrid-madrid", "operation": "sale", "site": "es", "max_results": 30}'
{ "status": "done", "count": 30,
"results": [
{
"listing_id": "…",
"title": "…",
"url": "…",
"price": "…" } ],
"cost": 0.03 }
# 30 listings × $0.001 · nothing delivered, nothing charged
What an Idealista scraper API does
Idealista runs three national sites and this collector treats them as one input: site picks es, it or pt, operation picks sale or rent, and the location is either a slug like "madrid-madrid" or a full results URL you paste to read exactly that search. The address zone and property type arrive already joined into the listing title.
Money is returned in two shapes because a portal shows it in one: price is the string as printed, price_value the parsed number, and price_per_m2 the ratio as Idealista displays it. Listings from an agency carry the agency name; private ads leave it null rather than inventing a seller, and the on-card details chips (floor, elevator, condition) are kept verbatim.
What one listing looks like
Every delivered listing carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.
| Field | Type | What it holds |
|---|---|---|
rank | integer | 1-based position. |
listing_id | string · nullable | Idealista listing id. |
title | string | Listing title (type + street/zone). |
url | string · nullable | Listing URL. |
price | string · nullable | Price as shown. |
price_value | number · nullable | Parsed price. |
price_per_m2 | string · nullable | Price per m² as shown. |
rooms | integer · nullable | Rooms. |
size_m2 | number · nullable | Size in m². |
details | string[] | Detail chips as shown (floor, elevator…). |
description | string · nullable | Listing description excerpt. |
agency | string · nullable | Listing agency (null for private). |
thumbnail | string · nullable | First photo. |
Inputs
The whole request. Anything you leave out falls back to the default shown in the catalog.
| Input | Type | Required | What it does |
|---|---|---|---|
location | string | yes | Idealista location slug ("madrid-madrid") or a full listing URL. |
operation | string | no | sale (default) or rent. One of: sale, rent. |
site | string | no | Country site: es (default), it, pt. One of: es, it, pt. |
max_results | integer | no | How many listings to deliver at most (1–100). You pay only for delivered listings. |
Pricing
Idealista Scraper API pricing
$0.001 per delivered listing. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,000 listings before you spend anything.
Pay as you go
- $2 free credit / month
- 60 requests / min
- List unit prices
Starter
- $15 free credit / month
- 300 requests / min
- 10% off unit prices
Growth
- $50 free credit / month
- 600 requests / min
- 20% off unit prices
Scale
- $250 free credit / month
- 1,200 requests / min
- 30% off unit prices
Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.
Integration
One POST, typed rows
Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/.
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/idealista_search/run \
-H "Authorization: Bearer $QD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"location":"madrid-madrid","operation":"sale","site":"es","max_results":30}'
What people build with the Idealista scraper API
Three shapes of work this endpoint was designed around.
Iberian market analysis
Build price-per-m² distributions for a city from rows, across the Spanish, Italian and Portuguese sites.
Rent-versus-buy
Run the same location for sale and for rent and compare what each side of the market asks.
Agency mapping
See which agencies list a zone and at what price, with private ads separated out.
Idealista Scraper API versus rolling your own
The differences that actually cost time when you build this in-house.
| DIY scraper | This collector | |
|---|---|---|
| Three sites | One domain hardcoded per scraper | es, it and pt from one field |
| Location input | Only a URL you must find | A slug or a pasted results URL |
| Private listings | A guessed or blank agency | agency null, kept honest |
Does Idealista offer a public data API?
Its API is gated behind an application and approval that most requests never clear. This collector reads the public results page, so you work from a location slug or URL instead of waiting on credentials.
How do I specify the location?
Use Idealista's own slug — "madrid-madrid", "barcelona-barcelona" — or paste a full results URL and the collector reads exactly that search, including any filters already in it.
Which countries and operations are covered?
The three Idealista markets — Spain (es), Italy (it) and Portugal (pt) — each for sale or rent via operation. There is no fourth site; Idealista does not operate one.
Is there a free Idealista scraper API?
Every account gets $2 of credit every month with no card, which is about 2,000 delivered listings on this endpoint at $0.001 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.
How much does one run cost?
Multiply the rows you actually receive by $0.001. A run capped at 100 listings — the maximum for this collector — costs $0.1 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.
Run the Idealista scraper API now
$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.