Idealista API: anuncios inmobiliarios en JSON
Idealista tiene una API oficial y conviene decirlo tal cual: existe, pero el acceso se concede a mano y no es autoservicio. Esta API lee lo que el portal muestra públicamente — precio, superficie, habitaciones, zona — y lo devuelve como JSON. La localidad es obligatoria, y no por capricho: una búsqueda inmobiliaria sin zona no responde a ninguna pregunta real.
Endpoints
| endpoint | Qué devuelve | Obligatorios |
|---|---|---|
| search | Búsqueda de anuncios por localidad en España, Italia o Portugal, en venta o alquiler, con los filtros del portal. | location |
| detail | La ficha completa de un anuncio por su id de Idealista (el número que aparece en la URL). | id |
| geography | Resuelve un nombre de lugar escrito libremente al identificador de localidad de Idealista, listo para usar en la búsqueda. | query |
Cada llamada se cobra en créditos. Las llamadas fallidas y bloqueadas son gratuitas.
Ejemplo que funciona
Empieza siempre por geography. Los nombres de barrio y municipio se repiten entre provincias, y una localidad mal resuelta devuelve resultados de otro sitio sin dar ningún error.
curl -X POST https://api.reefapi.com/idealista/v1/search \
-H "x-api-key: TU_CLAVE" \
-H "content-type: application/json" \
-d '{"location": "madrid", "operation": "sale", "price_max": 400000}'{
"ok": true,
"data": {
"results": [
{
"id": "...",
"title": "...",
"price": 365000,
"currency": "EUR",
"size_m2": 85,
"rooms": 3,
"district": "..."
}
]
},
"meta": { "record_count": 30, "cache_hit": false, "mode": "live" }
}En lugar de tu propio scraper de Idealista
Un scraper propio de Idealista funciona el primer día. Lo que viene después es lo caro: cuando cambia la estructura del listado, el parser devuelve una lista vacía en lugar de un error, y en recorridos largos la protección anti-bot corta a mitad de camino.
En el inmobiliario hay además un problema que un scraper casero rara vez resuelve bien: los nombres de localidad son ambiguos y el portal trabaja con identificadores internos. Aquí resolverlos es un endpoint aparte.
Para un estudio puntual tu script sale más barato y lo decimos sin rodeos. Para un seguimiento semanal, lo caro no es el código sino las averías que nadie ve.
Límites y notas honestas
- No es la API oficial de Idealista y no tenemos acuerdo con Idealista. Su API existe, pero el acceso se aprueba manualmente.
- `location` es obligatoria. No hay búsqueda nacional sin zona.
- Si el anuncio no publica año de construcción o certificado energético, el campo viene vacío; no lo deducimos.
- Sin caché: cada llamada refleja el estado en ese momento.