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

拠点の投稿を取得する

単一の拠点を対象とするソーシャル投稿キャンペーン(お知らせ、イベント、特典)を1ページ分返します。

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

パラメーター

パス

名前型必須説明
locationIdstring必須Base64-encoded location cursor / global ID (e.g. `TG9jYXRpb246MTgwMDI4OQ==`). Pass it unchanged, do not URL-encode it. The base64 cursor always resolves; the raw numeric database ID also works on this endpoint, but the base64 form is the portable choice across the API.

クエリ

名前型必須説明デフォルト
pageinteger任意1-based page number for offset pagination.1
perPageinteger任意Number of records per page. Must not exceed 50.10

レスポンス

200A page of post campaigns for the location, under `data.postsByLocation`. `records` is empty when the location has no posts yet.
Response
{  "data": {    "postsByLocation": {      "records": [        {          "id": "U29jaWFsUG9zdDo0NDEyMg==",          "name": "Summer Hours Update",          "status": "SUCCESS",          "type": "ANNOUNCEMENT",          "createdAt": "2026-06-28",          "scheduledStartDate": "2026-06-28",          "scheduledEndDate": "2026-07-28",          "views": 128,          "clicks": 14,          "shares": 0,          "reactions": 3,          "comments": 1,          "sites": ["GOOGLE"],          "message": [            { "site": "GOOGLE", "message": "We have extended our summer hours! Open until 9pm on weekdays." }          ],          "cta": [            { "type": { "value": "LEARN_MORE", "label": "Learn more" }, "url": "https://jennyhome.example/hours", "site": "GOOGLE", "tinyUrl": "https://tiny.cc/jh-hours" }          ],          "contextInfo": null,          "mediaUrl": [            { "url": "https://cdn.listingsapi.com/posts/44122/summer.jpg", "site": "GOOGLE", "type": "IMAGE" }          ],          "publishDetails": [            { "site": "GOOGLE", "status": "PUBLISHED", "createdDate": "2026-06-28", "publishedDate": "2026-06-28", "submissionError": null }          ],          "postLinks": [            { "site": "GOOGLE", "link": "https://www.google.com/maps/place/?post=44122" }          ],          "locationIds": [1800289],          "clientName": "Jenny Home"        }      ],      "locationDetails": [        {          "id": "TG9jYXRpb246MTgwMDI4OQ==",          "name": "Jenny Home",          "street": "600 Congress Ave, Suite 200",          "city": "Austin",          "postalCode": "78701",          "countryIso": "US",          "stateIso": "TX",          "stateName": "Texas",          "storeId": null        }      ],      "pageInfo": {        "totalPages": 1,        "hasNextPage": false,        "hasPreviousPage": false,        "totalRecords": 1      }    }  }}
401Unauthenticated, missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.

このエンドポイントを使用すると、単一の店舗の投稿履歴として、その拠点を対象に含むすべてのお知らせ、イベント、特典のキャンペーンを、ライフサイクルのstatusおよび投稿ごとのエンゲージメントカウンター(views、clicks、reactions)とともに取得できます。

ユースケース:キャンペーン前の監査。 Jenny Home の新しい Google 投稿を予約する前に、GET /locations/TG9jYXRpb246MTgwMDI4OQ==/postsを呼び出して、すでに公開されている投稿、まだSCHEDULEDの投稿、前回のお知らせの実績を確認します。特典を見つけるには各レコードのtypeを確認してください。このエンドポイントにはサーバー側のタイプフィルターがありません。

注意点。

  • このエンドポイントが受け取る引数はpageとperPageのみです。ここにはfilters、sortFields、locationIds、componentIdentifierのパラメーターはなく(これらは一括投稿エンドポイントのパラメーターです)、送信しても拒否されずに無視されます。返されたrecordsの絞り込みと並べ替えは、ご自身のコードで行ってください。
  • このルートではtagは即座に拒否され、tag is not a supported parameter for this queryが返されます。タグから拠点の集合を特定する必要がある場合は、一括投稿エンドポイントを使用してください。
  • perPageの上限は50で、それより大きい値を指定するとper_page must not exceed 50で失敗します。
  • locationIdには、一覧取得/検索エンドポイントから返された base64 カーソル(例: TG9jYXRpb246MTgwMDI4OQ==)をそのまま渡し、URL エンコードしないでください。
  • ページネーションはオフセット方式です。pageとperPage(デフォルトは10)を使用し、pageInfo.totalPages / pageInfo.totalRecordsを確認して取得を終了するタイミングを判断してください。
  • 継続的にポーリングすると、アカウントのレート制限(HTTP 429)に達することがあります。Retry-Afterヘッダーに従ってください。

上記のサンプルにあるrecords配列は代表例です。実環境のシード拠点(Jenny Home)には現在ソーシャル投稿がないため、実際に呼び出すとrecords: []がpageInfo.totalRecords: 0とともに返されます。

関連:投稿を作成するにはPOST /posts、1つのキャンペーンを取得するにはGET /posts/{postId}、一括(複数拠点)キャンペーンを一覧取得するにはGET /locations/{locationId}/bulk-postsを使用してください。一括キャンペーンの一覧取得ではfiltersとsortFieldsを受け付け、rollupSocialPosts配下に結果を返します。

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