v1Recursos/Listados publicados/getObtener un resumen de listados
Obtener un resumen de listados
Estado de sincronización de publishers en las ubicaciones de este cliente (o de toda la agencia) — un resumen agregado más un desglose por ubicación, insights (% de salud, distribución de sincronización, publishers más débiles, elementos priorizados "requiere atención") y un titular determinista. Limita el alcance con tags. Usa el mismo rollup que la vista Listados → Todas las ubicaciones.
get
listings:read/api/v1/listings/summaryParámetros de consulta
clientIdstringopcional
Limitar a las ubicaciones de un cliente.
tagsstringopcional
Nombres de tags de ubicación separados por comas — solo se incluyen las ubicaciones con al menos uno de estos.
pageintegeropcional
Página de filas por ubicación (base 1). Por defecto 1.
perPageintegeropcional
Filas por página (máx. 200). Por defecto 50.
withVisibilitybooleanopcional
Indique true para añadir los resultados citation y maps de cada fila y los totales de visibility. Desactivado por defecto.
Respuesta
dataobjectopcional
summaryobjectopcional
Recuentos agregados de todas las ubicaciones en el alcance.
locationsnumberopcional
Número de ubicaciones en el alcance.
publishersTotalnumberopcional
Total de espacios de publisher en todas las ubicaciones del alcance.
publishersSyncednumberopcional
De ellos, actualmente sincronizados.
connectionIssuesnumberopcional
Filas de conectores nativos (Google/Facebook) con un problema de conexión.
duplicatesnumberopcional
Listados duplicados detectados en el alcance.
reviewsnumberopcional
Total de reseñas en el alcance.
avgRatingnumberopcional
Calificación promedio entre las ubicaciones que tienen una.
rowsarray of objectopcional
Una fila por ubicación en el alcance (paginada).
locationIdstringopcional
ID de la ubicación.
namestringopcional
Nombre de la ubicación.
citystringopcional
Ciudad de la ubicación.
publishersnumberopcional
Espacios de publisher para esta ubicación.
syncednumberopcional
De ellos, actualmente sincronizados.
connectionIssuesnumberopcional
Filas de conectores nativos con un problema de conexión.
duplicatesnumberopcional
Listados duplicados detectados para esta ubicación.
reviewsnumberopcional
Total de reseñas de esta ubicación.
unrepliednumberopcional
Reseñas pendientes de respuesta.
avgRatingnumberopcional
Calificación promedio de esta ubicación.
googleVerifiedbooleanopcional
El listado de Google está conectado y verificado.
googleConnectedbooleanopcional
Google está conectado (puede seguir pendiente de verificación).
tagsarray of stringopcional
Tags internos de esta ubicación.
healthobjectopcional
El estado de los listados de esta ubicación, contado sobre los mismos listados elegibles que su propia vista general de Listados.
eligibleintegerobligatorio
Listados de directorio a los que la ubicación puede optar: cada sitio activo disponible para su país, plan y conjunto de publishers.
liveintegerobligatorio
De ellos, los listados que están publicados.
inFlightintegerobligatorio
De ellos, los listados enviados que esperan un resultado (en curso o pendientes de aprobación).
needsActionintegerobligatorio
De ellos, los listados de directorio cuyo estado requiere que alguien actúe.
notLiveYetintegerobligatorio
Los listados elegibles restantes, aún no publicados. Null cuando los demás recuentos no caben en el total elegible.
consistentbooleanobligatorio
True cuando live, inFlight, needsAction y notLiveYet suman eligible.
phasestring (preparing | submitting | settled)obligatorio
En qué punto está la primera ronda de envíos a directorios de la ubicación: preparing, submitting o settled.
citationobjectopcional
Los listados de esta ubicación en la Búsqueda de Google: sus páginas de listado publicadas actuales, contadas por resultado. Solo con withVisibility=true.
statestring (none | unchecked | measured)obligatorio
none: ninguna página publicada elegible. unchecked: hay páginas, pero ninguna tiene resultado todavía. measured: al menos una página tiene resultado.
totalintegerobligatorio
Páginas de listado publicadas contadas.
indexedintegerobligatorio
De ellas, las páginas que aparecen en la Búsqueda de Google.
notIndexedintegerobligatorio
De ellas, las páginas con un resultado registrado de no indexada.
pendingintegerobligatorio
De ellas, las páginas a la espera de un resultado.
notCheckedintegerobligatorio
De ellas, las páginas sin un resultado utilizable todavía.
latestEvidenceAtstringobligatorio
Cuándo se registró el resultado de página más reciente, o null.
oldestEvidenceAtstringobligatorio
El más antiguo de los resultados más recientes de las páginas, o null. Junto con latestEvidenceAt, el intervalo en que se registraron los resultados.
mapsobjectopcional
Top 3 en Google Maps para la palabra clave predeterminada de esta ubicación, a partir de un escaneo guardado. Solo con withVisibility=true.
statestring (noKeywords | notMeasured | measured)obligatorio
noKeywords: no hay palabras clave rastreadas. notMeasured: hay palabras clave rastreadas, pero ninguna tiene un escaneo medido. measured: existe un escaneo medido.
keywordIdstringobligatorio
El id de la palabra clave rastreada.
keywordstringobligatorio
La palabra clave rastreada.
keywordCountintegerobligatorio
Número de palabras clave rastreadas para esta ubicación.
reportIdstringobligatorio
El id del informe guardado.
yearMonthstringobligatorio
El mes que cubre este punto, como "YYYY-MM".
measuredintegerobligatorio
Puntos contados con una respuesta medida (ranked u outside). El denominador de top3.
top3integerobligatorio
Puntos medidos en los que usted quedó entre los 3 primeros.
outsideintegerobligatorio
Puntos medidos en los que usted no estaba en el top 20 rastreado.
noDataintegerobligatorio
Puntos contados cuya comprobación falló. No es una posición.
withheldPointsintegerobligatorio
Puntos guardados de una configuración anterior de palabra clave o cuadrícula. Se muestran como withheld y no se cuentan.
missingPointsintegerobligatorio
Puntos de la cuadrícula sin ningún resultado guardado.
avgRanknumberobligatorio
Posición promedio en los puntos medidos, contando outside como 21. Null cuando no se midió nada.
bestRankintegerobligatorio
Mejor posición medida, de 1 a 20. Null cuando todos los puntos medidos son outside.
evidencestring (proven | unverified)obligatorio
proven: cada punto contado coincide con la palabra clave y la cuadrícula actuales. unverified: un escaneo heredado cuya palabra clave y cuadrícula no se pueden confirmar.
completedAtstringobligatorio
Cuándo se completó la recopilación de cuadrícula completa que respalda exactamente estos resultados. Null salvo que esté demostrado.
generatedAtstringobligatorio
La fecha registrada del informe, fijada cuando se finalizó por primera vez. No es una hora de recopilación, de última actualización ni una comprobación en directo.
newerUnmeasuredbooleanobligatorio
True cuando un escaneo más reciente de la palabra clave no midió nada contabilizable, por lo que se muestra uno anterior.
scanInProgressbooleanobligatorio
True mientras se ejecuta un escaneo de cuadrícula para esta ubicación. Afecta a toda la ubicación: no indica qué palabras clave cubre el escaneo.
healthobjectopcional
Estado de los listados en todas las ubicaciones del alcance, no solo en esta página. Los recuentos se suman; los porcentajes nunca se promedian.
locationsintegerobligatorio
Número de ubicaciones en el alcance.
eligibleintegerobligatorio
Listados de directorio a los que la ubicación puede optar: cada sitio activo disponible para su país, plan y conjunto de publishers.
liveintegerobligatorio
De ellos, los listados que están publicados.
inFlightintegerobligatorio
De ellos, los listados enviados que esperan un resultado (en curso o pendientes de aprobación).
needsActionintegerobligatorio
De ellos, los listados de directorio cuyo estado requiere que alguien actúe.
notLiveYetintegerobligatorio
Los listados elegibles restantes, aún no publicados. Null cuando los demás recuentos no caben en el total elegible.
locationsNeedingActionintegerobligatorio
Ubicaciones con al menos un listado de directorio que requiere acción.
connectionIssuesintegerobligatorio
Filas de conectores nativos (Google/Facebook) con un problema de conexión.
locationsWithConnectionIssuesintegerobligatorio
Ubicaciones con al menos un problema de conexión.
duplicatesintegerobligatorio
Listados duplicados detectados en el alcance.
locationsWithDuplicatesintegerobligatorio
Ubicaciones con al menos un listado duplicado detectado.
preparingintegerobligatorio
Ubicaciones nuevas cuyos primeros envíos se están preparando.
submittingintegerobligatorio
Ubicaciones nuevas cuyos primeros envíos se están enviando.
visibilityobjectopcional
Totales de visibilidad de todas las ubicaciones del alcance, no solo de esta página. Solo con withVisibility=true.
citationobjectobligatorio
Listados en la Búsqueda de Google, sumados en las ubicaciones con al menos una página de listado publicada.
totalintegerobligatorio
Páginas de listado publicadas contadas.
indexedintegerobligatorio
De ellas, las páginas que aparecen en la Búsqueda de Google.
notIndexedintegerobligatorio
De ellas, las páginas con un resultado registrado de no indexada.
pendingintegerobligatorio
De ellas, las páginas a la espera de un resultado.
notCheckedintegerobligatorio
De ellas, las páginas sin un resultado utilizable todavía.
locationsobjectobligatorio
Ubicaciones según el estado de citación.
oldestEvidenceAtstringobligatorio
El más antiguo de los resultados más recientes de las páginas, o null. Junto con latestEvidenceAt, el intervalo en que se registraron los resultados.
latestEvidenceAtstringobligatorio
Cuándo se registró el resultado de página más reciente, o null.
mapsobjectobligatorio
Top 3 en Google Maps, sumado a partir del escaneo propio de cada ubicación medida.
measuredintegerobligatorio
Puntos contados con una respuesta medida (ranked u outside). El denominador de top3.
top3integerobligatorio
Puntos medidos en los que usted quedó entre los 3 primeros.
locationsobjectobligatorio
Ubicaciones según el estado de Maps.
completedintegerobligatorio
Ubicaciones medidas cuya fecha de escaneo es una recopilación verificada de la cuadrícula completa y no una fecha de informe registrada.
scannedFromstringobligatorio
Inicio o fin del intervalo de fechas de recopilación verificadas (completedAt) en las ubicaciones medidas. Null si no hay ninguna.
scannedTostringobligatorio
Inicio o fin del intervalo de fechas de recopilación verificadas (completedAt) en las ubicaciones medidas. Null si no hay ninguna.
reportedFromstringobligatorio
Inicio o fin del intervalo de fechas de informe registradas (generatedAt) de las ubicaciones medidas sin una recopilación verificada. Null si no hay ninguna. Nunca se combina con el intervalo escaneado.
reportedTostringobligatorio
Inicio o fin del intervalo de fechas de informe registradas (generatedAt) de las ubicaciones medidas sin una recopilación verificada. Null si no hay ninguna. Nunca se combina con el intervalo escaneado.
insightsobjectopcional
Insights derivados calculados a partir de las filas anteriores.
healthnumberopcional
publishersSynced / publishersTotal, como porcentaje.
distributionobjectopcional
Ubicaciones agrupadas por tasa de sincronización (fullySynced 100 %, healthy 90-99 %, atRisk <90 %).
fullySyncednumberopcional
Ubicaciones al 100 % de sincronización.
healthynumberopcional
Ubicaciones al 90-99 % de sincronización.
atRisknumberopcional
Ubicaciones por debajo del 90 % de sincronización.
weakestarray of objectopcional
Publishers con menor cobertura en el alcance.
idstringopcional
ID del publisher.
namestringopcional
Nombre del publisher.
totalnumberopcional
Ubicaciones que tienen este publisher.
syncednumberopcional
De ellas, sincronizadas.
requiresActionnumberopcional
De ellas, que requieren acción.
notConnectednumberopcional
De ellas, no conectadas.
pctnumberopcional
Porcentaje sincronizado, redondeado.
directoriesarray of objectopcional
Tabla completa de cobertura por publisher.
idstringopcional
ID del publisher.
namestringopcional
Nombre del publisher.
totalnumberopcional
Ubicaciones que tienen este publisher.
syncednumberopcional
De ellas, sincronizadas.
requiresActionnumberopcional
De ellas, que requieren acción.
notConnectednumberopcional
De ellas, no conectadas.
pctnumberopcional
Porcentaje sincronizado, redondeado.
attentionarray of objectopcional
Tarjetas priorizadas de "requiere atención".
nnumberopcional
Cantidad que representa esta tarjeta.
titlestringopcional
Título de la tarjeta.
substringopcional
Subtítulo de la tarjeta.
tonestring (amber | blue | rose | zinc)opcional
Tono visual de esta tarjeta.
filterstring (issues | duplicates | under80 | unverified | notconnected)opcional
Clave de filtro correspondiente en la tabla de ubicaciones.
headlinestringopcional
Un titular determinista de una línea sobre el estado del alcance.
fixFirstarray of objectopcional
Correcciones priorizadas.
textstringopcional
Descripción de la corrección.
impactstring (High | Med | Low)opcional
Impacto estimado de esta corrección.
filterstring (issues | duplicates | under80 | unverified | notconnected)opcional
Clave de filtro correspondiente en la tabla de ubicaciones.
totalnumberopcional
Total de ubicaciones coincidentes (para paginación), independiente de perPage.
pagenumberopcional
Página actual (base 1).
perPagenumberopcional
Filas por página.
Errores
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
get/api/v1/listings/summary
Su clave de API
clientId
tags
page
perPage
withVisibility
{
"data": {
"summary": {
"locations": 12,
"publishersTotal": 96,
"publishersSynced": 81,
"connectionIssues": 3,
"duplicates": 2,
"reviews": 340,
"avgRating": 4.6
},
"rows": [
{
"locationId": "loc_456",
"name": "Acme Dental — Downtown",
"city": "Austin",
"publishers": 8,
"synced": 7,
"connectionIssues": 0,
"duplicates": 0,
"reviews": 26,
"unreplied": 2,
"avgRating": 4.8,
"googleVerified": true,
"googleConnected": true,
"facebookConnected": true,
"tags": [
"vip"
]
}
],
"insights": {
"health": 84,
"distribution": {
"fullySynced": 9,
"healthy": 2,
"atRisk": 1
},
"weakest": [
{
"locationId": "loc_789",
"name": "Acme Dental — Eastside",
"health": 40
}
],
"directories": [
{
"id": "google",
"name": "Google Maps",
"total": 12,
"synced": 11,
"requiresAction": 0,
"notConnected": 1,
"pct": 92
}
],
"attention": [
{
"n": 1,
"title": "1 location under 90% synced",
"sub": "Listings not fully propagated",
"tone": "amber",
"filter": "under80"
}
],
"headline": "84% listing health — 1 location under 90% synced needs attention.",
"fixFirst": [
{
"text": "Reconnect 1 location's listing sync.",
"impact": "Med"
}
]
},
"total": 12,
"page": 1,
"perPage": 50
}
}Guías que usan este endpoint
- Business Listings API: Complete Developer GuideHow a business listings API works and how to create, update, sync and monitor locations across Google, Apple, Bing and directories with the Synup API.
- How to Add Local Marketing Features to Your SaaSAdd listings management, reviews, Google posts, profile analytics, rank tracking and AI visibility to a SaaS product with the Synup API, tenant by tenant.
- How to Manage Business Listings ProgrammaticallyKeep business listings accurate from your own system with the Synup API. Covers change detection, idempotent updates, hours, photos and sync reporting.
- How to Update Business Information Across Google, Apple, Bing and DirectoriesPush one business-information change to Google, Apple, Bing and the directory network through a single API call, and verify it reached each publisher.
- How Listing Syndication WorksListing syndication takes one business record, translates it into each publisher's format, and pushes it out asynchronously, which is why sync status matters.
- How to Build an AI Agent for Local SEOBuild an AI agent that audits and fixes listings, tracks local rankings, checks AI visibility and drafts review replies with Synup's MCP server or REST tools.
- How to Manage Thousands of Business Locations via APIDesign a sync job for thousands of locations on the Synup API with cursor pagination, tags, rate-limit handling, an id map and rollup health checks.
- How to Find and Remove Duplicate Business ListingsDetect duplicate business listings across publishers, review them by confidence, and flag them for removal or dismiss them with the Synup API.
- How to Build a Multi-Location Marketing DashboardBuild a multi-location marketing dashboard from the API's rollup endpoints, one call per panel, covering listings, reviews, rank, AI visibility and duplicates.
- Local SEO APIs: What Developers Actually NeedA practical checklist of what a local SEO API must cover, from listings and sync status to reviews, rank tracking and AI visibility, mapped to endpoints.
- How to Monitor Local SEO Across Multiple LocationsMonitor local SEO across hundreds of locations through rollup endpoints, with rank and AI visibility per location and the weakest surfaced first.