Bewertungskennzahlen messen

Sehen Sie Bewertungs-KPIs je Standort, Tagesdiagramme, Quellenvergleiche und häufige Phrasen; erhalten Sie Tages- und Wochensnapshots per Webhook.

Drei zusammengehörige Endpunkte beschreiben die Bewertungen eines Standorts anhand von Zahlen: eine Übersicht der Kennzahlen, ein täglicher Verlauf und eine Aufschlüsselung nach Quelle. Ein vierter listet die Formulierungen auf, die Kunden wiederholt verwenden. Zusammen reichen sie für eine Kennzahlenkachel, ein Trenddiagramm und eine Beschwerdeübersicht aus.

1. Kennzahlen für einen Standort auslesen

GET /locations/{locationId}/review-analytics-overview gibt unter data.interactionsAnalyticsStats.stats vier Kennzahlen zurück. Der Datumsbereich ist hier optional; er grenzt den Zeitraum ein, über den die Werte und Veränderungen berechnet werden.

Overview
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/review-analytics-overview?startDate=2026-08-01&endDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "interactionsAnalyticsStats": {      "stats": [        { "name": "total-reviews", "value": 128, "delta": 6.67 },        { "name": "new-reviews", "value": 9, "delta": -25 },        { "name": "overall-rating", "value": 4.43, "delta": 2.31 },        { "name": "review-response-rate", "value": 62.5, "delta": 12.5 }      ]    }  }}
namevalueBedeutung
total-reviewsAnzahlAlle Bewertungen für den Standort.
new-reviewsAnzahlIm Zeitraum eingegangene Bewertungen.
overall-rating1 bis 5Durchschnittliche Sternebewertung.
review-response-rateProzentAnteil der Bewertungen mit einer Antwort des Inhabers.

Bei einem neuen Konto ohne vorherigen Zeitraum wird für delta der Wert 100 gemeldet. Interpretieren Sie daher die Veränderungen des ersten Monats nicht als Wachstum.

2. Den täglichen Verlauf für ein Diagramm abrufen

GET .../review-analytics-timeline gibt unter data.interactionsChartData.data einen Eintrag pro Tag zurück. Übergeben Sie immer startDate und endDate, andernfalls legt der Dienst den Zeitraum selbst fest. Fügen Sie site hinzu (einen Hostnamen wie maps.google.com), um eine einzelne Quelle separat darzustellen.

Timeline
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/review-analytics-timeline?startDate=2026-08-01&endDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "interactionsChartData": {      "data": [        { "date": "2026-08-01", "interactionCount": 4, "averageRating": 4.5 },        { "date": "2026-08-02", "interactionCount": 0, "averageRating": null },        { "date": "2026-08-03", "interactionCount": 7, "averageRating": 4.285714285714286 }      ]    }  }}

Stellen Sie interactionCount als Balken und averageRating als Linie dar. averageRating ist der Durchschnitt des jeweiligen Tages, kein gleitender Durchschnitt, und hat an Tagen ohne Bewertungen den Wert null. Lassen Sie daher eine Lücke, anstatt eine Null darzustellen.

3. Nach Quelle aufschlüsseln

GET .../review-analytics-sites-stats gibt unter data.interactionsSitesStats.stats einen Eintrag pro Bewertungsquelle zurück. So erkennen Sie, welche Plattform den Durchschnitt verändert hat.

By source
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/review-analytics-sites-stats?startDate=2026-08-01&endDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "interactionsSitesStats": {      "stats": [        {          "key": "google",          "siteUrl": "maps.google.com",          "averageRating": { "value": 4.6, "delta": 2.2 },          "totalInteractions": { "value": 412, "delta": 6.1 },          "newInteractions": { "value": 24, "delta": 33.3 },          "recency": "2026-09-06T14:12:00Z",          "humanizedRecency": "3 days ago"        },        {          "key": "facebook",          "siteUrl": "facebook.com",          "averageRating": { "value": 4.1, "delta": -1.4 },          "newInteractions": { "value": 0, "delta": -100 },          "recency": null,          "humanizedRecency": null        }      ]    }  }}

averageRating, totalInteractions und newInteractions enthalten jeweils einen Wert für value und einen für delta. Ein negativer Wert für averageRating.delta bei ansonsten unveränderten Werten der anderen Quellen deutet auf eine Plattform hin; sind alle negativ, deutet das auf das Geschäft hin. Ein Wert von 0 für newInteractions bei einem Monate zurückliegenden recency bedeutet in der Regel, dass die Verbindung zur Quelle nicht mehr aktuell ist. Prüfen Sie daher Bewertungsquellen für einen Standort auflisten und fügen Sie die Quelle über Bewertungseinstellungen bearbeiten erneut hinzu, falls sie fehlt.

4. Von Kunden verwendete Formulierungen finden

GET /review-phrases gibt unter data.newReviewPhrases ein einfaches Array zurück, mit einem Eintrag pro wiederkehrender Formulierung und derselben Kennzahlenstruktur wie in der Übersicht, wobei nur die Bewertungen berücksichtigt werden, die diese Formulierung enthalten. Fügen Sie ratingFilters=[1,2] für eine Beschwerdeübersicht hinzu. locationIds und ratingFilters sind JSON-Arrays im Query-String und müssen daher URL-kodiert sein; die SDKs übernehmen das für Sie.

Phrases
curl -G "https://listingsapi.com/api/v4/review-phrases" \-H "Authorization: API $LISTINGSAPI_KEY" \--data-urlencode 'locationIds=[1800289]' \--data-urlencode 'ratingFilters=[1,2]' \--data-urlencode 'startDate=2026-06-01' \--data-urlencode 'endDate=2026-08-31' \--data-urlencode 'phraseCount=10'
JSON
{  "data": {    "newReviewPhrases": [      {        "reviewPhrase": "long wait",        "phraseStats": {          "stats": [            { "name": "total-reviews", "value": 11, "delta": 37.5, "abs": 3 },            { "name": "overall-rating", "value": 2.9, "delta": -8.4, "abs": -0.27 }          ]        }      }    ]  }}

total-reviews gibt an, wie oft die Formulierung vorkommt, overall-rating zeigt, ob diese Bewertungen Zufriedenheit ausdrücken, und delta zeigt, ob sich die Situation verschlechtert. abs ist die absolute Veränderung zusätzlich zur prozentualen Veränderung. Die SDK-Methoden für Formulierungen stellen ratingFilters und phraseCount nicht bereit. Verwenden Sie daher den REST-Aufruf, wenn Sie diese benötigen.

5. Tägliche und wöchentliche Momentaufnahmen per Webhook empfangen

Wenn eine Webhook-URL konfiguriert ist, werden review_analytics.daily_snapshot und review_analytics.weekly_snapshot einmal pro Standort und Zeitraum ausgelöst. Interpretieren Sie jedes dieser Ereignisse wie das Ergebnis des Übersichts-Endpunkts für einen festen Zeitraum: total_reviews entspricht total-reviews, new_reviews_in_period entspricht new-reviews und average_rating entspricht overall-rating für diesen Zeitraum, mit previous_average_rating für den vorherigen. Die Antwortrate, der Verlauf und die Aufschlüsselung nach Quelle sind nicht in der Payload enthalten; rufen Sie bei Eingang des Ereignisses die oben genannten Endpunkte auf, wenn Sie diese Daten benötigen.

JSON
{  "event": "review_analytics.weekly_snapshot",  "timestamp": "2026-08-24T02:00:00Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "period": "2026-08-17",    "granularity": "weekly",    "total_reviews": 1237,    "new_reviews_in_period": 18,    "average_rating": 4.6123,    "previous_average_rating": 4.5901  }}

Die Anzahl dieser Ereignisse skaliert mit Ihrer Standortanzahl: 400 Standorte bedeuten 400 tägliche Ereignisse auf einmal, und Ereignisse oberhalb des Minutenlimits Ihres Tarifs werden verworfen und nicht in eine Warteschlange gestellt. Eine fehlende Momentaufnahme ist daher nicht eindeutig zu interpretieren. Erfassen Sie dafür niemals eine Null; lesen Sie stattdessen die Übersicht für diesen Zeitraum erneut aus. Die Einrichtung ist unter Mit Webhooks auf Ereignisse reagieren beschrieben.

Nächste Schritte