/api/v4/locations/{locationId}/review-analytics-sites-statsGet review analytics by site
Returns a per-source breakdown of review volume, rating, and recency for one location.
Parameters
Path
| Name | Type | Required | Description |
|---|---|---|---|
| locationId | string | required | Location ID, a raw numeric database ID (e.g. `1800289`) or its Base64-encoded Relay ID (e.g. `TG9jYXRpb246MTgwMDI4OQ==`). |
Query
| Name | Type | Required | Description | Default |
|---|---|---|---|---|
| startDate | string | optional | Start of the comparison period (`YYYY-MM-DD`). The `delta` fields compare this period against the previous equivalent one. | — |
| endDate | string | optional | End of the comparison period (`YYYY-MM-DD`). | — |
Responses
200One entry per review source configured for the location. Response key `interactionsSitesStats`.
{ "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", "baseRating": 4.5, "baseInteractions": 388, "humanizedRecency": "3 days ago" }, { "key": "facebook", "siteUrl": "facebook.com", "averageRating": { "value": 4.1, "delta": -1.4 }, "totalInteractions": { "value": 57, "delta": 0 }, "newInteractions": { "value": 0, "delta": -100 }, "recency": null, "baseRating": 4.16, "baseInteractions": 57, "humanizedRecency": null } ] } }}401Unauthenticated, missing or invalid API key.
403The key is valid but not permitted to read this location (`SY90003`).
Splits a location's review performance by source, so you can see which platform is driving a change. It is the per-site sibling of Get interaction analytics (overall KPIs) and Get the review analytics timeline (daily series).
Each entry in stats describes one review source:
key/siteUrl: the source's short key and its site URL.siteUrlmatchessiteSettings[].namefrom List review sources for a location.averageRating,totalInteractions,newInteractions: each an object with avaluefor the requested period and adelta, the percentage change against the previous equivalent period.baseRating/baseInteractions: the corresponding values at the start of the period, which is what thedeltais measured from.recency: timestamp of the most recent review from that source,nullwhen the source has never returned one.humanizedRecency: the same instant rendered for display ("3 days ago").
Use case: finding which platform moved the average
When a location's overall rating drops, this route says where. Read averageRating.delta per source: a single negative outlier alongside flat siblings points at one platform, while a broadly negative set points at the store. newInteractions.value of 0 on a source whose recency is months old usually means the connection has gone stale rather than that customers stopped reviewing, so cross-check with List review sources for a location.
The response example above is constructed from the upstream
InteractionsSitesStats/SiteStat/DeltaStatGraphQL types, not captured from a live call.
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/review-analytics-sites-stats' \ -H "Authorization: API $LISTINGSAPI_KEY"