Analítica

Obtén datos de analítica de perfiles de Google, Bing y Facebook con el SDK listingsapi-js.

Los métodos de analítica obtienen estadísticas de cada plataforma, como impresiones en búsquedas, clics, solicitudes de indicaciones y llamadas telefónicas, de Google Business Profile, Bing Places y Facebook Pages. Todos los métodos de analítica están disponibles directamente en la instancia del cliente ListingsAPI y su alcance se limita a un ID de ubicación. Los ID numéricos de ubicación se codifican automáticamente, por lo que 16808 y 'TG9jYXRpb246MTY4MDg=' son intercambiables.

Los tres métodos comparten la misma firma: un ID de ubicación y un intervalo { fromDate, toDate } opcional. Ambas fechas son opcionales, tanto por separado como en conjunto; omítelas para usar el periodo de informes predeterminado de la plataforma.

Cada métrica es una serie temporal

Estos cuerpos de respuesta no contienen totales escalares. Cada métrica es un array de puntos { startTime, value }, uno por día (por semana en Bing), y una métrica para la que no tienes datos es null en lugar de 0 o []. Por tanto, suma tú los valores de la serie y distingue entre "sin datos" y "cero":

series.ts
type Point = { startTime: string; value: number | null }; // null when the metric is absent, so an empty profile never reads as 0.function sumSeries(series: Point[] | null | undefined): number | null {if (!Array.isArray(series)) return null;return series.reduce((acc, p) => acc + (p.value ?? 0), 0);} function show(label: string, series: Point[] | null | undefined) {const total = sumSeries(series);console.log(label, total === null ? 'unavailable' : total);}

fetchGoogleAnalytics

Obtén estadísticas de Google Business Profile para una ubicación.

TypeScript
const google = await client.fetchGoogleAnalytics(16808, {fromDate: '2024-01-01',toDate: '2024-12-31',}); show('Impressions (total)', google.total);show('Search impressions', google.search);show('Maps impressions', google.maps);show('Website clicks', google.websiteAction);

Opciones

ParámetroTipoDescripción
fromDatestringFecha de inicio, YYYY-MM-DD.
toDatestringFecha de fin, YYYY-MM-DD.

El cuerpo de la respuesta es el objeto googleInsights, y cada una de sus claves contiene una serie { startTime, value }[]: total, search, maps, websiteAction, directionsAction, phoneAction, businessBookings, businessFoodOrders y businessFoodMenuClicks. total representa las impresiones del perfil, search más maps; no incluye las métricas de acciones. Cualquier serie para la que Google no tenga datos se devuelve como null. Consulta Obtener analítica de Google para una ubicación para ver la referencia completa de los campos.

fetchBingAnalytics

Obtén estadísticas de Bing Places para una ubicación.

TypeScript
const bing = await client.fetchBingAnalytics(16808, {fromDate: '2024-01-01',toDate: '2024-12-31',}); show('Bing views', bing.views);

Bing proporciona una única métrica, views, agrupada por semana en lugar de por día.

Opciones

ParámetroTipoDescripción
fromDatestringFecha de inicio, YYYY-MM-DD.
toDatestringFecha de fin, YYYY-MM-DD.

fetchFacebookAnalytics

Obtén estadísticas de la página de Facebook para una ubicación.

TypeScript
const facebook = await client.fetchFacebookAnalytics(16808, {fromDate: '2024-01-01',toDate: '2024-12-31',}); show('Page views', facebook.views);show('CTA clicks', facebook.ctaAction);

El cuerpo de la respuesta de Facebook contiene views, ctaAction, websiteAction, directionsAction y phoneAction. No contiene pageLikes.

Opciones

ParámetroTipoDescripción
fromDatestringFecha de inicio, YYYY-MM-DD.
toDatestringFecha de fin, YYYY-MM-DD.

Informe de varias plataformas

Consulta las tres plataformas en paralelo con Promise.all:

analytics_report.ts
import { ListingsAPI } from 'listingsapi-js'; const client = new ListingsAPI(); // reads LISTINGSAPI_KEY from envconst LOCATION_ID = 16808;const range = { fromDate: '2024-01-01', toDate: '2024-12-31' }; const [google, bing, facebook] = await Promise.all([client.fetchGoogleAnalytics(LOCATION_ID, range),client.fetchBingAnalytics(LOCATION_ID, range),client.fetchFacebookAnalytics(LOCATION_ID, range),]); show('Google impressions:', google.total);show('Bing views:', bing.views);show('Facebook views:', facebook.views);

Si un perfil no está conectado a una plataforma determinada, la promesa del método se resuelve con un objeto vacío en lugar de rechazarse, y cada serie individual se devuelve como null. Indícalo como "no disponible" en lugar de convertirlo a 0 mediante ??; de lo contrario, un perfil desconectado aparecerá como un cero real en tu panel. Los fallos de las solicitudes siguen lanzando los errores tipados del SDK.

  • Ubicaciones: consulta los ID de ubicación
  • Reseñas: analítica de reseñas (overview, timeline, sites-stats)
  • Casos de uso: ejemplo práctico de un informe de analítica