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

Obtener publicaciones masivas para una ubicación

Devuelve una página de campañas de publicaciones masivas (para varias ubicaciones) que incluyen una ubicación concreta.

Requiere una clave de API. Consulta Autenticación para conocer el formato del encabezado y la rotación de claves.

Parámetros

Ruta

NombreTipoObligatorioDescripción
locationIdstringobligatorioBase64-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.

Consulta

NombreTipoObligatorioDescripciónPredeterminado
pageintegeropcional1-based page number for offset pagination.1
perPageintegeropcionalNumber of records per page.—
filtersstringopcionalJSON-encoded SocialPostFiltersInput (e.g. by `type`, `status`, `creationDateRange`, `siteUrls`).—
sortFieldsstringopcionalJSON-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.—
locationIdsstringopcionalJSON-encoded array of location IDs to include alongside the path location.—
componentIdentifierstringopcionalFilter to campaigns created by a specific component/integration.—

Respuestas

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.

Una publicación masiva es una campaña publicada en muchas ubicaciones a la vez (creada mediante POST /bulk-posts). Este endpoint enumera las campañas masivas que incluyen la ubicación indicada, para que puedas ver resúmenes de varias tiendas desde la perspectiva de una sola tienda. La estructura de la respuesta es idéntica a la de GET /locations/{locationId}/posts; los registros aquí simplemente abarcan varios locationIds.

Caso de uso: conciliar un despliegue en toda una cadena. Después de lanzar una "Oferta de Diwali" en todas las tiendas, llama a GET /locations/1800289/bulk-posts desde cualquier tienda para confirmar que la campaña llegó a ella, inspeccionar el contextInfo compartido (código de cupón, descuento, condiciones) y leer el publishDetails por sitio para detectar un FACEBOOK submissionError en esa ubicación.

Aspectos que debes tener en cuenta.

  • Al igual que en la lista de una sola ubicación: la paginación se basa en desplazamientos mediante page/perPage, sortFields es un único objeto (no un array) y el sondeo intensivo puede devolver HTTP 429.
  • locationIds en cada registro es el conjunto completo al que se dirigió la campaña, por lo que contendrá IDs adicionales al que figura en la ruta.

El array records anterior es representativo. La ubicación precargada en el entorno real (Jenny Home) no tiene campañas masivas, por lo que una llamada real devuelve records: [] con pageInfo.totalRecords: 0.

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