Generar Reportes de Mercado
Los reportes complementan tus avalúos con
datos contextuales sobre la zona. Imagina poder mostrar a tus clientes no solo el valor de la propiedad, sino también el análisis demográfico, comercial y regulatorio de la zona.La Anatomía de un Reporte
Un reporte se compone de secciones independientes. Cada sección tiene su propio endpoint y proporciona datos específicos:
1. Análisis Comercial
Descubre qué comercios y servicios hay cerca de la propiedad.
Para obtener análisis comercial para gráficos, consulta la documentación en la Referencia de API: Datos estadísticos y gráficos.
Ejemplo de uso:
curl -X GET "https://api.placeanalyzer.com/report/commerce-graphic?lat=-34.6037&lng=-58.3816" \
-H "X-API-KEY: tu_api_key_aqui"Respuesta:
[ { "name": "Restaurantes", "probability": 1 }, { "name": "Tiendas", "probability": 0.8 }, ... { "name": "Educación", "probability": 0.1 } ]
Gráfico de Torta con estos datos:
// Datos para gráfico de torta const commerceData = { labels: ['Restaurantes', 'Tiendas', 'Servicios', 'Salud', 'Educación'], datasets: [{ data: [1, 0.8, 0.4, 0.2, 0.1], backgroundColor: ['#FF6384', '#36A2EB', '#FFCE56', '#4BC0C0', '#9966FF'] }] };
Ejemplo Completo: Reporte Integral
Aquí tienes un ejemplo que combina múltiples endpoints para crear un reporte completo:
async function generateCompleteReport(lat, lng, region, apiKey) { console.log('📊 Generando reporte completo...'); try { // Ejecutar todas las consultas en paralelo const [nearbySales, nearbyRentals, commerce] = await Promise.all([ fetch(`{REPORT_API_URL}/near-properties?lat=${lat}&lng=${lng}®ion=${region}&transaction=Venta`, { headers: { 'X-API-KEY': apiKey } }), fetch(`{REPORT_API_URL}/near-properties?lat=${lat}&lng=${lng}®ion=${region}&transaction=Alquiler`, { headers: { 'X-API-KEY': apiKey } }), fetch(`{REPORT_API_URL}/commerce-graphic?lat=${lat}&lng=${lng}®ion=${region}`, { headers: { 'X-API-KEY': apiKey } }) ]); const [nearbySalesData, nearbyRentalsData, commerceData] = await Promise.all([ nearbySales.json(), nearbyRentals.json(), commerce.json() ]); // Combinar todos los datos const report = { sections: { nearbySales: nearbySalesData, nearbyRentals: nearbyRentalsData, commerce: commerceData } }; console.log('✅ Reporte generado exitosamente'); return report; } catch (error) { console.error('❌ Error generando reporte:', error); throw error; } } // Uso del ejemplo generateCompleteReport(-25.2821, -57.6353, 'py', 'tu_api_key_aqui') .then(report => { console.log('Datos propiedades en venta:', report.sections.nearbySales); console.log('Datos propiedades en alquiler:', report.sections.nearbyRentalsData); console.log('Datos de comercios:', report.sections.commerce); });
Mejores Prácticas para Reportes
1. Cache Inteligente
// Cachear reportes por 24 horas const CACHE_TTL = 24 * 60 * 60 * 1000; // 24 horas en ms class ReportCache { constructor() { this.cache = new Map(); } async getReport(lat, lng, region) { const key = `${lat},${lng}`; const cached = this.cache.get(key); if (cached && Date.now() - cached.timestamp < CACHE_TTL) { return cached.data; } const report = await generateCompleteReport(lat, lng, region, API_KEY); this.cache.set(key, { data: report, timestamp: Date.now() }); return report; } }
2. Manejo de Errores por Sección
async function generateReportWithFallbacks(lat, lng, region, apiKey) { const sections = {}; // Intentar obtener cada sección independientemente try { const commerceResponse = await fetch(`.../commerce-graphic?lat=${lat}&lng=${lng}®ion=${region}`, { headers: { 'X-API-KEY': apiKey } }); sections.commerce = await commerceResponse.json(); } catch (error) { sections.commerce = { error: 'No disponible' }; } // Repetir para otras secciones... return sections; }
Conclusión
Los reportes transforman una simple tasación en un análisis integral que incluye:
- 👥 Contexto demográfico de la zona
- 🏪 Análisis comercial completo
- 🏠 Comparación con propiedades cercanas
Próximos pasos:
- 📊 Datos estadísticos para análisis demográfico
- 📍 Propiedades cercanas para análisis comparativo
- ⚡ Optimizar consultas con cache y reintentos
¿Necesitas ayuda con algún endpoint específico? Consulta la referencia completa de API.