Eintragsstatus prüfen und Live-Links abrufen
Prüfen Sie je Standort Plattform-Sync und Sprachassistenten, sammeln Sie Live-URLs und fassen Sie die Abdeckung zusammen. Webhooks statt Polling.
Sobald ein Standort existiert, wird automatisch ein Eintrag pro Plattform in Ihrem Tarif eingereicht. Diese Anleitung zeigt Ihnen, wie Sie den aktuellen Status jedes Eintrags auslesen, die URLs der veröffentlichten Einträge abrufen und die wiederholten Abfragen beenden, sobald Webhooks eingerichtet sind.
1. Premium-Einträge für einen Standort abrufen
GET /locations/{locationId}/listings/premium gibt einen Datensatz pro Premium-Plattform im Tarif zurück. Das Ergebnis ist ein einfaches Array, keine paginierte Liste. Die zugehörige Route /listings/additional gibt die kostenlosen Verzeichnisse in derselben Struktur zurück; es gibt keinen Abfrageparameter listingType.
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY"{ "data": { "listingsForLocation": [ { "site": { "name": "Google Maps", "url": "maps.google.com" }, "syncStatus": "REQUIRING_ACTION", "displayStatus": "Connect your account to sync the listing", "actionRequired": true, "listingUrl": null, "syncIssue": null, "lastUpdate": "2026-07-06T18:33:28Z" }, { "site": { "name": "BeLocalFocussed", "url": "belocalfocussed.com" }, "syncStatus": "SYNCED", "displayStatus": "Synced", "actionRequired": false, "listingUrl": "https://belocalfocussed.com/jenny-home-26x0ffkd0e", "syncIssue": null, "lastUpdate": "2026-07-06T18:33:30Z" } ] }}Jede Zeile verknüpft site mit einem maschinenlesbaren syncStatus und einem menschenlesbaren displayStatus. lastUpdate gibt an, wann die Zeile zuletzt geändert wurde, was dabei hilft, eine ins Stocken geratene Einreichung zu erkennen.
2. Status jeder Plattform auslesen
syncStatus ist das Feld, anhand dessen Sie Ihre Verarbeitungslogik verzweigen. displayStatus ist der Text, den Sie einer Person anzeigen, und syncIssue enthält die Begründung der Plattform, sofern eine vorliegt.
Google Maps und Facebook bleiben bei REQUIRING_ACTION, bis das Konto der jeweiligen Plattform verbunden ist: ein Google Business Profile für Google Maps und eine Facebook-Seite für Facebook. Das ist bei einem neuen Standort zu erwarten und kein Fehler.
Apple Maps erfordert keine Verbindung. Wenn der Inhaber kein verifiziertes Apple Business-Organisationskonto verbunden hat, reicht ListingsAPI den Standort über sein eigenes Apple Business Connect-Konto ein, und Apple prüft die Einreichung vor der Veröffentlichung. Siehe Apple Business Connect verbinden.
3. Links zu veröffentlichten Einträgen sammeln
listingUrl ist nur in Zeilen mit veröffentlichten Einträgen gesetzt. Filtern Sie nach SYNCED (und COMPLETED) und speichern Sie die URL zusammen mit dem Namen der Website, damit Sie eine Liste mit Links zum Anzeigen der veröffentlichten Einträge darstellen oder die URL Ihrem eigenen Datensatz zuordnen können.
curl -s https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY" \| jq '[.data.listingsForLocation[] | select(.listingUrl != null) | {site: .site.name, url: .listingUrl}]'Eine Zeile mit SYNCED, bei der listingUrl den Wert null hat, kommt durchaus vor: Manche Verzeichnisse stellen keine öffentliche Seiten-URL bereit. Betrachten Sie den Status als maßgeblich und den Link als optional.
4. Eine Übersicht zur Abdeckung erstellen
Wenn Sie die Zeilen nach syncStatus zählen, erhalten Sie für jeden Standort eine kompakte Statusübersicht: auf wie vielen Plattformen die Einträge veröffentlicht sind, bei wie vielen sie noch in Bearbeitung sind und bei wie vielen sie blockiert sind. Diese Kennzahl eignet sich für ein Dashboard.
curl -s https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY" \| jq '.data.listingsForLocation | group_by(.syncStatus) | map({status: .[0].syncStatus, count: length})'Führen Sie dies für viele Standorte aus, indem Sie GET /locations seitenweise abrufen und den Premium-Endpunkt einmal pro Standort aufrufen. Jeder Aufruf zählt gegen Ihr Ratenlimit. Lassen Sie daher zwischen den Aufrufen eine Pause und beachten Sie Retry-After bei 429. Fehler bei Einträgen finden und beheben zeigt diese Schleife als Durchlauf über alle Standorte innerhalb eines Kontos.
5. Sprachassistenten prüfen
Sprachassistenten (Google Assistant, Alexa, Siri, Cortana, Bixby) haben einen eigenen Endpunkt, GET /locations/{locationId}/voice-assistants, mit einer kleineren Auswahl an Statuswerten. Google Assistant hängt von der Google-Verbindung ab, daher besteht bei einem Standort ohne diese Verbindung auch hier Handlungsbedarf. Die Ergebnisse für Siri stammen aus dem Apple Maps-Eintrag des Standorts.
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/voice-assistants \-H "Authorization: API $LISTINGSAPI_KEY"{ "data": { "voiceAssistantsForLocation": [ { "voiceIdentifier": "GOOGLE_ASSISTANT", "name": "Google Assistant", "syncStatus": "REQUIRING_ACTION", "actionRequired": true, "syncIssue": null, "errors": [] }, { "voiceIdentifier": "SIRI", "name": "Siri", "syncStatus": "IN_PROGRESS", "actionRequired": false, "syncIssue": null, "errors": [] } ] }}Für einen Sprachassistenten gibt es keinen Live-Link; LIVE ist der Endzustand.
6. Webhook-Ereignisse statt Polling empfangen
Wenn Sie unter /dashboard/webhooks eine Webhook-URL konfiguriert haben, wird das Ereignis listing.submission jedes Mal ausgelöst, wenn eine Übermittlung an eine Plattform für einen Standort einen Endzustand erreicht. Es enthält status (success, incomplete oder canceled), die Website und im Erfolgsfall live_link, also dieselbe URL, die Sie in Schritt 3 erfasst haben.
import base64 def handle(payload: dict) -> None: if payload["event"] != "listing.submission": return data = payload["data"] # "TG9jYXRpb246Mjc5Mzgx" -> "Location:279381" global_id = base64.b64decode(data["location_id"]).decode() database_id = int(global_id.split(":")[1]) site = data["site"]["name"] status = payload["status"] if status == "success": live_link = payload.get("live_link") save_live_link(database_id, site, live_link) elif status == "incomplete": flag_for_review(database_id, site, payload.get("error_message"))Antworten Sie innerhalb von 5 Sekunden mit 200 und führen Sie die Verarbeitung anschließend durch; es gibt keine Wiederholungsversuche. Das Grundgerüst für den Empfänger und die Signaturprüfung finden Sie unter Mit Webhooks auf Ereignisse reagieren.
Nächste Schritte
- Fehler in Einträgen finden und beheben: Leiten Sie aus Zeilen mit
REQUIRING_ACTIONundFAILEDdie nötigen Korrekturen ab. - Google verbinden und Standorte importieren: Verbinden Sie das Google Business Profile, das Google Maps und Google Assistant verwenden.
- Apple Business Connect verbinden: Veröffentlichen Sie Einträge auf Apple Maps über das verifizierte Apple Business-Konto des Inhabers.
- Doppelte Einträge finden und unterdrücken: die andere Hälfte der Eintragsqualität.
- Referenz: Premium-Einträge abrufen, Einträge für Sprachassistenten abrufen, Ereignisreferenz.