/api/v4/locations/{locationId}/bulk-postsSammelbeiträge für einen Standort abrufen
Gibt eine Seite mit standortübergreifenden Beitragskampagnen zurück, die einen bestimmten Standort einschließen.
Parameter
Pfad
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| locationId | string | erforderlich | 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
| Name | Typ | Erforderlich | Beschreibung | Standard |
|---|---|---|---|---|
| page | integer | optional | 1-based page number for offset pagination. | 1 |
| perPage | integer | optional | Number of records per page. | — |
| filters | string | optional | JSON-encoded SocialPostFiltersInput (e.g. by `type`, `status`, `creationDateRange`, `siteUrls`). | — |
| sortFields | string | optional | JSON-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. | — |
| locationIds | string | optional | JSON-encoded array of location IDs to include alongside the path location. | — |
| componentIdentifier | string | optional | Filter 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.
{ "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,sortFieldsist ein einzelnes Objekt (kein Array), und häufige Abfragen können zur Rückgabe von HTTP 429 führen. locationIdsin 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.
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/bulk-posts' \ -H "Authorization: API $LISTINGSAPI_KEY"