/api/v4/locations/{locationId}/reviewsListar interacciones de una ubicación
Devuelve una lista paginada mediante cursores de reseñas e interacciones sociales de una sola ubicación, con filtros.
Parámetros
Ruta
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| locationId | string | obligatorio | Location ID, a raw numeric database ID (e.g. `1800289`) or its Base64-encoded Relay ID (e.g. `TG9jYXRpb246MTgwMDI4OQ==`). |
Consulta
| Nombre | Tipo | Obligatorio | Descripción | Predeterminado |
|---|---|---|---|---|
| siteUrls | string | opcional | JSON-encoded array of publisher hostnames to include, e.g. `["maps.google.com","yelp.com"]`. | — |
| startDate | string | opcional | Start of the date-range filter (YYYY-MM-DD). | — |
| endDate | string | opcional | End of the date-range filter (YYYY-MM-DD). | — |
| searchString | string | opcional | Full-text search across interaction content. | — |
| category | string | opcional | Single interaction category, e.g. `REVIEW`. | — |
| categories | string | opcional | JSON-encoded array of interaction categories. | — |
| ratingFilters | string | opcional | JSON-encoded array of star ratings to include, e.g. `[3,4]`. | — |
| ratingFilter | integer | opcional | Single star rating to filter by. | — |
| responseStatus | string | opcional | JSON-encoded response-status filter. Values: `RESPONDED`, `PENDING`. | — |
| sortOrder | string | opcional | JSON-encoded sort order. Values: `NEWEST_FIRST`, `OLDEST_FIRST`, `LAST_RESPONDED`. | — |
| first | integer | opcional | Number of records to return from the beginning (newest first). Defaults to 20 when omitted, the endpoint always returns a single page, never the whole history. | — |
| after | string | opcional | Cursor to page forward from. Pass `pageInfo.endCursor`, or equivalently the `cursor` of the last edge in the previous page. | — |
| last | integer | opcional | Number of records to return from the end. | — |
| before | string | opcional | Cursor 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 interactions result. `data.interactions` holds the connection.
{ "data": { "interactions": { "pageInfo": { "hasNextPage": true, "hasPreviousPage": false, "endCursor": "SW50ZXJhY3Rpb246MV8xNTU0MjQzMDczMDM2LTllMjZkMmE4LWE2ZWQtNDJlYS04NDU0LTQ3ZDFjOTJlYTg0MQ==" }, "edges": [ { "node": { "id": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841", "source": "maps.google.com", "content": "nice place for family together", "authorName": "vaibhav nakate", "rating": 5, "date": "2019-04-02T22:11:13.036997+00:00", "category": "Review", "type": "Review", "responded": false, "responseCount": 0, "canRespond": true, "permalink": "https://maps.google.com/maps?cid=..." }, "cursor": "SW50ZXJhY3Rpb246MV8xNTU0MjQzMDczMDM2LTllMjZkMmE4LWE2ZWQtNDJlYS04NDU0LTQ3ZDFjOTJlYTg0MQ==" } ], "totalCount": 425 } }}401Unauthenticated, missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.
Devuelve reseñas e interacciones sociales de una ubicación mediante paginación basada en cursores. De forma predeterminada, los resultados se ordenan del más reciente al más antiguo. La conexión se encuentra en data.interactions y contiene edges[].node (consulta la referencia de atributos de interacción), un endCursor en pageInfo y un totalCount.
totalCount es el número de interacciones que coinciden con tus filtros en todo el conjunto de resultados, no el número devuelto en esta página. Úsalo para estimar el volumen de una carga de datos históricos o para comprobar tu propio recuento: una ubicación con totalCount: 450 consultada con first=50 requiere 9 solicitudes, y los recuentos deben sumar 450 cuando llegues al final. Si omites first, se devuelven 20 registros, por lo que una sola llamada nunca devuelve el historial completo.
Caso de uso: una bandeja de entrada de reseñas por tienda
Para crear una bandeja de entrada de reseñas de una ubicación, avanza por las páginas con first y after: solicita first=25 y, después, pasa el pageInfo.endCursor de la respuesta como after en la siguiente llamada. Cada edge también incluye su propio cursor, y el cursor del último edge es el endCursor de esa página, por lo que cualquiera de los dos valores sirve como after. Detente cuando hasNextPage sea false o cuando una página devuelva un array edges vacío; comprueba ambas condiciones, porque si el límite de una página coincide exactamente con la reseña más antigua, le sigue una última página vacía. Añade responseStatus=["PENDING"] para mostrar solo las reseñas que aún esperan una respuesta del propietario, o ratingFilters=[1,2] para priorizar las reseñas negativas. De cada node, el id es lo que pasas a Responder a una interacción, y canRespond te indica si esa fuente acepta respuestas del propietario.
Caso de uso: sincronización incremental
Para mantener sincronizada una réplica local, filtra por startDate/endDate y ordena con sortOrder=["NEWEST_FIRST"], guardando de forma persistente el mayor valor de date que hayas visto. Ten en cuenta que este endpoint está paginado y tiene un límite de frecuencia de solicitudes; respeta la cabecera Retry-After cuando recibas un 429 y evita volver a obtener todo el historial en cada ejecución.
Google Maps y Facebook están disponibles en todos los planes. Yelp está disponible en los planes Growth y Enterprise. Los filtros codificados en JSON (siteUrls, categories, ratingFilters, responseStatus, sortOrder) se pasan como cadenas JSON con codificación URL.
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/reviews' \ -H "Authorization: API $LISTINGSAPI_KEY"