/api/v4/locations/{locationId}/postsAmbil postingan untuk suatu lokasi
Mengembalikan satu halaman kampanye postingan media sosial (pengumuman, acara, penawaran) yang menargetkan satu lokasi.
Parameter
Path
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| locationId | string | wajib | 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. |
Query
| Nama | Tipe | Wajib | Deskripsi | Default |
|---|---|---|---|---|
| page | integer | opsional | 1-based page number for offset pagination. | 1 |
| perPage | integer | opsional | Number of records per page. Must not exceed 50. | 10 |
Respons
200A page of post campaigns for the location, under `data.postsByLocation`. `records` is empty when the location has no posts yet.
{ "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.
Gunakan endpoint ini untuk mengambil riwayat postingan untuk satu gerai, yaitu setiap kampanye pengumuman, acara, dan penawaran yang mencakup lokasi tersebut, beserta status siklus hidupnya dan penghitung interaksi per postingan (views, clicks, reactions).
Contoh penggunaan: audit sebelum kampanye. Sebelum menjadwalkan postingan Google baru untuk Jenny Home, panggil GET /locations/TG9jYXRpb246MTgwMDI4OQ==/posts untuk melihat postingan yang sudah tayang, postingan yang masih SCHEDULED, dan kinerja pengumuman terakhir. Baca type pada setiap rekaman untuk mengidentifikasi penawaran; endpoint ini tidak memiliki filter jenis di sisi server.
Hal yang perlu diperhatikan.
- Endpoint ini hanya menerima argumen
pagedanperPage. Tidak ada parameterfilters,sortFields,locationIds, ataucomponentIdentifierdi sini (parameter tersebut tersedia pada endpoint bulk-posts), dan jika dikirim, parameter tersebut akan diabaikan, bukan ditolak. Filter dan urutkanrecordsyang dikembalikan dalam kode Anda sendiri. taglangsung ditolak pada rute ini dengantag is not a supported parameter for this query. Gunakan endpoint bulk-posts saat Anda perlu menentukan sekumpulan lokasi berdasarkan tag.perPagedibatasi hingga 50; nilai yang lebih besar menyebabkan kegagalan denganper_page must not exceed 50.- Kirim
locationIdsebagai kursor base64 (e.g.TG9jYXRpb246MTgwMDI4OQ==) persis seperti yang dikembalikan oleh endpoint list/search; jangan lakukan pengodean URL pada kursor tersebut. - Paginasi berbasis offset: gunakan
pagedanperPage(nilai default 10), lalu bacapageInfo.totalPages/pageInfo.totalRecordsuntuk mengetahui kapan harus berhenti. - Polling berkelanjutan dapat mencapai batas laju permintaan akun (HTTP 429); patuhi header
Retry-After.
Array records dalam contoh di atas bersifat representatif. Lokasi data awal di lingkungan aktif (Jenny Home) saat ini tidak memiliki postingan media sosial, sehingga panggilan sesungguhnya mengembalikan records: [] dengan pageInfo.totalRecords: 0.
Terkait: buat postingan dengan POST /posts, ambil satu kampanye dengan GET /posts/{postId}, atau ambil daftar kampanye massal (multilokasi) dengan GET /locations/{locationId}/bulk-posts, yang memang menerima filters dan sortFields serta mengembalikan respons di bawah rollupSocialPosts.
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/posts' \ -H "Authorization: API $LISTINGSAPI_KEY"