GET/api/v4/locations/{locationId}/reviews

Listar interações de um local

Retorna uma lista de avaliações e interações sociais de um único local, com paginação por cursor e filtros.

Requer uma chave de API. Consulte Autenticação para ver o formato do cabeçalho e a rotação de chaves.

Parâmetros

Caminho

NomeTipoObrigatórioDescrição
locationIdstringobrigatórioLocation ID, a raw numeric database ID (e.g. `1800289`) or its Base64-encoded Relay ID (e.g. `TG9jYXRpb246MTgwMDI4OQ==`).

Query

NomeTipoObrigatórioDescriçãoPadrão
siteUrlsstringopcionalJSON-encoded array of publisher hostnames to include, e.g. `["maps.google.com","yelp.com"]`.—
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 (newest first). 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.—

Respostas

200Paginated interactions result. `data.interactions` holds the connection.
Response
{  "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.

Retorna avaliações e interações sociais de um local usando paginação por cursor. Por padrão, os resultados são ordenados do mais recente para o mais antigo. A conexão fica em data.interactions e contém edges[].node (consulte a referência dos atributos de interação), um endCursor em pageInfo e um totalCount.

totalCount é o número de interações que correspondem aos seus filtros em todo o conjunto de resultados, não o número retornado nesta página. Use esse valor para dimensionar uma carga de dados históricos ou conferir sua própria contagem: a leitura de um local com totalCount: 450 usando first=50 exige 9 requisições, e as contagens devem somar 450 quando você chegar ao fim. Omitir first retorna 20 registros, portanto uma única chamada nunca retorna o histórico completo.

Caso de uso: uma caixa de entrada de avaliações por loja

Para criar uma caixa de entrada de avaliações para um local, avance pelas páginas com first e after: solicite first=25 e, em seguida, passe o pageInfo.endCursor da resposta como after na próxima chamada. Cada edge também contém seu próprio cursor, e o cursor do último edge é o endCursor dessa página, portanto qualquer um dos valores funciona como after. Pare quando hasNextPage for false ou quando uma página retornar com um array edges vazio; verifique ambas as condições, pois, quando o limite de uma página coincide exatamente com a avaliação mais antiga, ainda há uma última página vazia em seguida. Adicione responseStatus=["PENDING"] para mostrar apenas avaliações que ainda aguardam uma resposta do proprietário, ou ratingFilters=[1,2] para fazer a triagem das avaliações negativas primeiro. De cada node, o id é o valor que você passa para Responder a uma interação, e canRespond informa se essa fonte aceita respostas do proprietário.

Caso de uso: sincronização incremental

Para manter uma cópia local sincronizada, filtre por startDate/endDate e ordene com sortOrder=["NEWEST_FIRST"], persistindo o maior valor de date que você já encontrou. Observe que este endpoint usa paginação e limita a taxa de requisições; respeite o cabeçalho Retry-After ao receber um 429 e evite buscar novamente o histórico completo a cada execução.

Google Maps e Facebook estão disponíveis em todos os planos. Yelp está disponível nos planos Growth e Enterprise. Os filtros codificados em JSON (siteUrls, categories, ratingFilters, responseStatus, sortOrder) são passados como strings JSON codificadas para URL.

Request
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/reviews' \  -H "Authorization: API $LISTINGSAPI_KEY"