Idealista API
The Idealista API returns Spanish and Italian real-estate listings as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary search endpoint returns listings with id, URL, title, price, rooms, bathrooms, surface (m2), floor and features, and you can pull a detail and geography. It is built for real-estate tools and Southern-Europe property analytics that need Idealista data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/idealista/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"location": "Madrid",
"country": "es"
}
}{
"ok": true,
"meta": {
"api": "idealista",
"endpoint": "search",
"mode": "live",
"latency_ms": 1985,
"record_count": 30,
"bytes": 472758,
"cache_hit": false,
"stop_reason": "limit_reached",
"method": "camoufox_mint_curl_replay",
"country": "es",
"currency": "EUR",
"total": 17728,
"count": 30,
"page": 1,
"slug": "madrid-madrid",
"filters_applied": {},
"filters_unsupported": null
},
"data": {
"results": [
{
"id": "[redacted-phone]",
"url": "https://www.idealista.com/inmueble/[redacted-phone]/",
"title": "Piso en Calle de Castelló, Recoletos, Madrid",
"price": 1490000,
"currency": "EUR",
"rooms": 2,
"bathrooms": null,
"surface_m2": 106,
"floor": "3ª planta interior con ascensor",
"features": [],
"thumbnail_url": "https://img4.idealista.com/blur/591_420_mq/0/id.pro.es.image.master/5a/9a/e5/[redacted-phone].jpg"
},
{
"id": "[redacted-phone]",
"url": "https://www.idealista.com/inmueble/[redacted-phone]/",
"title": "Piso en Calle Velázquez, Castellana, Madrid",
"price": 2250000,
"currency": "EUR",
"rooms": 3,
"bathrooms": null,
"surface_m2": 152,
"floor": "3ª planta exterior con ascensor",
"features": [],
"thumbnail_url": "https://img4.idealista.com/blur/591_420_mq/0/id.pro.es.image.master/b4/6e/ef/[redacted-phone].jpg"
},
{
"id": "[redacted-phone]",
"url": "https://www.idealista.com/inmueble/[redacted-phone]/",
"title": "Piso en Calle de la Lechuga, Sol, Madrid",
"price": 798000,
"currency": "EUR",
"rooms": 4,
"bathrooms": null,
"surface_m2": 110,
"floor": "3ª planta exterior con ascensor",
"features": [],
"thumbnail_url": "https://img4.idealista.com/blur/591_420_mq/0/id.pro.es.image.master/45/b0/a4/[redacted-phone].jpg"
}
],
"total": 17728,
"count": 30,
"page": 1,
"country": "es",
"slug": "madrid-madrid",
"filters_applied": {},
"filters_unsupported": []
}
}What the Idealista API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search Idealista property listings by location (Spain, Italy or Portugal; for sale or rent) with structured filters: price (EUR), bedrooms, surface (m²), property type and sort. Each result carries id, title, price, rooms, bathrooms, surface, floor, features and thumbnail. Paginate with page. | Real-estate investors call search to search Idealista property listings by location (Spain, Italy or Portugal; for sale or rent) w…. | location, country, contract, sort, home_type, ... |
| detail | Full record for a single listing by its Idealista id (the number in an idealista.com/inmueble/<id>/ URL, or a search result's `id`). Returns title, price, address, bedrooms, bathrooms, surface, year built, the full feature list, description and all gallery image URLs. | Brokerage tools call detail to get full record for a single listing by its Idealista id (the number in an idealista.com/inmueble…. | id, country |
| geography | Resolve a free-text place name to the Idealista location slug + a ready-to-use search preview (the count of active listings there). Use it to confirm a location before searching, or to discover the exact slug a city resolves to. | Property dashboards call geography to resolve a free-text place name to the Idealista location slug + a ready-to-use search preview…. | query, country, contract |
Call search from your stack
curl -X POST https://api.reefapi.com/idealista/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"location":"Madrid","country":"es"}'import requests
r = requests.post(
"https://api.reefapi.com/idealista/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"location": "Madrid",
"country": "es"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/idealista/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"location": "Madrid",
"country": "es"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.idealista.search with {"location":"Madrid","country":"es"}.Who uses this API and why
- Investors call search to track listing prices by geography.
- Dashboards use detail and features to enrich a property.
- Analysts use geography to size a Spanish or Italian market.
Questions developers ask before integrating
What is the Idealista API?
Idealista API is a ReefAPI endpoint group for idealista It returns live JSON through POST requests under /idealista/v1.
Is the Idealista API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Idealista calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Idealista login or account?
No login to Idealista is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Idealista data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Idealista API use?
Idealista actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Idealista from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call idealista actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Idealista API a Idealista scraper?
It is the managed alternative to a DIY Idealista scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same idealista back as clean JSON.
Why does my Idealista scraper keep getting blocked?
Most Idealista scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.