/api/v4/locations/{locationId}/postsBeiträge für einen Standort abrufen
Gibt eine Seite mit Social-Media-Beitragskampagnen (Ankündigungen, Veranstaltungen, Angebote) zurück, die auf einen einzelnen Standort ausgerichtet sind.
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. Must not exceed 50. | 10 |
Antworten
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.
Verwenden Sie diesen Endpunkt, um den Beitragsverlauf für eine einzelne Filiale abzurufen: jede Ankündigungs-, Veranstaltungs- und Angebotskampagne, die den Standort einschließt, jeweils mit status zum Lebenszyklus und Interaktionszählern pro Beitrag (views, clicks, reactions).
Anwendungsfall: Prüfung vor einer Kampagne. Bevor Sie einen neuen Google-Beitrag für Jenny Home planen, rufen Sie GET /locations/TG9jYXRpb246MTgwMDI4OQ==/posts auf, um zu sehen, was bereits veröffentlicht ist, welche Beiträge noch SCHEDULED sind und wie die letzte Ankündigung abgeschnitten hat. Lesen Sie type in jedem Datensatz, um die Angebote zu erkennen; dieser Endpunkt bietet keinen serverseitigen Typfilter.
Stolperfallen.
- Die einzigen Argumente, die dieser Endpunkt akzeptiert, sind
pageundperPage. Hier gibt es keinen Parameterfilters,sortFields,locationIdsodercomponentIdentifier(diese gehören zum bulk-posts-Endpunkt); wenn Sie einen davon übermitteln, wird er ignoriert statt abgelehnt. Filtern und sortieren Sie die zurückgegebenenrecordsin Ihrem eigenen Code. tagwird auf dieser Route grundsätzlich mittag is not a supported parameter for this queryabgelehnt. Verwenden Sie den bulk-posts-Endpunkt, wenn Sie anhand eines Tags eine Gruppe von Standorten ermitteln müssen.perPageist auf 50 begrenzt; ein größerer Wert führt zum Fehlerper_page must not exceed 50.- Übergeben Sie
locationIdals Base64-Cursor (e.g.TG9jYXRpb246MTgwMDI4OQ==) genau so, wie er von den Listen-/Suchendpunkten zurückgegeben wird, und kodieren Sie ihn nicht für URLs. - Die Paginierung ist offsetbasiert: Verwenden Sie
pageundperPage(Standardwert 10) und lesen SiepageInfo.totalPages/pageInfo.totalRecords, um zu erkennen, wann Sie aufhören müssen. - Anhaltendes Polling kann das Ratenlimit des Kontos erreichen (HTTP 429); beachten Sie den Header
Retry-After.
Das Array records im obigen Beispiel ist repräsentativ. Der als Ausgangsdatensatz dienende Live-Standort (Jenny Home) hat derzeit keine Social-Media-Beiträge, daher gibt ein tatsächlicher Aufruf records: [] mit pageInfo.totalRecords: 0 zurück.
Verwandte Funktionen: Erstellen Sie Beiträge mit POST /posts, rufen Sie eine einzelne Kampagne mit GET /posts/{postId} ab oder listen Sie Sammelkampagnen (für mehrere Standorte) mit GET /locations/{locationId}/bulk-posts auf, wobei dieser Endpunkt filters und sortFields akzeptiert und die Ergebnisse unter rollupSocialPosts zurückgibt.
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/posts' \ -H "Authorization: API $LISTINGSAPI_KEY"