/api/v4/locations/{locationId}/reviewsLister les interactions d’un établissement
Renvoie une liste paginée par curseur des avis et des interactions sociales pour un seul établissement, avec des filtres.
Paramètres
Chemin
| Nom | Type | Obligatoire | Description |
|---|---|---|---|
| locationId | string | obligatoire | Location ID, a raw numeric database ID (e.g. `1800289`) or its Base64-encoded Relay ID (e.g. `TG9jYXRpb246MTgwMDI4OQ==`). |
Chaîne de requête
| Nom | Type | Obligatoire | Description | Par défaut |
|---|---|---|---|---|
| siteUrls | string | facultatif | JSON-encoded array of publisher hostnames to include, e.g. `["maps.google.com","yelp.com"]`. | — |
| startDate | string | facultatif | Start of the date-range filter (YYYY-MM-DD). | — |
| endDate | string | facultatif | End of the date-range filter (YYYY-MM-DD). | — |
| searchString | string | facultatif | Full-text search across interaction content. | — |
| category | string | facultatif | Single interaction category, e.g. `REVIEW`. | — |
| categories | string | facultatif | JSON-encoded array of interaction categories. | — |
| ratingFilters | string | facultatif | JSON-encoded array of star ratings to include, e.g. `[3,4]`. | — |
| ratingFilter | integer | facultatif | Single star rating to filter by. | — |
| responseStatus | string | facultatif | JSON-encoded response-status filter. Values: `RESPONDED`, `PENDING`. | — |
| sortOrder | string | facultatif | JSON-encoded sort order. Values: `NEWEST_FIRST`, `OLDEST_FIRST`, `LAST_RESPONDED`. | — |
| first | integer | facultatif | 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 | facultatif | Cursor to page forward from. Pass `pageInfo.endCursor`, or equivalently the `cursor` of the last edge in the previous page. | — |
| last | integer | facultatif | Number of records to return from the end. | — |
| before | string | facultatif | 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. | — |
Réponses
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.
Renvoie les avis et les interactions sociales d’un établissement à l’aide d’une pagination par curseur. Par défaut, les résultats les plus récents apparaissent en premier. La connexion se trouve à data.interactions et contient edges[].node (voir la référence des attributs d’interaction), un endCursor dans pageInfo et un totalCount.
totalCount correspond au nombre d’interactions qui correspondent à vos filtres dans l’ensemble des résultats, et non au nombre renvoyé sur cette page. Utilisez-le pour estimer le volume d’une récupération de données historiques ou vérifier votre propre décompte : pour un établissement avec totalCount: 450, une lecture à first=50 nécessite 9 requêtes, et la somme des décomptes doit atteindre 450 lorsque vous arrivez à la fin. Si vous omettez first, 20 enregistrements sont renvoyés ; un seul appel ne fournit donc jamais l’historique complet.
Cas d’utilisation : une boîte de réception des avis par établissement
Pour créer une boîte de réception des avis pour un établissement, parcourez les pages suivantes avec first et after : demandez first=25, puis transmettez le pageInfo.endCursor de la réponse comme after lors de l’appel suivant. Chaque edge contient également son propre cursor, et le cursor du dernier edge est le endCursor de cette page ; chacune de ces deux valeurs peut donc servir de after. Arrêtez-vous lorsque hasNextPage vaut false ou lorsqu’une page est renvoyée avec un tableau edges vide ; testez les deux conditions, car une page dont la limite tombe exactement sur l’avis le plus ancien est suivie d’une dernière page vide. Ajoutez responseStatus=["PENDING"] pour afficher uniquement les avis qui attendent encore une réponse du propriétaire, ou ratingFilters=[1,2] pour traiter les avis négatifs en priorité. Pour chaque node, transmettez le id à Répondre à une interaction ; canRespond vous indique si cette source accepte les réponses du propriétaire.
Cas d’utilisation : synchronisation incrémentielle
Pour maintenir la synchronisation d’une copie locale, filtrez par startDate/endDate et triez avec sortOrder=["NEWEST_FIRST"], en conservant la valeur de date la plus élevée que vous avez observée. Notez que cet endpoint est paginé et soumis à une limite de débit ; respectez l’en-tête Retry-After en cas de 429 et évitez de récupérer à nouveau l’historique complet à chaque exécution.
Google Maps et Facebook sont disponibles avec toutes les offres. Yelp est disponible avec les offres Growth et Enterprise. Les filtres encodés en JSON (siteUrls, categories, ratingFilters, responseStatus, sortOrder) sont transmis sous forme de chaînes JSON encodées pour les URL.
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/reviews' \ -H "Authorization: API $LISTINGSAPI_KEY"