/api/v4/locationsListar todos os locais
Retorna uma lista de locais da sua conta com paginação por cursor.
Parâmetros
Query
| Nome | Tipo | Obrigatório | Descrição | Padrão |
|---|---|---|---|---|
| first | integer | opcional | Number of records to fetch from the start of the connection (forward pagination). Combine with `after`. | 50 |
| last | integer | opcional | Number of records to fetch from the end of the connection (backward pagination). Combine with `before`. | — |
| after | string | opcional | Cursor to fetch records after. Pass `pageInfo.endCursor` from the previous page. | — |
| before | string | opcional | Cursor to fetch records before, 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. | — |
| filter | string | opcional | JSON-encoded filter object to narrow the result set (e.g. by approval status or sync state). | — |
Respostas
200Cursor-paginated connection of locations. Each edge exposes a `cursor` and a `node` (the full location).
{ "data": { "allLocations": { "edges": [ { "cursor": "TG9jYXRpb246MTgwMDI4OQ==", "node": { "id": "TG9jYXRpb246MTgwMDI4OQ==", "databaseId": 1800289, "accountId": 12345, "accountName": "owner@brightsmile-dental.com", "name": "Jenny Home", "approved": "APPROVED", "archived": false, "archivalScheduledAt": null, "archivedAt": null, "street": "600 Congress Ave, Suite 200", "city": "Austin", "stateIso": "TX", "stateName": "Texas", "postalCode": "78701", "countryIso": "US", "countryCode": "1", "latitude": "30.2711286", "longitude": "-97.7436995", "phone": "5125550142", "additionalPhones": [], "bizUrl": null, "hideAddress": false, "storeId": null, "categoryId": 15, "subCategoryId": 1432, "subCategoryName": "Restaurants", "additionalCategoryIds": [], "additionalCategoryNames": [], "description": "This is a standalone duplex house. A comfortable, private residence located in the Bouldin Creek neighborhood of Austin, offering spacious duplex living with easy access to the surrounding South Congress area and downtown Austin.", "businessHours": [], "package": "PREMIUM", "planId": 3797, "planName": "Launch", "temporarilyClosed": false, "ownerEmail": null, "ownerName": null, "googleVerificationStatus": { "status": "NOT_CONNECTED", "message": null }, "voiceStatus": 3, "uid": "3c92283c-6145-4a43-8a62-0c15fd712021", "createdDate": "July 06, 2026", "lastUpdatedDate": "July 06, 2026", "updatedAt": "2026-07-06T18:33:29.664Z", "placeActionLinks": [ { "placeActionType": "FOOD_ORDERING", "uri": "https://order.example.com", "isPreferred": true, "name": "locations/1944.../placeActionLinks/54ada85bc246058a", "submissionStatus": "success", "submissionMessage": "Already up to date on Google.", "lastSubmittedAt": "2026-07-08T12:14:36Z" } ], "discoveredPlaceActionLinks": [ { "placeActionType": "APPOINTMENT", "uri": "https://book.example.com", "isPreferred": false, "name": "locations/1944.../placeActionLinks/abc123", "providerType": "MERCHANT", "isEditable": true } ] } } ], "pageInfo": { "hasNextPage": false, "hasPreviousPage": false, "endCursor": "TG9jYXRpb246MTgwMDI4OQ==", "total": 1 } } }}401Unauthenticated, missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.
Percorre todos os locais da sua conta por páginas. Os resultados são ordenados pela data de criação (mais recentes primeiro). Cada edge contém um cursor (um token base64 opaco que, para um local, é decodificado como Location:<databaseId>) e um node que contém o registro completo do local.
Caso de uso: sincronizar todos os locais com seu próprio sistema. Comece com ?first=50, leia pageInfo.hasNextPage e, se true, solicite a próxima página com ?first=50&after=<pageInfo.endCursor>. Repita até que hasNextPage seja false. Para retomar um preenchimento retroativo a partir da outra extremidade, use last + before com o cursor do primeiro edge da página a partir da qual você está retrocedendo. O id em base64 do node é o identificador que todos os outros endpoints esperam; forneça-o a obter locais por IDs, assistentes de voz ou atualizar local.
Caso de uso: um subconjunto filtrado. Passe um objeto codificado em JSON em filter para delimitar o escopo da conexão no servidor (por exemplo, pelo status de aprovação), em vez de buscar todas as páginas e filtrar no cliente. Isso mantém contas grandes dentro dos limites de requisições.
Cuidado com a paginação e os limites de requisições: os cursores são opacos: nunca crie um manualmente; sempre reenvie um cursor retornado pela API, seja pageInfo.endCursor ao avançar ou o próprio cursor de um edge ao retroceder (pageInfo não tem startCursor). Use first/after (para avançar) ou last/before (para retroceder), nunca as duas direções ao mesmo tempo. Loops de paginação sem pausas são a causa mais comum de respostas 429; respeite o cabeçalho Retry-After e evite manter mais de uma solicitação de página em andamento ao mesmo tempo.
Cada local retorna placeActionLinks (os links de ação do Google gerenciados pela Listings API) e discoveredPlaceActionLinks (links encontrados diretamente no perfil da empresa no Google que ainda não são gerenciados). Consulte o guia de links de ação de locais para saber como consultá-los, incorporá-los ao gerenciamento e gerenciá-los.
curl -X GET 'https://listingsapi.com/api/v4/locations' \ -H "Authorization: API $LISTINGSAPI_KEY"