Necesitas implementar una búsqueda de propiedades que liste casas residenciales esta semana. Al final de esta guía, consultarás listados reales dentro de los límites del mapa, sugerirás ubicaciones a medida que los usuarios escriban y obtendrás detalles completos de las propiedades utilizando una sola clave API de Zyla API Hub.
Lo que esta API te ofrece
La API de Bienes Raíces de Canadá expone puntos finales para:
- Devolver sugerencias de ubicación basadas en palabras clave para una entrada más rápida del usuario (Autocompletar).
- Listar propiedades residenciales en venta o alquiler dentro de un cuadro delimitador geográfico (Listar Residenciales).
- Obtener información detallada de una propiedad específica (Detalle de Propiedad).
Los desarrolladores lo utilizan para interfaces de búsqueda basadas en mapas, formularios de captura de leads, portales de agentes/corredores y herramientas internas que necesitan un inventario residencial actualizado en Canadá.
Si eres nuevo en el mercado, Zyla API Hub centraliza más de 10,000 APIs públicas con una cuenta, una clave API y un modelo de suscripción + cuota. Puedes navegar por categorías y documentación en Zyla API Hub y suscribirte a APIs individuales según sea necesario.
Comenzando en Zyla API Hub
Abre la página de la API de Bienes Raíces de Canadá, haz clic en Suscribirse o Comenzar Prueba Gratuita (cuando esté disponible) y recupera tu clave API. La primera API en tu cuenta generalmente ofrece una prueba de 7 días o 50 solicitudes. Para opciones de acceso y precios actuales, siempre verifica el listado.
Comienza aquí: Comienza prueba de 7 días en la API de Bienes Raíces de Canadá
Todas las solicitudes utilizan el encabezado Authorization: Bearer YOUR_API_KEY contra las URL del hub de Zyla. La facturación es por suscripción + cuota, no por llamada. No hay Plan Gratuito.
Puntos finales que utilizarás
1) Autocompletar
Utiliza esto para sugerir ubicaciones a medida que el usuario escribe. Esto mejora la conversión y reduce los resultados de búsqueda nulos.
- Método: GET
- URL: https://zylalabs.com/api/5902/canada-real-estate-api/7768/auto-complete
- Descripción: Envía una solicitud GET con un término de búsqueda para obtener sugerencias de ubicación basadas en palabras clave, optimizando la experiencia de búsqueda de propiedades.
- Parámetros (según lo proporcionado):
- Consulta (cadena, requerida): Quebec
- CultureId (cadena, opcional): 1
- IncluirUbicaciones (cadena, opcional): true
curl oficial:
curl -s -X GET "https://zylalabs.com/api/5902/canada-real-estate-api/7768/auto-complete?Query=Quebec&CultureId=1&IncludeLocations=true" \
-H "Authorization: Bearer YOUR_API_KEY"
Respuesta JSON oficial:
{"ErrorCode":{"Id":200,"Description":"Success - OK","ProductName":"Realtor API 7 | 20241202.1 | 1018e702fe06dda8279318e12b199910ca21c3ff | Monday, December 2, 2024 12:21:41 PM","Version":"1.0.9102.31292"},"Results":[{"Type":1,"ListingId":"27656697","ReferenceNumber":"X10440405","Address_EN":"191 QUEBEC STREET","Address_FR":"191 QUEBEC STREET","City":"Bracebridge (Macaulay)","PostalCode":"p1l1e3","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27656697\/191-quebec-street-bracebridge-macaulay-macaulay","RelativeURLFr":"\/immobilier\/27656697\/191-quebec-street-bracebridge-macaulay","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27661192","ReferenceNumber":"X10428998","Address_EN":"549 QUEBEC STREET","Address_FR":"549 QUEBEC STREET","City":"London","PostalCode":"n5w3y9","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27661192\/549-quebec-street-london-east-g","RelativeURLFr":"\/immobilier\/27661192\/549-quebec-street-london","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27720876","ReferenceNumber":"R2949266","Address_EN":"212 4928 QUEBEC STREET","Address_FR":"212 4928 QUEBEC STREET","City":"Vancouver","PostalCode":"v5w2n2","Province":"BC","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27720876\/212-4928-quebec-street-vancouver","RelativeURLFr":"\/immobilier\/27720876\/212-4928-quebec-street-vancouver","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27741486","ReferenceNumber":"X11894528","Address_EN":"558 QUEBEC STREET","Address_FR":"558 QUEBEC STREET","City":"Hamilton (Parkview)","PostalCode":"l8h6v4","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27741486\/558-quebec-street-hamilton-parkview-parkview","RelativeURLFr":"\/immobilier\/27741486\/558-quebec-street-hamilton-parkview","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27754883","ReferenceNumber":"S11901084","Address_EN":"267 QUEBEC STREET","Address_FR":"267 QUEBEC STREET","City":"Clearview (Stayner)","PostalCode":"l0m1s0","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27754883\/267-quebec-street-clearview-stayner-stayner","RelativeURLFr":"\/immobilier\/27754883\/267-quebec-street-clearview-stayner","isReferenceMatch":false,"isPostalCodeMatch":false}],"ResultsMapBox":[{…
Lo que realmente utilizarás de esta carga:
- ErrorCode.Id y ErrorCode.Description para verificar el éxito (200 y “Éxito - OK”).
- Results[n].Address_EN, City, PostalCode, Province para renderizar elementos de autocompletar.
- Results[n].ListingId y ReferenceNumber si deseas saltar directamente a una vista de detalles después de la selección.
2) Listar Residenciales
Esta es la llamada central “listar residenciales”. Proporcionas un cuadro delimitador geográfico (lat/long min/max) y recibes listados residenciales disponibles en esa área. Puedes impulsarlo desde el área de visualización de tu mapa o una búsqueda guardada.
- Método: GET
- URL: https://zylalabs.com/api/5902/canada-real-estate-api/7769/list-residential
- Descripción: Envía una solicitud GET con parámetros como ubicación, rango de precios y tipo de propiedad para listar propiedades residenciales disponibles en venta o alquiler.
- Parámetros (según lo proporcionado):
- LatitudeMax (número, requerido): 81.14747595814636
- LatitudeMin (número, requerido): -22.26872153207164
- LongitudeMax (número, requerido): -10.267941690981388
- LongitudeMin (número, requerido): -136.83037765324116
curl copiable:
Notas que ahorran tiempo:
- Las coordenadas son grados decimales estándar (WGS84). Utiliza el noreste de tu área de visualización del mapa como máximo y el suroeste como mínimo.
- La respuesta incluye un objeto de Paginación (por ejemplo, RecordsPerPage, CurrentPage, TotalRecords, TotalPages). Utilízalo para paginar tu interfaz y evitar obtener más de lo necesario.
- La API puede devolver conteos de pines en el mapa (por ejemplo, Pins) y límites por página (por ejemplo, MaxRecords). Respeta esos límites en tu agrupamiento y almacenamiento en caché.
3) Detalle de Propiedad
Después de que el usuario haga clic en una tarjeta de listado, utiliza este punto final para obtener detalles completos como descripción y características de la propiedad para la propiedad dada.
- Método: GET
- URL: https://zylalabs.com/api/5902/canada-real-estate-api/7770/property-detail
- Descripción: Envía una solicitud GET con un ID de propiedad específico para obtener información detallada como imágenes, descripción y características completas de la propiedad.
- Parámetros (según lo proporcionado):
- ReferenceNumber (cadena, requerido): 67b74ee58bc56b22659786b3
- PropertyID (cadena, requerido): 27935110
Ejemplo de curl:
Flujo de extremo a extremo que puedes implementar
- A medida que el usuario escribe una ciudad o calle, llama a Autocompletar para sugerir ubicaciones y direcciones conocidas.
- Traduce la ubicación elegida en un cuadro delimitador (por ejemplo, el área de visualización actual de tu mapa) y llama a Listar Residenciales para obtener inventario.
- Cuando el usuario haga clic en una tarjeta, llama a Detalle de Propiedad para renderizar una página completa o un panel lateral derecho con observaciones y atributos completos.
Ejemplo en Python: obtener listados residenciales dentro de un área de visualización del mapa
El fragmento a continuación llama al punto final Listar Residenciales, verifica el éxito e imprime algunos campos de los resultados. Utiliza solo los parámetros mostrados anteriormente.
import os
import requests
API_KEY = os.getenv("ZYLALABS_API_KEY", "YOUR_API_KEY")
url = "https://zylalabs.com/api/5902/canada-real-estate-api/7769/list-residential"
params = {
"LatitudeMax": "81.14747595814636",
"LatitudeMin": "-22.26872153207164",
"LongitudeMax": "-10.267941690981388",
"LongitudeMin": "-136.83037765324116",
}
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(url, headers=headers, params=params, timeout=30)
resp.raise_for_status()
data = resp.json()
# Verificación básica de éxito
err = data.get("ErrorCode", {})
if err.get("Id") != 200:
raise SystemExit(f"Error de API: {err}")
# Leer información de paginación si está presente
paging = data.get("Paging", {})
print("RecordsPerPage:", paging.get("RecordsPerPage"))
print("CurrentPage:", paging.get("CurrentPage"))
print("TotalRecords:", paging.get("TotalRecords"))
print("TotalPages:", paging.get("TotalPages"))
# Imprimir algunos listados
for item in (data.get("Results") or [])[:5]:
listing_id = item.get("Id")
mls = item.get("MlsNumber")
remarks = item.get("PublicRemarks")
print("-----")
print("Id:", listing_id)
print("MLS:", mls)
if remarks:
print("Observaciones:", (remarks[:180] + "...") if len(remarks) > 180 else remarks)
Consejos de implementación:
- Almacena en caché por cuadro delimitador redondeado a 3–4 decimales para reducir llamadas duplicadas a medida que los usuarios se desplazan/acercan.
- Si Paging.TotalPages está presente, construye un botón de “Cargar más” perezoso en lugar de prefetching todo.
- Protege los campos faltantes porque los listados pueden variar según la fuente.
Casos de uso prácticos
- Búsqueda en mapa: vincula el cuadro delimitador a tu área de visualización del mapa y vuelve a consultar en bounds_changed con debounce.
- Formulario de leads: utiliza Autocompletar para normalizar entradas de vecindario o calle antes de guardar un lead.
- Búsquedas guardadas: persiste los últimos límites del usuario y recrea la consulta con Listar Residenciales cuando regresen.
- Páginas de detalle: extrae observaciones y características de largo formato con Detalle de Propiedad solo bajo demanda para mantener la lista rápida.
Llamando desde un agente de IA a través de MCP
Si automatizas flujos de trabajo con clientes compatibles con MCP (por ejemplo, Claude Code, Cursor, Windsurf), puedes hacer las mismas llamadas HTTPS a través del punto final MCP de Zyla. Pasa tu clave como un parámetro de consulta en:
https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY
Aprende más aquí: MCP
Tu agente puede llamar a las URL del hub documentadas anteriormente con el encabezado Authorization: Bearer YOUR_API_KEY. Esto mantiene la pila de herramientas de tu agente consistente con tu código de servidor. Para contexto de mercado y APIs adicionales que podrías encadenar, navega por Zyla API Hub.
Notas operativas
- Auth: siempre Authorization: Bearer YOUR_API_KEY.
- HTTP: GET para los tres puntos finales mostrados.
- Paginación: cuando Paging está presente, prefiere recuperaciones incrementales. No asumas páginas ilimitadas—respeta MaxRecords.
- Coordenadas: utiliza grados decimales; asegúrate de que LatitudeMin ≤ LatitudeMax y LongitudeMin ≤ LongitudeMax desde tu área de visualización.
- Errores: verifica ErrorCode.Id y ErrorCode.Description antes de procesar Results.
- Pruebas y cuotas: la primera API generalmente ofrece una prueba de 7 días o 50 solicitudes. Siempre confirma los límites actuales en la página de listado.
Por qué esta configuración se implementa rápido
- No hay servidores de autenticación personalizados: una clave API en todas las APIs de Zyla.
- Separación clara: autocompletar para entradas, listar para resultados de búsqueda, detalle para páginas profundas.
- Soporte MCP: los mismos puntos finales pueden alimentar agentes basados en herramientas que te ayudan a probar o unir flujos de trabajo.
Referencia: resúmenes de puntos finales
Autocompletar
GET https://zylalabs.com/api/5902/canada-real-estate-api/7768/auto-complete
Propósito: sugerencias de ubicación basadas en palabras clave durante la búsqueda.
Listar Residenciales
GET https://zylalabs.com/api/5902/canada-real-estate-api/7769/list-residential
Propósito: obtener inventario residencial dentro de un cuadro delimitador.
Detalle de Propiedad
GET https://zylalabs.com/api/5902/canada-real-estate-api/7770/property-detail
Propósito: información detallada para una sola propiedad por ID + referencia.
FAQ
¿Cómo autentico las solicitudes?
Envía Authorization: Bearer YOUR_API_KEY en cada solicitud a las URL del hub.
¿Cuál es la forma más rápida de construir una búsqueda en mapa?
Utiliza Autocompletar para normalizar la entrada, luego alimenta el área de visualización de tu mapa a Listar Residenciales a través de LatitudeMin/Max y LongitudeMin/Max. Debounce las llamadas en pan/zoom y pagina utilizando los campos de Paginación.
¿Cómo obtengo detalles a nivel de propiedad?
Llama a Detalle de Propiedad con el PropertyID y ReferenceNumber proporcionados por tus resultados de listado para cargar observaciones y características completas.
¿Hay un plan gratuito?
No hay Plan Gratuito. La primera API en tu cuenta generalmente incluye una prueba de 7 días o 50 solicitudes. Verifica la página de la API para opciones de acceso y precios actuales.
¿Puedo llamar a estos puntos finales desde un agente de IA?
Sí. Utiliza el punto final MCP en https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY y las mismas URL del hub mostradas anteriormente.
¿Listo para implementar “API para listar residenciales” en tu aplicación? Suscríbete y obtén tu clave en la página de listado: Comienza prueba de 7 días en la API de Bienes Raíces de Canadá. Puedes extender la misma clave a otras categorías en Zyla API Hub a medida que tu proyecto crece.
Respuesta oficial de la API
{"ErrorCode":{"Id":200,"Description":"Éxito - OK","ProductName":"Realtor API 7 | 20241202.1 | 1018e702fe06dda8279318e12b199910ca21c3ff | Lunes, 2 de diciembre de 2024 12:21:41 PM","Version":"1.0.9102.31292"},"Results":[{"Type":1,"ListingId":"27656697","ReferenceNumber":"X10440405","Address_EN":"191 QUEBEC STREET","Address_FR":"191 QUEBEC STREET","City":"Bracebridge (Macaulay)","PostalCode":"p1l1e3","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27656697\/191-quebec-street-bracebridge-macaulay-macaulay","RelativeURLFr":"\/immobilier\/27656697\/191-quebec-street-bracebridge-macaulay","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27661192","ReferenceNumber":"X10428998","Address_EN":"549 QUEBEC STREET","Address_FR":"549 QUEBEC STREET","City":"London","PostalCode":"n5w3y9","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27661192\/549-quebec-street-london-east-g","RelativeURLFr":"\/immobilier\/27661192\/549-quebec-street-london","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27720876","ReferenceNumber":"R2949266","Address_EN":"212 4928 QUEBEC STREET","Address_FR":"212 4928 QUEBEC STREET","City":"Vancouver","PostalCode":"v5w2n2","Province":"BC","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27720876\/212-4928-quebec-street-vancouver","RelativeURLFr":"\/immobilier\/27720876\/212-4928-quebec-street-vancouver","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27741486","ReferenceNumber":"X11894528","Address_EN":"558 QUEBEC STREET","Address_FR":"558 QUEBEC STREET","City":"Hamilton (Parkview)","PostalCode":"l8h6v4","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27741486\/558-quebec-street-hamilton-parkview-parkview","RelativeURLFr":"\/immobilier\/27741486\/558-quebec-street-hamilton-parkview","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27754883","ReferenceNumber":"S11901084","Address_EN":"267 QUEBEC STREET","Address_FR":"267 QUEBEC STREET","City":"Clearview (Stayner)","PostalCode":"l0m1s0","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27754883\/267-quebec-street-clearview-stayner-stayner","RelativeURLFr":"\/immobilier\/27754883\/267-quebec-street-clearview-stayner","isReferenceMatch":false,"isPostalCodeMatch":false}],"ResultsMapBox":[{…
Respuesta oficial de la API
{"ErrorCode":{"Id":200,"Description":"Éxito - OK","ProductName":"Realtor API 7 | 20241202.1 | 1018e702fe06dda8279318e12b199910ca21c3ff | Lunes, 2 de diciembre de 2024 12:21:41 PM","Version":"1.0.9102.31292"},"Results":[{"Type":1,"ListingId":"27656697","ReferenceNumber":"X10440405","Address_EN":"191 QUEBEC STREET","Address_FR":"191 QUEBEC STREET","City":"Bracebridge (Macaulay)","PostalCode":"p1l1e3","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27656697\/191-quebec-street-bracebridge-macaulay-macaulay","RelativeURLFr":"\/immobilier\/27656697\/191-quebec-street-bracebridge-macaulay","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27661192","ReferenceNumber":"X10428998","Address_EN":"549 QUEBEC STREET","Address_FR":"549 QUEBEC STREET","City":"London","PostalCode":"n5w3y9","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27661192\/549-quebec-street-london-east-g","RelativeURLFr":"\/immobilier\/27661192\/549-quebec-street-london","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27720876","ReferenceNumber":"R2949266","Address_EN":"212 4928 QUEBEC STREET","Address_FR":"212 4928 QUEBEC STREET","City":"Vancouver","PostalCode":"v5w2n2","Province":"BC","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27720876\/212-4928-quebec-street-vancouver","RelativeURLFr":"\/immobilier\/27720876\/212-4928-quebec-street-vancouver","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27741486","ReferenceNumber":"X11894528","Address_EN":"558 QUEBEC STREET","Address_FR":"558 QUEBEC STREET","City":"Hamilton (Parkview)","PostalCode":"l8h6v4","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27741486\/558-quebec-street-hamilton-parkview-parkview","RelativeURLFr":"\/immobilier\/27741486\/558-quebec-street-hamilton-parkview","isReferenceMatch":false,"isPostalCodeMatch":false},{"Type":1,"ListingId":"27754883","ReferenceNumber":"S11901084","Address_EN":"267 QUEBEC STREET","Address_FR":"267 QUEBEC STREET","City":"Clearview (Stayner)","PostalCode":"l0m1s0","Province":"ON","Details_Small_EN":null,"Details_Small_FR":null,"RelativeURLEn":"\/real-estate\/27754883\/267-quebec-street-clearview-stayner-stayner","RelativeURLFr":"\/immobilier\/27754883\/267-quebec-street-clearview-stayner","isReferenceMatch":false,"isPostalCodeMatch":false}],"ResultsMapBox":[{…