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

Sammelbeiträge für einen Standort abrufen

Gibt eine Seite mit standortübergreifenden Beitragskampagnen zurück, die einen bestimmten Standort einschließen.

Erfordert einen API-Schlüssel. Format des Headers und Schlüsselrotation finden Sie unter Authentifizierung.

Parameter

Pfad

NameTypErforderlichBeschreibung
locationIdstringerforderlichBase64-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

NameTypErforderlichBeschreibungStandard
pageintegeroptional1-based page number for offset pagination.1
perPageintegeroptionalNumber of records per page.—
filtersstringoptionalJSON-encoded SocialPostFiltersInput (e.g. by `type`, `status`, `creationDateRange`, `siteUrls`).—
sortFieldsstringoptionalJSON-encoded sort object `{ "field": "created_at", "order": "Descending" }`. `field` is one of name, type, status, created_at, schedule_start_date, schedule_end_date, client_name, clicks, views, shares.—
locationIdsstringoptionalJSON-encoded array of location IDs to include alongside the path location.—
componentIdentifierstringoptionalFilter to campaigns created by a specific component/integration.—

Antworten

200A page of bulk campaigns that include the location. `records` is empty when no bulk campaign has targeted it.
Response
{  "data": {    "rollupSocialPosts": {      "records": [        {          "id": "U29jaWFsUG9zdDo1MTA4OA==",          "name": "Diwali Offer - All Stores",          "status": "SUCCESS",          "type": "OFFER",          "createdAt": "2026-06-20",          "scheduledStartDate": "2026-06-22",          "scheduledEndDate": "2026-07-06",          "views": 4210,          "clicks": 318,          "shares": 12,          "reactions": 87,          "comments": 4,          "sites": ["GOOGLE", "FACEBOOK"],          "message": [            { "site": "GOOGLE", "message": "Festive savings across all our stores this week." },            { "site": "FACEBOOK", "message": "Festive savings across all our stores this week!" }          ],          "cta": [            { "type": { "value": "GET_OFFER", "label": "Get offer" }, "url": "https://jennyhome.example/diwali", "site": "GOOGLE", "tinyUrl": "https://tiny.cc/jh-diwali" }          ],          "contextInfo": {            "couponCode": "DIWALI25",            "redeemUrl": "https://jennyhome.example/diwali",            "termsConditions": "Valid in-store only. Cannot be combined with other offers.",            "title": "25% off storewide",            "discount": "25%",            "startDay": "2026-06-22",            "endDay": "2026-07-06"          },          "mediaUrl": [            { "url": "https://cdn.listingsapi.com/posts/51088/diwali.jpg", "site": "GOOGLE", "type": "IMAGE" }          ],          "publishDetails": [            { "site": "GOOGLE", "status": "PUBLISHED", "createdDate": "2026-06-20", "publishedDate": "2026-06-22", "submissionError": null },            { "site": "FACEBOOK", "status": "PUBLISHED", "createdDate": "2026-06-20", "publishedDate": "2026-06-22", "submissionError": null }          ],          "postLinks": [            { "site": "GOOGLE", "link": "https://www.google.com/maps/place/?post=51088" }          ],          "locationIds": [1800289, 1800290, 1800291],          "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.

Ein Sammelbeitrag ist eine Kampagne, die an vielen Standorten gleichzeitig veröffentlicht wird (erstellt über POST /bulk-posts). Dieser Endpunkt listet die Sammelkampagnen auf, die den angegebenen Standort einschließen, sodass Sie Zusammenfassungen über mehrere Filialen hinweg aus der Perspektive einer einzelnen Filiale sehen können. Die Antwortstruktur ist identisch mit GET /locations/{locationId}/posts; die Datensätze umfassen hier lediglich mehrere locationIds.

Anwendungsfall: einen Rollout in der gesamten Filialkette abgleichen. Rufen Sie nach dem Start eines „Diwali-Angebots“ in allen Filialen GET /locations/1800289/bulk-posts für eine beliebige Filiale auf, um zu bestätigen, dass die Kampagne sie erreicht hat, prüfen Sie das gemeinsame contextInfo (Gutscheincode, Rabatt, Bedingungen) und lesen Sie publishDetails je Website, um ein FACEBOOK submissionError an diesem Standort zu erkennen.

Stolperfallen.

  • Wie bei der Liste für einen einzelnen Standort gilt: Die Paginierung erfolgt offsetbasiert über page/perPage, sortFields ist ein einzelnes Objekt (kein Array), und häufige Abfragen können zur Rückgabe von HTTP 429 führen.
  • locationIds in jedem Datensatz enthält die vollständige Menge der von der Kampagne angesprochenen Standorte und somit auch andere IDs als die im Pfad angegebene.

Das obige Array records dient als Beispiel. Der Seed-Standort in der Live-Umgebung (Jenny Home) hat keine Sammelkampagnen, sodass ein tatsächlicher Aufruf records: [] mit pageInfo.totalRecords: 0 zurückgibt.

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