Документация API v2. Версия заморожена и продолжает работать; актуальная — на главной. Что изменилось: переход с v2 на v3.
Аналитика

Динамика по периодам

Доступ для AI:

Те же метрики, что и в сводке, разложенные по дням, неделям или месяцам.

Ряд начинается с первого целого интервала. При шаге в месяц и published_from=2026-05-06 май в ряд не попадёт совсем – чтобы увидеть его, начните период с первого числа.

GET
/v2/analytics/timeseries

Параметры

folder_idчисло

Папка целиком: все её объекты и подпапки. Вместе с group_id не передаётся.

group_idчисло

Объект, по которой строить ряд.

source_idsсписок чиселпо умолчанию пусто

Отдельный ряд на каждую из этих площадок. По умолчанию 0: общий ряд по всем.

granularityстрокаday / week / monthпо умолчанию «month»

Шаг ряда: по дням, неделям или месяцам.

published_fromдата

Начало периода по дате публикации отзыва. По умолчанию 90 дней назад.

published_toдата

Конец периода по дате публикации. По умолчанию сегодня.

min_ratingчисло0–5по умолчанию 1

Учитывать отзывы с оценкой не ниже указанной.

max_ratingчисло1–5по умолчанию 5

Учитывать отзывы с оценкой не выше указанной.

Ответ

seriesсписок объектов

Ряды, по одному на каждую запрошенную площадку.

series[].source_idчисло

Площадка ряда. 0 – общий ряд по всем площадкам.

series[].source_nameстрока

Название площадки. У общего ряда это «Все источники».

series[].timeseriesсписок объектов

Точки ряда по возрастанию времени.

series[].timeseries[].periodстрока

Метка интервала: 2026-08-04 для дня, 2026-W32 для недели, 2026-08 для месяца.

series[].timeseries[].review_countчисло

Сколько отзывов пришло за интервал.

series[].timeseries[].avg_ratingчисломожет быть пустым

Средняя оценка за интервал.

series[].timeseries[].reply_countчисломожет быть пустым

Сколько отзывов получили ответ организации.

series[].timeseries[].rating_distributionобъектможет быть пустым

Распределение отзывов интервала по оценкам.

accessобъектможет быть пустым

Ограничение выдачи. Присутствует только когда пробному доступу показали не всё — у обычного клиента ключа нет. Пробный срез применяется ДО подсчёта, поэтому без этого поля урезанные числа выглядят полными.

access.reasonстрока

Почему выдача ограничена. trial — пробный доступ.

access.limit_per_linkчисло

Сколько последних отзывов показывается по КАЖДОЙ ссылке (площадке объекта). Ограничение на ссылку, не на аккаунт и не на группу.

access.hidden_totalчисло

Сколько отзывов уже собрано сверх показанных. Считается по всему архиву и НЕ зависит от фильтров запроса.

access.messageстрока

Готовая формулировка на английском. Для интерфейса на другом языке стройте текст по числам выше.

Ещё 12 полей – реже нужны
metaобъект

Что именно посчитано: фильтры в том виде, в котором применились.

meta.group_idчисломожет быть пустым

Объект, по которой посчитано. В папочном режиме пусто.

meta.folder_idчисломожет быть пустым

Папка, если считали по папке.

meta.group_idsсписок чисел

Все объекты, попавшие в расчёт.

meta.published_fromдата

Начало периода, которое применилось.

meta.published_toдата

Конец периода, который применился.

meta.source_idsсписок чисел

Площадки, которые применились.

meta.generated_atдата и время

Когда посчитано.

meta.granularityстрока

Шаг ряда, который применился.

series[].timeseries[].reviews_with_textчисломожет быть пустым

Сколько отзывов с текстом.

series[].timeseries[].reviews_with_imagesчисломожет быть пустым

Сколько отзывов с фотографиями.

series[].timeseries[].reply_distributionобъектможет быть пустым

Распределение ответов организации по оценке отзыва.

curl -X GET "https://example.com/v2/analytics/timeseries"
{  "meta": {    "group_id": 20,    "folder_id": null,    "group_ids": [      20    ],    "published_from": "2026-05-06",    "published_to": "2026-08-04",    "source_ids": [      0    ],    "generated_at": "2026-08-04T06:28:19.928463Z",    "granularity": "month"  },  "series": [    {      "source_id": 0,      "source_name": "Все источники",      "timeseries": [        {          "period": "2026-06",          "review_count": 88,          "avg_rating": 4.28,          "reviews_with_text": 73,          "reviews_with_images": 11,          "reply_count": 48,          "rating_distribution": {            "1": 4,            "2": 3,            "3": 16,            "4": 20,            "5": 45          },          "reply_distribution": {            "1": 3,            "2": 2,            "3": 6,            "4": 7,            "5": 30          }        },        {          "period": "2026-07",          "review_count": 70,          "avg_rating": 4.45,          "reviews_with_text": 54,          "reviews_with_images": 13,          "reply_count": 31,          "rating_distribution": {            "1": 5,            "2": 1,            "3": 5,            "4": 13,            "5": 46          },          "reply_distribution": {            "1": 0,            "2": 0,            "3": 2,            "4": 6,            "5": 23          }        },        {          "period": "2026-08",          "review_count": 12,          "avg_rating": 4.95,          "reviews_with_text": 12,          "reviews_with_images": 1,          "reply_count": 0,          "rating_distribution": {            "1": 0,            "2": 0,            "3": 0,            "4": 1,            "5": 11          },          "reply_distribution": {            "1": 0,            "2": 0,            "3": 0,            "4": 0,            "5": 0          }        }      ]    }  ]}

Коды ошибок общие для всего API и описаны на странице Ошибки.