/api/v4/locations/{locationId}/review-analytics-timelineGet the review analytics timeline
Returns a daily time series of review volume and average rating 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 | First day of the series (`YYYY-MM-DD`). Omitting it lets the service pick its default window, so pass it whenever the chart's range matters. | — |
| endDate | string | optional | Last day of the series (`YYYY-MM-DD`). | — |
| site | string | optional | Restrict the series to a single review source, by site URL (e.g. `maps.google.com`). Omit for all sources combined. | — |
Responses
200One entry per day in the requested range. Response key `interactionsChartData`.
{ "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 } ] } }}401Unauthenticated, missing or invalid API key.
403The key is valid but not permitted to read this location (`SY90003`).
Returns the day-by-day review series behind a trend chart: how many reviews arrived on each date, and the average star rating of those reviews. It is the timeline sibling of Get interaction analytics (overall KPIs) and Get review analytics by site (per-source breakdown).
Each entry carries three fields:
date: the calendar day, asYYYY-MM-DD.interactionCount: reviews received that day.averageRating: mean star rating of that day's reviews,nullon a day with no reviews. It is the daily average, not a running one, so a single 1-star review on a quiet day shows as1.0even for a well-rated store.
Use case: a 30-day sparkline
To draw a 30-day trend under a location's star average, call this route with startDate and endDate covering the window and plot interactionCount as bars with averageRating as a line. Pair it with the overview route for the headline numbers; the overview's delta fields already compare against the previous equivalent period, so you do not need to fetch two windows yourself.
Pass site to split the series by source, for example to show that a rating dip came from one platform rather than across the board. The value is the site URL as it appears in siteSettings[].name from List review sources for a location.
The response example above is constructed from the upstream
InteractionsChartData/ChartDataGraphQL types, not captured from a live call.
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/review-analytics-timeline' \ -H "Authorization: API $LISTINGSAPI_KEY"