GET/api/v4/locations

Lister tous les établissements

Renvoie une liste des établissements de votre compte paginée par curseur.

Nécessite une clé API. Consultez Authentification pour le format de l’en-tête et la rotation des clés.

Paramètres

Chaîne de requête

NomTypeObligatoireDescriptionPar défaut
firstintegerfacultatifNumber of records to fetch from the start of the connection (forward pagination). Combine with `after`.50
lastintegerfacultatifNumber of records to fetch from the end of the connection (backward pagination). Combine with `before`.—
afterstringfacultatifCursor to fetch records after. Pass `pageInfo.endCursor` from the previous page.—
beforestringfacultatifCursor 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.—
filterstringfacultatifJSON-encoded filter object to narrow the result set (e.g. by approval status or sync state).—

Réponses

200Cursor-paginated connection of locations. Each edge exposes a `cursor` and a `node` (the full location).
Response
{  "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.

Parcourt tous les établissements de votre compte par pages. Les résultats sont triés par date de création (du plus récent au plus ancien). Chaque arête contient un cursor (un jeton base64 opaque qui, pour un établissement, se décode en Location:<databaseId>) et un node contenant l'enregistrement complet de l'établissement.

Cas d'utilisation : synchroniser tous les établissements avec votre propre système. Commencez avec ?first=50, lisez pageInfo.hasNextPage et, si true, demandez la page suivante avec ?first=50&after=<pageInfo.endCursor>. Répétez jusqu'à ce que hasNextPage soit false. Pour reprendre une récupération de données historiques depuis l'autre extrémité, utilisez last + before avec le cursor de la première arête de la page à partir de laquelle vous revenez en arrière. Le id en base64 du nœud est l'identifiant attendu par tous les autres endpoints ; transmettez-le à récupérer des établissements par leurs identifiants, assistants vocaux ou mettre à jour un établissement.

Cas d'utilisation : un sous-ensemble filtré. Transmettez un objet encodé en JSON dans filter pour restreindre la connexion côté serveur (par exemple selon le statut d'approbation), au lieu de récupérer toutes les pages et de les filtrer côté client. Cela permet aux comptes volumineux de respecter les limites de débit.

Point de vigilance concernant la pagination et les limites de débit : les curseurs sont opaques : ne les construisez jamais manuellement ; renvoyez toujours un curseur fourni par l'API, soit pageInfo.endCursor pour avancer, soit le cursor propre à une arête pour revenir en arrière (pageInfo ne possède pas de startCursor). Utilisez soit first/after (vers l'avant), soit last/before (vers l'arrière), jamais les deux directions à la fois. Les boucles de pagination sans pause sont la cause la plus fréquente des réponses 429 ; respectez l'en-tête Retry-After et évitez d'avoir plus d'une requête de page en cours à la fois.

Chaque établissement renvoie placeActionLinks (les liens d'action Google gérés par Listings API) et discoveredPlaceActionLinks (les liens trouvés directement sur la fiche Google de l'entreprise qui ne sont pas encore gérés). Consultez le guide des liens d'action pour les établissements pour savoir comment les lire, les prendre en charge et les gérer.

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