GET/api/v4/locations

すべての拠点を一覧表示

アカウント内の拠点を、カーソルによるページネーション形式の一覧で返します。

API キーが必要です。ヘッダーの形式とキーのローテーションについては認証を参照してください。

パラメーター

クエリ

名前型必須説明デフォルト
firstinteger任意Number of records to fetch from the start of the connection (forward pagination). Combine with `after`.50
lastinteger任意Number of records to fetch from the end of the connection (backward pagination). Combine with `before`.—
afterstring任意Cursor to fetch records after. Pass `pageInfo.endCursor` from the previous page.—
beforestring任意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.—
filterstring任意JSON-encoded filter object to narrow the result set (e.g. by approval status or sync state).—

レスポンス

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.

アカウント内のすべての拠点をページ単位で取得します。結果は作成日時の降順(新しい順)に並びます。各エッジには、cursor(不透明なbase64トークンで、拠点の場合はLocation:<databaseId>にデコードされます)と、拠点の完全なレコードを格納するnodeが含まれます。

ユースケース:すべての拠点を独自のシステムに同期する。 ?first=50から始め、pageInfo.hasNextPageを読み取り、trueの場合は?first=50&after=<pageInfo.endCursor>で次のページをリクエストします。hasNextPageがfalseになるまで繰り返します。反対側からバックフィルを再開するには、戻る起点となるページの最初のエッジのcursorを指定して、last + beforeを使用します。ノードのbase64形式のidは、ほかのすべてのエンドポイントが受け付ける識別子なので、IDによる拠点の取得、音声アシスタント、または拠点の更新に渡します。

ユースケース:条件で絞り込んだ一部の拠点を取得する。 すべてのページを取得してクライアント側で絞り込む代わりに、filterにJSONエンコードされたオブジェクトを渡して、サーバー側でコネクションの範囲を絞り込みます(例:承認ステータスによる絞り込み)。これにより、大規模なアカウントでもレート制限の範囲内に収められます。

ページネーションとレート制限の注意点: カーソルは不透明な値です。自分で組み立てず、必ずAPIが返したカーソルをそのまま送信してください。順方向ではpageInfo.endCursor、逆方向ではエッジ自体のcursorを使用します(pageInfoにはstartCursorがありません)。first/after(順方向)またはlast/before(逆方向)のいずれかを使用し、両方向を同時に使用しないでください。短い間隔でページを取得するループは429レスポンスの最も一般的な原因なので、Retry-Afterヘッダーに従い、複数のページのリクエストを同時に実行しないでください。

各拠点について、placeActionLinks(Listings APIが管理するGoogleアクションリンク)とdiscoveredPlaceActionLinks(ビジネスのGoogleプロフィール上で直接見つかった、まだ管理されていないリンク)が返されます。これらの読み取り、管理対象への取り込み、管理方法については、プレイスアクションリンクのガイドを参照してください。

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