Necesitas implementar una función de bienes raíces que encuentre listados activos en una ciudad, dentro de un radio, o delimitada por un polígono personalizado, y necesitas que funcione esta semana. Al final de esta guía, podrás buscar datos de propiedades en vivo por ubicación, coordenadas y polígonos utilizando la API de datos de Zillow en tiempo real en Zyla API Hub, analizar los campos de respuesta que te interesan (zpid, precio, dirección, zestimate, dormitorios, baños) y conectarlo a tu aplicación o a un flujo de trabajo de agente de IA.
Qué hace esta API y cuándo usarla
La API de datos de Zillow en tiempo real proporciona búsqueda programática a través de listados de Zillow. Puedes:
- Buscar por ubicación (ciudad, condado, vecindario o código postal) con paginación y filtros de estado.
- Buscar alrededor de un punto de lat/long con un diámetro (millas o kilómetros no especificados por la documentación del hub; trátalo como un "radio de búsqueda" abstracto).
- Buscar dentro de un polígono arbitrario para límites geográficos más precisos.
Las integraciones típicas incluyen interfaces de búsqueda de propiedades, enrutamiento de leads basado en geocercas de listados, trabajos de actualización diaria de comparativos y sistemas de alertas que se activan cuando aparecen nuevos listados “FOR_SALE” dentro de un polígono.
Esta API está disponible en Zyla API Hub, un mercado con más de 10,000 APIs públicas bajo una cuenta, una clave API y un modelo de suscripción.
Comenzando en Zyla API Hub
Para obtener una clave API:
- Abre la página de la API de datos de Zillow en tiempo real y comienza una prueba: Comienza prueba de 7 días en la API de datos de Zillow en tiempo real.
- Haz clic en Suscribirse (o Comenzar prueba gratuita cuando esté disponible) y obtén tu clave API.
- Usa la clave en el encabezado de autorización como: Authorization: Bearer YOUR_API_KEY.
La facturación en Zyla es por suscripción + cuota (no por llamada). Consulta la página de la API para las opciones de acceso y precios actuales.
Puntos finales que puedes llamar hoy
Todas las solicitudes son GET a las URL de Zyla Hub y deben incluir tu encabezado de autorización. A continuación se presentan los tres puntos finales disponibles con sus URL y parámetros exactos.
1) Buscar (por ciudad/condado/vecindario/código postal)
Método: GET
URL: https://zylalabs.com/api/7341/real-time-zillow-data-api/11667/search
Parámetros:
- location (string, requerido): p. ej., Los Ángeles, CA
- page (string, opcional): p. ej., 2
- home_status (string, opcional): p. ej., FOR_SALE
curl oficial (copia/pega):
curl -s -X GET "https://zylalabs.com/api/7341/real-time-zillow-data-api/11667/search?location=Los+Angeles%2C+CA&page=2&home_status=FOR_SALE" \
-H "Authorization: Bearer YOUR_API_KEY"
Respuesta de ejemplo oficial:
{
"status": "OK",
"request_id": "81fc95df-86f3-44b7-a3dc-1d81abcd7a97",
"parameters": {
"page": 2,
"home_status": "FOR_SALE",
"sort": "DEFAULT",
"listing_type": "BY_AGENT",
"location": "Los Angeles, CA"
},
"data": [
{
"zpid": "136702358",
"homeStatus": "FOR_SALE",
"detailUrl": "https://www.zillow.com/homedetails/24425-Woolsey-Canyon-Rd-SPC-39-Canoga-Park-CA-91304/136702358_zpid/",
"address": "24425 Woolsey Canyon Rd Spc 39, Canoga Park, CA 91304",
"streetAddress": "24425 Woolsey Canyon Rd Spc 39",
"city": "Canoga Park",
"state": "CA",
"country": "USA",
"zipcode": "91304",
"latitude": 34.235462,
"longitude": -118.661224,
"homeType": "MANUFACTURED",
"price": 99500,
"currency": "USD",
"zestimate": 178100,
"rentZestimate": 3439,
"taxAssessedValue": 21901,
"bathrooms": 2,
"bedrooms": 4,
"livingArea": 1818,
"daysOnZillow": 5,
"isFeatured": false,
"isPreforeclosureAuction": false,
"timeOnZillow": 498172000,
"isNonOwnerOccupied": true,
"isPremierBuilder": false,
"isZillowOwned": false,
"unit": "Spc 39",
"isShowcaseListing": false,
"listingSubType": {
"is_FSBA": true
},
"palsId": "3007_SR26162189",
"id": "136702358",
"rawHomeStatusCd": "ForSale",
"marketingStatusSimplifiedCd": "For Sale by Agent",
"imgSrc": "https://photos.zillowstatic.com/fp/1d8602169bd359c27caa6d6e25cdf662-p_e.jpg",
"hasImage": true,
"statusType": "FOR_SALE",
"statusText": "Casa en venta",
"countryCurrency": "$",
"unformattedPrice": 99500,
"addressStreet": "24425 Woolsey Canyon Rd Spc 39",
"addressCity": "Canoga Park",
"addressState": "CA",
"addressZipcode": "91304",
"isUndisclosedAddress": false,
"shouldShowRequestOnPrice": false,
"beds": 4,
"baths": 2,
"area": 1818,
"latLong": {
"latitude": 34.235462,
"longitude": -118.661224
},
"flexFieldText": "5 días en…
Lo que típicamente leerás de cada elemento en data:
- zpid: identificador único del listado que puedes almacenar en tu base de datos y usar como una clave idempotente.
- precio y moneda: precio de venta numérico y su moneda (p. ej., USD).
- dirección, ciudad, estado, código postal: información de visualización y geocodificación para tu interfaz de usuario.
- dormitorios, baños, área habitable: especificaciones básicas para filtros y etiquetas.
- latitud, longitud (y latLong): colocación en el mapa y cálculos de proximidad.
- zestimate y rentZestimate: valores de referencia para el contexto de precios.
- homeStatus (p. ej., FOR_SALE) y daysOnZillow: estado y antigüedad.
Paginación: usa el parámetro page para avanzar a través de las páginas de resultados. La respuesta refleja la página de entrada. Construye tu interfaz de paginación/trabajador para incrementar la página hasta tu condición de parada (como no más resultados) basada en la lógica de tu aplicación.
2) Buscar por Coordenadas (punto central + diámetro)
Método: GET
URL: https://zylalabs.com/api/7341/real-time-zillow-data-api/11668/search-by-coordinates
Parámetros:
- long (string, requerido): p. ej., -118.504744
- lat (string, requerido): p. ej., 34.01822
- diameter (string, opcional): p. ej., 2
curl oficial (copia/pega):
Respuesta de ejemplo (extracto proporcionado por el listado del hub):
Usa esto cuando los usuarios mueven un mapa alrededor de un punto central o cuando geocercas alrededor de una tienda, escuela o estación de tránsito. La respuesta incluye los mismos campos básicos que el punto final de búsqueda.
3) Buscar por Polígono (geocerca arbitraria)
Método: GET
URL: https://zylalabs.com/api/7341/real-time-zillow-data-api/11669/search-by-polygon
Parámetros:
- polygon (string, requerido): pares de coordenadas lat long separados por espacios (en ese orden), separados por comas. Ejemplo proporcionado a continuación.
curl oficial (copia/pega):
Respuesta de ejemplo (extracto proporcionado por el listado del hub):
Usa esto para búsquedas con forma de vecindario, zonas de asistencia escolar, llanuras de inundación u otros límites no estándar. El parámetro polígono es una sola cadena; asegúrate de codificarlo en URL como en el ejemplo de curl.
Autenticación y encabezados
- Encabezado: Authorization: Bearer YOUR_API_KEY
- No se requieren otros encabezados en la documentación del hub.
- Todos los ejemplos a continuación apuntan a las URL del hub en zylalabs.com exactamente como se muestra.
Ejemplo mínimo en Python: buscar listados “FOR_SALE” en Los Ángeles (página 2)
Este ejemplo llama al punto final de búsqueda y extrae los campos básicos que necesita una tarjeta de listado típica. Refleja los parámetros del curl oficial.
import os
import requests
API_KEY = os.getenv("ZYLA_API_KEY", "YOUR_API_KEY")
url = "https://zylalabs.com/api/7341/real-time-zillow-data-api/11667/search"
params = {
"location": "Los Angeles, CA",
"page": "2",
"home_status": "FOR_SALE"
}
headers = {
"Authorization": f"Bearer {API_KEY}"
}
resp = requests.get(url, params=params, headers=headers, timeout=30)
resp.raise_for_status()
payload = resp.json()
print("Estado:", payload.get("status"))
print("ID de solicitud:", payload.get("request_id"))
for item in payload.get("data", []):
listing = {
"zpid": item.get("zpid"),
"status": item.get("homeStatus") or item.get("statusType"),
"price": item.get("price"),
"currency": item.get("currency"),
"address": item.get("address"),
"city": item.get("city") or item.get("addressCity"),
"state": item.get("state") or item.get("addressState"),
"zipcode": item.get("zipcode") or item.get("addressZipcode"),
"bedrooms": item.get("bedrooms") or item.get("beds"),
"bathrooms": item.get("bathrooms") or item.get("baths"),
"livingArea": item.get("livingArea") or item.get("area"),
"latitude": item.get("latitude") or (item.get("latLong") or {}).get("latitude"),
"longitude": item.get("longitude") or (item.get("latLong") or {}).get("longitude"),
"zestimate": item.get("zestimate"),
"rentZestimate": item.get("rentZestimate"),
"detailUrl": item.get("detailUrl"),
"imgSrc": item.get("imgSrc"),
"daysOnZillow": item.get("daysOnZillow")
}
print(listing)
Notas:
- La respuesta incluye tanto campos normalizados (p. ej., dormitorios, baños) como a veces nombres alternativos (camas, baños, área). La muestra anterior verifica ambos.
- Lat/long puede aparecer tanto en el nivel superior como dentro de latLong. El fragmento retrocede si es necesario.
- Usa request_id para registro y correlación a través de reintentos.
Detalles de implementación práctica
- Paginación: el parámetro page es una cadena en la interfaz del hub. Incrementa como cadenas (“1”, “2”, “3”, …). Detente cuando tu aplicación decida que no hay más resultados relevantes.
- Filtrado por estado: home_status acepta valores como FOR_SALE (como se muestra). Mantén tus filtros de interfaz de usuario alineados con los valores permitidos que pasas.
- Consultas de ubicación: location acepta entradas legibles por humanos como “Los Ángeles, CA”. Para consultas de código postal o vecindario, pasa esos nombres directamente en location.
- Coordenadas vs polígono: prefiere coordenadas + diámetro para búsquedas circulares simples (p. ej., “dentro de 2 unidades de este punto”). Usa polígonos para formas precisas alrededor de vecindarios, zonas escolares o límites personalizados.
- Almacenamiento en caché y sondeo: si actualizas periódicamente, almacena zpid y marcas de tiempo actualizadas en tu base de datos para evitar duplicados. La respuesta incluye campos de estado y zestimate útiles para la detección de cambios.
- Unidades y moneda: los precios aparecen en la moneda “USD” en las muestras. Las unidades de área de lote pueden ser “sqft” en algunas respuestas. Muestra los valores tal como están en la respuesta para mayor claridad.
Casos de uso del mundo real que puedes implementar esta semana
- Página de búsqueda de ciudad: Usa el punto final de búsqueda con location para renderizar tarjetas. Agrega paginación con page=2,3,…
- Búsqueda “Cerca de mí”: Usa Buscar por Coordenadas centrado en la ubicación del dispositivo del usuario. Ajusta el diámetro para que coincida con tu experiencia de usuario (p. ej., un control deslizante).
- Alertas de polígono: Almacena polígonos definidos por el usuario para “áreas de vigilancia”. Ejecuta Buscar por Polígono en un horario y envía un correo electrónico o notificación cuando aparezca un nuevo listado FOR_SALE (compara por zpid).
- Herramienta de dibujo de mapas: Permite a los usuarios dibujar una forma en un mapa y convertirla en una cadena de parámetros de polígono (pares de lon lat). Llama a Buscar por Polígono y muestra los resultados como pines.
- Enrutamiento de leads: Ingiere resultados y enruta a agentes según la ciudad del listado o la membresía del polígono.
Llamando a esta API desde agentes de IA a través de MCP
Cada API en Zyla puede ser invocada desde un cliente compatible con MCP (Claude Code, Cursor, Windsurf y otros) a través del punto final MCP. Proporciona tu clave a través de la cadena de consulta de la URL de MCP y emite llamadas de herramientas que se mapean a los mismos puntos finales y parámetros del hub que ves arriba. Consulta MCP para más detalles. Un flujo típico:
- Configura tu cliente MCP con el punto final MCP y tu clave.
- Instruye al agente para que llame a los puntos finales de búsqueda o geoespaciales utilizando las URL y parámetros exactos del hub que se muestran en este artículo.
- Analiza los mismos campos JSON (zpid, precio, dirección, zestimate, latitud/longitud) para tareas posteriores como redactar resúmenes de propiedades o actualizar tu CRM.
Ejemplos de extremo a extremo para cada estilo de búsqueda
Búsqueda por ciudad/código postal
Usa cuando tengas una ciudad o código postal ingresado por el usuario.
Analiza data[].zpid, data[].price, data[].address, data[].bedrooms, data[].bathrooms, data[].livingArea para tarjetas de interfaz de usuario.
Radio de geocerca (centro del mapa)
Usa después de que el usuario mueva/acerque un mapa, o para cubrir un radio centrado en un punto de interés.
Muestra pines utilizando latitud/longitud y muestra detailUrl cuando se hace clic en un pin.
Límite de polígono
Usa para zonas escolares, límites de HOA o cualquier flujo de trabajo personalizado de dibujo en el mapa. Codifica pares de “lon lat”, separados por comas, y escapa la cadena en URL.
Preocupaciones operativas
- Manejo de errores: registra el estado y request_id para depuración. Implementa retrocesos y reintentos según los estándares de tu aplicación cuando ocurran errores de transporte.
- Cuotas: tu suscripción rige las cuotas mensuales. Monitorea el uso en tu panel de Zyla. No hay pago por llamada aquí; es suscripción + cuota.
- Frescura de datos: diseña tu cadencia de sincronización basada en las expectativas de tus usuarios. Si necesitas actualizaciones casi en tiempo real, sondea porciones geográficas más pequeñas con más frecuencia.
- Normalización: persiste un esquema derivado en tu base de datos con los campos que necesita tu interfaz de usuario, indexados por zpid, y mantén una columna JSON de origen para auditoría.
¿A dónde ir a continuación?
- Navega y suscríbete en Zyla: Zyla API Hub.
- Integra la API de datos de Zillow en tiempo real ahora: Comienza prueba de 7 días en la API de datos de Zillow en tiempo real.
FAQ
Q1: ¿Qué encabezado necesito para autenticarme?
A1: Usa Authorization: Bearer YOUR_API_KEY. Obtén tu clave de la página de la API en Zyla después de suscribirte.
Q2: ¿Puedo filtrar solo listados activos?
A2: Sí. Pasa home_status=FOR_SALE donde sea compatible (p. ej., el punto final de búsqueda). La respuesta refleja tus parámetros para que puedas verificar los filtros aplicados.
Q3: ¿Cómo manejo la paginación?
A3: Usa el parámetro page como una cadena e incrementa para las páginas subsiguientes. Los parámetros de la respuesta.page reflejan la página actual.
Q4: ¿Cuál es la diferencia entre búsquedas por coordenadas y por polígono?
A4: Coordenadas + diámetro crea una búsqueda circular alrededor de un solo punto. Las búsquedas por polígono aceptan un límite arbitrario (pares de lon lat) para geocercas precisas.
Q5: ¿Hay un plan gratuito?
A5: No hay un plan gratuito. Puedes comenzar una prueba desde el listado de la API. Consulta la página de la API para las opciones de acceso y precios actuales.
¿Listo para implementar? Abre el listado del mercado y comienza tu prueba para obtener una clave API: API de datos de Zillow en tiempo real. Con una cuenta en Zyla API Hub, puedes llamar a esta y miles de otras APIs de bienes raíces y vivienda bajo una sola clave.