Beiträge
Veröffentlichen Sie Ankündigungen, Veranstaltungen und Angebote auf Google und Facebook mit dem listingsapi-js SDK.
Die Methoden für Beiträge veröffentlichen Inhalte auf Google Business Profile und Facebook. Anschließend können Sie den Veröffentlichungsstatus und die Analysedaten für jede Plattform überwachen. Alle Methoden für Beiträge sind direkt auf der Client-Instanz ListingsAPI verfügbar.
Die Veröffentlichung erfolgt asynchron: Aufrufe zum Erstellen geben status: 'INPROGRESS' zurück, und der Beitrag wird im Hintergrund veröffentlicht. Fragen Sie fetchPost wiederholt ab, bis der Status SUCCESS ist, und prüfen Sie publishDetails[].submissionError auf Fehler bei einzelnen Plattformen.
bulkPublish
Veröffentlichen Sie mit einem einzigen Aufruf einen Beitrag auf Google und Facebook für mehrere Standorte. sites verwendet standardmäßig beide Plattformen. Die Nachricht (oder die Zuordnung pro Plattform) wird in einen Eintrag pro Plattform aufgelöst, Standort-IDs werden automatisch kodiert, und die Nutzdaten werden vor jedem Netzwerkaufruf clientseitig validiert (bei ungültigen Nutzdaten wird sofort ValidationError ausgelöst).
const result = await client.bulkPublish({name: 'Holiday hours',locationIds: [16808, 16809, 16810],message: 'Open until 10pm through the holidays!',mediaUrl: 'https://cdn.example.com/holiday.jpg',ctaType: 'LEARN_MORE',ctaUrl: 'https://example.com/holiday-hours',});console.log(result.socialPost.id, result.socialPost.status); // INPROGRESS, publishes asyncÜbergeben Sie für plattformspezifische Texte ein Objekt als message:
await client.bulkPublish({name: 'Holiday hours',locationIds: [16808, 16809],message: { GOOGLE: 'Open until 10pm through the holidays. Book online!', FACEBOOK: 'We are staying open late for the holidays. See you soon!',},});Optionen
createAnnouncement
Erstellen Sie einen ANNOUNCEMENT-Beitrag: eine einfache Nachricht mit optionalem CTA und optionalen Medien. Die Methode akzeptiert dieselben Optionen wie bulkPublish mit Ausnahme von postType und contextInfo; hier ist der Standardwert für sites ['GOOGLE'].
await client.createAnnouncement({name: 'Grand Opening',locationIds: [16808],message: 'Acme Dental is now open in the Mission!',sites: ['GOOGLE'],ctaType: 'LEARN_MORE',ctaUrl: 'https://example.com/opening',});createEvent
Erstellen Sie einen EVENT-Beitrag mit einem Titel und einem Zeitraum mit Beginn und Ende. title ist erforderlich (Google verlangt diese Angabe); startDay und endDay sind Datumsangaben im Format YYYY-MM-DD, und startTime/endTime sind optionale Uhrzeiten zur Anzeige. Der Standardwert für sites ist ['GOOGLE'].
await client.createEvent({name: 'Live music',locationIds: [16808],message: 'Join us Friday for live jazz!',title: 'Jazz Night',startDay: '2026-08-01',endDay: '2026-08-01',startTime: '7:00pm',endTime: '10:00pm',});createOffer
Erstellen Sie einen OFFER-Beitrag mit einem Gutschein, einem Rabatt und Bedingungen. title ist erforderlich; alle anderen Angebotsfelder sind optional. Der Standardwert für sites ist ['GOOGLE'].
await client.createOffer({name: 'Summer sale',locationIds: [16808],message: '20% off whitening all week!',title: 'Summer Sale',couponCode: 'SUMMER20',discount: '20%',redeemUrl: 'https://example.com/sale',termsConditions: 'One per customer.',startDay: '2026-08-01',endDay: '2026-08-07',});Angebotsoptionen
createPost
Erstellen Sie einen Beitrag aus einem unverarbeiteten Anfragetext mit nicht verschachtelten Feldern, ohne clientseitige Validierung. Die Methode bettet Ihre übergebenen Daten in das von der API benötigte input-Objekt ein, sodass der übertragene Anfragetext {"input": {...}} lautet; ein vollständig unverschachtelter Anfragetext wird mit dem HTTP-Status 400 abgelehnt. Verwenden Sie vorzugsweise createAnnouncement, createEvent oder createOffer, die diesen Anfragetext für Sie erstellen und validieren.
await client.createPost({postName: 'Grand Opening',locationIds: ['TG9jYXRpb246MTY4MDg='],postType: 'ANNOUNCEMENT',postSites: ['GOOGLE'],postMessage: [{ site: 'GOOGLE', message: 'We are now open!' }],});fetchPost
Rufen Sie einen Beitrag mit seinem Inhalt, dem Veröffentlichungsstatus pro Plattform und den Analysedaten ab. Verwenden Sie diese Methode, um einen INPROGRESS-Beitrag wiederholt abzufragen, bis er veröffentlicht ist.
let post = await client.fetchPost('U29jaWFsUG9zdDo0NDEyMg=='); while (post.status === 'INPROGRESS') {await new Promise((resolve) => setTimeout(resolve, 5000));post = await client.fetchPost('U29jaWFsUG9zdDo0NDEyMg==');} for (const detail of post.publishDetails ?? []) {if (detail.submissionError) { console.log('failed:', detail.submissionError);}}deletePost
Löschen Sie einen Beitrag und entfernen Sie ihn von allen Plattformen, auf denen er veröffentlicht wurde.
await client.deletePost('U29jaWFsUG9zdDo0NDEyMg==');fetchLocationPosts
Listen Sie Beitragskampagnen auf, die auf einen Standort ausgerichtet sind. Die Methode verwendet Offset-Paginierung (page und perPage) und liefert nach Abschluss postsByLocation.
Diese Route lehnt tag ab, daher akzeptiert das SDK die Option seit Version 0.3.2 aus Gründen der Abwärtskompatibilität, überträgt sie aber nie. Verwenden Sie fetchLocationBulkPosts, wenn Sie nach Tags filtern müssen.
const posts = await client.fetchLocationPosts(16808, { page: 1, perPage: 10 });Optionen
fetchBulkPost
Rufen Sie eine Sammelkampagne mit Veröffentlichungsstatus und Analysedaten pro Standort ab.
const bulk = await client.fetchBulkPost('QnVsa1Bvc3Q6OTk=');fetchLocationBulkPosts
Listen Sie Sammelkampagnen (für mehrere Standorte) auf, die einen Standort einschließen. Die Methode akzeptiert dieselben Optionen wie fetchLocationPosts.
const campaigns = await client.fetchLocationBulkPosts(16808, { page: 1, perPage: 10 });Weiterführende Ressourcen
- Standorte, Standort-IDs nachschlagen
- Fehlerbehandlung,
ValidationErrorund Fehlercodes der Plattformen