GET/api/v4/rollup_interactions

Obtener interacciones agregadas

Devuelve una lista de interacciones de múltiples ubicaciones de la cuenta, paginada mediante cursores, con opciones de filtrado y ordenación.

Requiere una clave de API. Consulta Autenticación para conocer el formato del encabezado y la rotación de claves.

Parámetros

Consulta

NombreTipoObligatorioDescripciónPredeterminado
tagstringopcionalLocation tag to scope the rollup to. Defaults to `all`, every location the key can see. Omit it unless you tag locations.all
siteUrlsstringopcionalJSON-encoded array of publisher hostnames to include.—
startDatestringopcionalStart of the date-range filter (YYYY-MM-DD).—
endDatestringopcionalEnd of the date-range filter (YYYY-MM-DD).—
searchStringstringopcionalFull-text search across interaction content.—
categorystringopcionalSingle interaction category, e.g. `REVIEW`.—
categoriesstringopcionalJSON-encoded array of interaction categories.—
ratingFiltersstringopcionalJSON-encoded array of star ratings to include, e.g. `[3,4]`.—
ratingFilterintegeropcionalSingle star rating to filter by.—
responseStatusstringopcionalJSON-encoded response-status filter. Values: `RESPONDED`, `PENDING`.—
sortOrderstringopcionalJSON-encoded sort order. Values: `NEWEST_FIRST`, `OLDEST_FIRST`, `LAST_RESPONDED`.—
firstintegeropcionalNumber of records to return from the beginning. Defaults to 20 when omitted, the endpoint always returns a single page, never the whole history.—
afterstringopcionalCursor to page forward from. Pass `pageInfo.endCursor`, or equivalently the `cursor` of the last edge in the previous page.—
lastintegeropcionalNumber of records to return from the end.—
beforestringopcionalCursor to page backward from, used with `last`. Pass the `cursor` of the first edge of the page you are moving back from. `pageInfo` carries no `startCursor` field, so the edge cursor is the value to use.—

Respuestas

200Paginated rollup of interactions across the account. `data.rollupInteractions` holds the connection.
Response
{  "data": {    "rollupInteractions": {      "pageInfo": {        "hasNextPage": true,        "hasPreviousPage": false      },      "edges": [        {          "node": {            "id": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841",            "source": "maps.google.com",            "content": "Excellent service, highly recommend.",            "authorName": "Priya S.",            "rating": 5,            "date": "2026-06-30T12:04:11+00:00",            "category": "Review",            "type": "Review",            "responded": false,            "responseCount": 0,            "canRespond": true,            "locationId": 1800289          },          "cursor": "SW50ZXJhY3Rpb246OWUyNmQyYTg="        }      ],      "totalCount": 1284    }  }}
401Unauthenticated, missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.

Devuelve una vista de las interacciones de distintas ubicaciones de la cuenta. Admite la misma paginación basada en cursores (first, last, after, before) y los mismos filtros que el endpoint por ubicación Listar interacciones. La conexión se encuentra en data.rollupInteractions y cada node incluye un locationId para que puedas atribuir una interacción a su establecimiento.

totalCount es el número de interacciones que coinciden con tus filtros en todas las ubicaciones incluidas en el alcance, no el número que se devuelve en esta página. Si omites first, se devuelven 20 registros, por lo que una sola llamada nunca contiene todo el historial de la cuenta; recorre las páginas con after hasta que tengas totalCount registros.

Ten en cuenta: la agregación siempre abarca toda la cuenta

Este endpoint no tiene ningún parámetro por ubicación: con el valor predeterminado de tag=all, agrega todas las ubicaciones a las que tiene acceso la clave de API, y el único alcance más restringido es un tag de ubicación. No existe ningún argumento locationFilters ni locationIds, y si envías uno, se ignora en lugar de rechazarse. Limita el conjunto de resultados con los filtros disponibles (siteUrls, responseStatus, sortOrder, startDate/endDate, searchString), o agrupa los resultados tú mismo según el locationId de cada nodo.

Caso de uso: una cola de «pendientes de respuesta» para toda la cuenta

Para listar todas las reseñas de todas las ubicaciones que aún esperan una respuesta del propietario, llama a GET /rollup_interactions?responseStatus=["PENDING"]&sortOrder=["NEWEST_FIRST"]&first=50 y luego recorre las páginas con after = pageInfo.endCursor (equivalente al cursor de la última arista), deteniéndote cuando hasNextPage sea false o una página devuelva un array edges vacío. Esto evita recorrer las ubicaciones una por una. Como el endpoint está paginado y sujeto a límites de frecuencia, respeta la cabecera Retry-After cuando recibas un 429 y prioriza las ejecuciones acotadas por fechas (startDate/endDate) para las sincronizaciones programadas.

Request
curl -X GET 'https://listingsapi.com/api/v4/rollup_interactions' \  -H "Authorization: API $LISTINGSAPI_KEY"