Saltar al contenido principal
placeanalyzerAPI ReferenceGuías

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}&region=${region}&transaction=Venta`, {
        headers: { 'X-API-KEY': apiKey }
      }),
      fetch(`{REPORT_API_URL}/near-properties?lat=${lat}&lng=${lng}&region=${region}&transaction=Alquiler`, {
        headers: { 'X-API-KEY': apiKey }
      }),
      fetch(`{REPORT_API_URL}/commerce-graphic?lat=${lat}&lng=${lng}&region=${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}&region=${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:

¿Necesitas ayuda con algún endpoint específico? Consulta la referencia completa de API.