Tony Wang4 min de lecturaCómo extraer datos de Zillow en 2026 (API y Python)
Tres formas de extraer datos de Zillow en 2026: Python DIY, herramientas sin código o API estructurada, con los aspectos legales básicos.
La forma más rápida de extraer datos de Zillow en 2026 es llamar a una API estructurada de Zillow que devuelva JSON normalizado — resultados de búsqueda, detalles de la publicación, precio, habitaciones, baños y dirección — en lugar de analizar las páginas de Zillow, cargadas de JavaScript, y luchar contra sus defensas anti-bot. Puedes construir un scraper propio (DIY), pero Zillow bloquea activamente la automatización. Esta guía cubre los tres enfoques, qué devuelve cada uno, dónde falla cada uno y los aspectos legales básicos.
¿Es legal extraer datos de Zillow?
Extraer datos públicos de las publicaciones de Zillow (precio, dirección, habitaciones/baños, estado) suele ser scraping web público de menor riesgo — en EE. UU., el caso hiQ v. LinkedIn determinó que acceder a datos públicos no viola la CFAA, y hechos como los precios no son objeto de derechos de autor. Pero los Términos de Servicio de Zillow prohíben el acceso automatizado, y las fotos y descripciones de las publicaciones pueden tener derechos de autor, así que evita republicarlas. Usa datos públicos y factuales; respeta los límites de tasa; revisa los términos de Zillow. Consulta ¿es legal el web scraping?. No es asesoría legal.
Opción 1: Hacerlo tú mismo en Python (y por qué falla)
Zillow se renderiza con mucho JavaScript y se defiende de forma agresiva, así que recurres a un navegador headless:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
page = p.chromium.launch().new_page()
page.goto("https://www.zillow.com/austin-tx/")
# luego analiza el JSON embebido __NEXT_DATA__, pagina por región del mapa y resuelve el CAPTCHA de presionar y mantener...
Funciona en la demo y luego falla: Zillow está calificado como uno de los objetivos más difíciles de la web:
- Detección de bots PerimeterX (HUMAN) — análisis de comportamiento (mouse, pulsaciones de teclas), fingerprinting del navegador, verificaciones de HTTP/2 y orden de encabezados, y un CAPTCHA de presionar y mantener; necesitas proxies residenciales y suplantación de fingerprint.
- Tasa segura baja — quienes lo practican limitan a alrededor de 20-50 páginas de detalle de propiedad por día por IP, así que escalar implica muchas IPs residenciales rotativas.
- JSON embebido cambiante — los datos del cliente de Zillow (un blob tipo
__NEXT_DATA__) cambia de forma y rompe los parsers. - Deterioro de los bypasses — los bypasses de PerimeterX de código abierto suelen durar solo un par de meses antes de ser parcheados.
Opción 2: Herramientas sin código
Los extractores visuales exportan CSV/JSON y sirven para extracciones puntuales, pero son menos convenientes para pipelines dentro de un producto con campos predecibles.
Opción 3: Una API estructurada de Zillow
Para flujos de trabajo repetibles, una API de scraping de Zillow devuelve JSON normalizado sin necesidad de ejecutar un navegador. Busca por ubicación:
curl "https://api.crawlora.net/api/v1/zillow/search?location=Austin,%20TX" \
-H "x-api-key: $CRAWLORA_API_KEY"
Consulta una sola publicación por ZPID en Python:
import requests
prop = requests.get(
"https://api.crawlora.net/api/v1/zillow/property/12345678",
headers={"x-api-key": "YOUR_API_KEY"},
).json()["data"]
print(prop.get("address"), prop.get("price"), prop.get("bedrooms"))
Una respuesta es JSON normalizado que puedes almacenar directamente (los campos son ilustrativos — revisa la documentación):
{
"code": 200,
"msg": "OK",
"data": [
{
"zpid": "12345678",
"address": "123 Example St, Austin, TX",
"price": 625000,
"bedrooms": 3,
"bathrooms": 2,
"living_area": 1850,
"status": "FOR_SALE"
}
]
}
Resuelve primero una ubicación con autocompletado y luego busca — o consulta una sola publicación por ZPID:
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/zillow"
place = requests.get(f"{base}/autocomplete", headers=h, params={"query": "Austin, TX"}).json()["data"]
results = requests.get(f"{base}/search", headers=h, params={"location": "Austin, TX"}).json()["data"]
El autocompletado devuelve un region_id y los límites del mapa (west/east/south/north); pasar esos valores a la búsqueda es la forma de solicitud más estable, así no tienes que adivinar los slugs de URL de Zillow.
Qué puedes recopilar
Donde la publicación pública los expone: ZPID, dirección, precio, habitaciones, baños, superficie habitable, tamaño del lote, tipo de vivienda, estado, agente/corredora, descripción, contenido multimedia y estimaciones — además del contexto de búsqueda o ZPID que solicitaste.
Limitaciones y desafíos comunes
- No hay una API pública abierta. El acceso oficial a la API de Zillow está restringido a socios (programas Bridge / MLS), así que recopilar publicaciones públicas arbitrarias implica hacer scraping.
- PerimeterX, calificación Muy Difícil. Zillow ejecuta PerimeterX (HUMAN) con análisis de comportamiento y fingerprinting; hacerlo tú mismo requiere proxies residenciales, suplantación de fingerprint y tasas bajas por IP, y los bypasses de código abierto se deterioran en meses — una API estructurada absorbe todo esto detrás de una sola clave.
- El contenido multimedia de las publicaciones tiene derechos de autor. Precio, dirección, habitaciones/baños y estado son hechos que puedes recopilar; las fotos de las publicaciones y las descripciones de los agentes tienen derechos de autor — no las republiques.
- El estado cambia rápido y las estimaciones son modelos. En venta/vendida/pendiente cambia rápidamente, así que vuelve a extraer los datos según un cronograma, y trata los valores tipo Zestimate como resultado del modelo de Zillow, no como verdad absoluta.
Dónde se usa esto
- Inteligencia del mercado inmobiliario — rastrea publicaciones, precios e inventario por mercado. Consulta el caso de uso de inteligencia del mercado inmobiliario.
- Comparables e investigación de valuación — obtén publicaciones comparables para una zona.
- Mapeo de leads y territorios — combina con datos locales para flujos de trabajo inmobiliarios.
Fuentes
Empieza a recopilar
Pruébalo primero, gratis: pasa cualquier URL pública por el Free Web Scraper, o revisa si un sitio bloquea bots con el Anti-Bot Checker — sin registro.
Prueba el endpoint de búsqueda en el Playground, revisa el esquema en la documentación de la API y consulta los precios. Para una comparación completa con otras APIs de datos de Zillow, consulta las mejores APIs de scraping de Zillow en 2026. Para cubrir Redfin, Realtor.com y Trulia junto con Zillow, consulta cómo extraer datos de listados inmobiliarios, o ve directo a cómo extraer datos de Redfin para contrastar el Zestimate con la propia estimación de Redfin; para el lado de alquileres de corto plazo, cómo extraer datos de Airbnb; también cómo elegir una API de web scraping y ¿es legal el web scraping?.
Parte de nuestra serie de guías how-to-scrape — cada plataforma que cubrimos, en un solo índice.
Preguntas frecuentes
Can I scrape Zillow without getting blocked?
Zillow is one of the hardest targets on the web — it runs PerimeterX (HUMAN) with behavioral analysis, browser fingerprinting, and a press-and-hold CAPTCHA, so DIY needs residential proxies, fingerprint spoofing, and low per-IP rates (practitioners cap around 20–50 detail pages/day/IP). A structured API handles proxies and browser execution behind the endpoint.
Does Zillow have an official API?
Not an open one. Zillow's API access is restricted to partners (Bridge / MLS programs), so collecting arbitrary public listings means scraping. Crawlora's Zillow endpoints return public search and property data as normalized JSON from one API key.
What Zillow data can I get?
Public listing fields: ZPID, address, price, beds/baths, living area, lot size, home type, status, broker, description, media, and estimates, where available. Facts like price and address carry the least risk; photos and descriptions can be copyrighted.
How do I search a location?
Resolve it with the autocomplete endpoint (query, with status for_sale/for_rent/sold), then pass the returned region_id or map bounds to /zillow/search — the most stable shape — or fetch one listing with /zillow/property/{zpid}.
Can I store listing photos and descriptions?
Those can be copyrighted — treat them carefully and avoid republishing. Factual fields like price and address carry the least risk.