Quien intenta extraer datos inmobiliarios de Idealista tarde o temprano choca con el mismo muro. Y no es casualidad. Idealista y Fotocasa concentran buena parte del mercado de portales inmobiliarios en España, y sus sistemas anti-bot están entre los más agresivos que me he encontrado en este terreno. Si alguna vez has lanzado un scraper en Python sin protección, ya lo sabes: error 403 a los pocos minutos, captchas de Cloudflare, y una IP bloqueada de forma más o menos permanente. Aquí vamos a ver por qué pasa esto, qué proxy conviene usar y cómo montarlo todo con Python, paso a paso.
¿Por qué Idealista y Fotocasa bloquean el scraping (y cómo te detectan)?
La respuesta corta: dinero. El modelo de negocio de ambos portales depende de que las agencias paguen por anuncios destacados, y un scraper masivo puede desvalorizar precisamente esos servicios. Así que no escatiman en capas de detección.
- Rate limiting por IP: más de una decena de peticiones por minuto desde la misma IP y recibes un 403 o un 429 casi al instante.
- Fingerprinting del navegador: revisan el user-agent, los headers HTTP/2, la coherencia entre ellos y cualquier huella típica de librerías como requests o Scrapy (la ausencia del header sec-ch-ua, por ejemplo, delata más de lo que parece).
- Retos JavaScript: Cloudflare y sistemas propios obligan a ejecutar código JS antes de servir la página. Un cliente HTTP simple, por mucho que se disfrece, no pasa esa prueba.
- Geolocalización y reputación de IP: las IPs de datacenter conocidas suelen estar en listas negras preventivas. Antes de que hagas nada.
El resultado es claro: hacer scraping sin proxies dedicados ni rotación tiene una vida útil cortísima. A menudo menos de 50 peticiones. Frunces el cejo, lo intentas de nuevo, y lo mismo.
Qué tipo de proxies necesitas: residenciales vs datacenter en España
Aquí está buena parte de la decisión. La diferencia entre un scraper que aguanta semanas y otro que muere en una hora suele estar en el tipo de proxy:
- Proxies datacenter: rápidos y baratos, sí. Pero sus rangos de IP son públicos y fáciles de identificar. Idealista bloquea muchos de estos rangos de forma automática, sin despeinarse.
- Proxies residenciales: pertenecen a operadores reales (Movistar, Vodafone, Orange), así que resultan prácticamente indistinguibles de un usuario español cualquiera. Para estos portales, es la opción recomendada. Sin matices.
Para proyectos de scraping intensivo, los proxies dedicados con IP española de ProxySEO son una alternativa muy sólida: HTTP/s y SOCKSv5 dedicados, anónimos, con tráfico ilimitado y soporte MCP para agentes IA, lo que permite integrarlos en flujos automatizados sin montar infraestructura propia. Y al ser dedicados, nadie más contamina la reputación de tu IP. Eso, que puede parecer un detalle menor, marca la diferencia con el tiempo.
Configuración paso a paso: proxies para scraping Idealista y Fotocasa con Python
Vamos con la configuración básica usando requests:
- Obtén tus credenciales de ProxySEO (host, puerto, usuario y contraseña).
- Instala las dependencias: pip install requests fake-useragent.
- Configura el proxy con rotación:
import requests
from itertools import cycle
proxies = [«http://user:pass@es-proxy1.proxyseo.es:8080»,
«http://user:pass@es-proxy2.proxyseo.es:8080»]
pool = cycle(proxies)
headers = {«User-Agent»: «Mozilla/5.0 (Windows NT 10.0; Win64; x64)»}
r = requests.get(«https://www.idealista.com/venta-viviendas/madrid/»,
proxies={«http»: next(pool), «https»: next(pool)},
headers=headers, timeout=10)
Falta un par de cosas. Añade delays aleatorios de entre 3 y 8 segundos entre peticiones (la regularidad delata) y rota el user-agent en cada ciclo. Y si te topas con páginas protegidas por retos JavaScript, combina los proxies con Playwright en modo stealth, apuntando el navegador al mismo proxy mediante el argumento –proxy-server.
Con esto ya tienes el cimiento para escalar el scraping de forma sostenible. La rotación avanzada y la gestión de sesiones vienen en la siguiente parte del artículo.
Rotación de IPs, delays y headers: evita bloqueos y CAPTCHAs
Con la configuración base lista, toca lo que de verdad decide si tu proyecto de proxies scraping Idealista escala o se muere a la semana: la rotación. Idealista y Fotocasa vigilan patrones de acceso, y lo hacen bien. Si decenas de peticiones salen de la misma IP en pocos minutos, el bloqueo llega antes de que te des cuenta. Aquí es donde los proxies dedicados de ProxySEO juegan a tu favor: IPs españolas y estables que puedes ir rotando de forma controlada desde un pool que tú gestionas.
Un patrón de rotación sencillo con requests:
import random
pool = [«http://usuario:clave@ip1:puerto», «http://usuario:clave@ip2:puerto», «http://usuario:clave@ip3:puerto»]
proxy = {«http»: random.choice(pool), «https»: random.choice(pool)}
Pero rotar solo no basta. Lo que de verdad simula comportamiento humano son tres cosas, y ninguna es opcional:
- Delays aleatorizados: usa time.sleep(random.uniform(4, 12)) entre peticiones. Ojo con esto: un delay fijo de 5 segundos exactos es tan sospechoso como no poner delay. La aleatoriedad es lo que despista al sistema.
- Headers realistas: rota User-Agent, Accept-Language (es-ES) y Referer. He visto scrapers que enviaban un UA de Chrome sin Accept-Language; es una señal clásica de bot y se corrige en dos líneas.
- Sesiones persistentes: reutiliza la misma IP para navegar varias páginas de un mismo listado, igual que haría una persona, y cambia de IP al saltar a otra búsqueda.
¿Y si aparece un CAPTCHA? No insistas con esa IP. Márcala como «caliente» en tu pool, déjala enfriar unas horas y sigue con otra. Aquí ayudan los proxies SOCKSv5 dedicados de ProxySEO: al ser exclusivos, no arrastras la mala reputación que van acumulando los proxies compartidos saturados.
Automatiza con agentes IA: scraping inmobiliario con soporte MCP
El scraping inmobiliario ya no es cosa de scripts escritos a mano. Los agentes de IA basados en LLMs pueden orquestar extracciones completas si les das las herramientas adecuadas, y el soporte MCP de ProxySEO existe justo para eso. El Model Context Protocol permite que tu agente (Claude, GPT u otro framework) invoque el proxy como una herramienta más, sin configuraciones frágiles ni credenciales expuestas en el prompt.
Un flujo típico con un agente IA sería:
- El agente recibe la instrucción: «extrae pisos de venta en Valencia entre 200.000 y 300.000 €».
- Mediante MCP, solicita una IP española del pool de ProxySEO y lanza el scraper (Playwright o requests) contra Idealista.
- Si detecta un bloqueo o un CAPTCHA, el propio agente decide rotar de IP, aumentar los delays o reintentar con otro enfoque de extracción.
- Los datos se estructuran en JSON y quedan listos para tu CRM o tu análisis de mercado.
Esta arquitectura agéntica convierte el scraping en un proceso autónomo y autorreparable. Como los proxies de ProxySEO son dedicados y con tráfico ilimitado, el agente itera sin preocuparse por el consumo de datos, y si algo falla en la configuración del servidor MCP, el soporte técnico en español lo resuelve en minutos. No está de más.
Conclusión: scraping sostenible y sin bloqueos con proxies dedicados españoles
Extraer datos de Idealista y Fotocasa de forma fiable no depende de un truco único. Depende de una combinación: proxies dedicados con geolocalización española, rotación inteligente de IPs, delays humanizados, headers coherentes y, cada vez más, agentes IA capaces de gestionar la operación de extremo a extremo mediante MCP. Los proxies compartidos o las IP extranjeras condenan cualquier proyecto a bloques recurrentes y datos incompletos; los proxies HTTP/s y SOCKSv5 dedicados de ProxySEO, con IPs españolas, tráfico ilimitado y soporte en español, ofrecen la base estable que el scraping profesional exige.
Si tu estrategia de SEO, inversión inmobiliaria o análisis de mercado depende de datos frescos y consistentes, empieza con un pool pequeño de IPs dedicadas, valida tu pipeline con Playwright stealth y escala después con rotación y automatización agéntica. Lo he comprobado más de una vez: la diferencia entre un scraper que muere en una semana y uno que rinde meses no está en el código. Está en la infraestructura de proxies que lo sostiene.