Выгрузка отзывов через API Ozon: какие методы, что даёт Premium Plus и как считать

Какие методы Seller API отдают отзывы, ответы и счётчики, почему без Premium Plus они возвращают отказ по доступу, как устроена постраничная выгрузка через last_id и какие метрики считать на выгруженном массиве, чтобы находить причины негатива и возвратов.

Пока отзывов сотня, их читают глазами в кабинете. На тысяче это перестаёт работать: рейтинг просел на десятую, а какой товар и какая формулировка его уронили — непонятно, и выяснять приходится скроллом. Ответ — выгрузить весь массив к себе и считать по нему. Seller API это умеет, но с двумя подвохами: отзывные методы закрыты подпиской Premium Plus, а пагинация у них не такая, как у остальных разделов. Ниже — какие методы что отдают, как собрать первую полную выгрузку и что на ней считать.

Что отдаёт API отзывов, а что придётся считать самому

API возвращает сырьё: идентификатор отзыва, SKU, текст, оценку от 1 до 5, дату публикации, статус обработки, счётчики фотографий, видео и комментариев. Этого достаточно, чтобы построить у себя всё, что показывает кабинет, и гораздо больше.

Чего в отзывных методах нет: средней оценки товара в динамике, разбивки негатива по причинам, связки отзыва с заказом и возвратом. Динамику вы считаете сами по датам публикации, причины — разметкой текстов, а связку с возвратами строите через SKU и собственные отчёты по отправлениям. Номера заказа в отзыве нет — виден только статус заказа, по которому отзыв оставлен. Здесь и спотыкаются все, кто впервые пробует посчитать, во сколько рублей обходится один негатив.

Отдельная путаница — с рейтингом. Метод /v1/product/rating-by-sku отдаёт контент-рейтинг карточки: насколько заполнены характеристики, хватает ли фото и описания. К оценкам покупателей он отношения не имеет. Средний балл товара, который видно на витрине, через API напрямую не забирается — его вы считаете как среднее по своей выгрузке, и расхождение в сотые доли с карточкой нормально: площадка взвешивает оценки и исключает часть отзывов из расчёта.

Методы, которыми закрывается почти всё

Рабочий набор — шесть ручек. Пути даны так, как они выглядят в документации Seller API; версии методов площадка иногда поднимает, поэтому перед внедрением сверьтесь с актуальным разделом документации.

Метод Что делает Ключевые параметры Когда дёргать
/v1/review/count Счётчики: всего, обработанных, необработанных нет Каждые 15–30 минут как дешёвый пинг
/v1/review/list Список отзывов с текстом и счётчиками limit 20–100, last_id, status, sort_dir Полный слив ночью, догон в течение дня
/v1/review/info Один отзыв целиком: ссылки на фото и видео, лайки review_id Точечно, только по нужным отзывам
/v1/review/comment/create Публикует ответ продавца review_id, text, mark_review_as_processed При отправке ответа
/v1/review/comment/list Ветка комментариев под отзывом review_id, limit, offset Когда считаете скорость ответа
/v1/review/change-status Помечает отзывы обработанными review_ids (пачкой), status После разбора пачки

Вопросы покупателей живут в параллельном наборе /v1/question/... с той же логикой: список, карточка, счётчик, создание ответа, смена статуса. Если строите одну выгрузку, забирайте оба набора сразу — метрика «время первого ответа» считается по ним одинаково.

Статус обработки — это ваша внутренняя пометка, а не что-то, что видит покупатель. Покупатель видит только опубликованный ответ. Пользы от статуса ровно одна, но большая: запрос /v1/review/list с фильтром по необработанным отдаёт очередь на разбор, и её размер — честный показатель того, насколько вы отстали.

Опрос

Как вы сейчас собираете отзывы по своему магазину?

Распределение для этой статьи · выберите свой ответ

Premium Plus: без чего методы отвечают отказом

Отзывные методы открыты продавцам с подпиской Premium Plus. Без неё метод отвечает отказом по доступу при полностью корректных Client-Id и Api-Key, и это сбивает с толку: ключ рабочий, остальные разделы отвечают, а отзывы — нет. Прежде чем перевыпускать ключ и проверять права, сделайте один запрос /v1/review/count: если подписка активна, он вернёт три числа, если нет — тот же отказ, и дальше копать в ключе бессмысленно.

Эту стену не пробивают и сторонние сервисы отзывов. Они работают по вашему же ключу и упираются в тот же отказ: пока подписки нет, у сервиса не появится ни одной строки — останется ручной ввод или парсинг витрины. Обещают выгрузку без Premium Plus — спросите, откуда берутся данные. Обычно это публичные страницы товара: массив выходит дырявый, да ещё и собран против правил площадки.

Сумму подписки и её состав Ozon правил не раз, поэтому конкретной цифры здесь не будет — посмотрите действующие условия в базе знаний Ozon Seller и в тарифах своего кабинета. Окупаемость считайте не по рейтингу, а по товарам: подписка отбивается, когда из выгрузки вылезает SKU с повторяющимся дефектом и дефект чинят. Красивый график среднего балла сам по себе не приносит ни рубля.

Чек-лист

Перед первой выгрузкой отзывов

Постраничная выгрузка: last_id, первый слив и ежедневный догон

Отзывы отдаются курсором, а не привычным offset. Схема такая: первый запрос — без last_id, дальше в каждый следующий подставляете значение, которое вернулось в ответе, и повторяете, пока в ответе есть признак следующей страницы. Предельный limit — 100 записей, и ставить меньше незачем: страницы дешевле, чем запросы.

Считайте объём заранее. Магазин с четырьмя тысячами отзывов — это примерно сорок запросов к /v1/review/list: минуты работы, а не часы. Повторять полный слив каждый день незачем. Дальше работает догон: сортируете по убыванию, идёте вниз, пока не встретите идентификатор, который у вас уже есть, и останавливаетесь. На спокойном магазине это один-два запроса за заход.

Отдельная ошибка — забирать /v1/review/info по каждому отзыву «на всякий случай». В списке уже лежат текст, оценка, дата и счётчики фото и видео; карточка добавляет к этому ссылки на сами медиафайлы и реакции на отзыв. Дёргайте её точечно, иначе одна выгрузка вырастает с сорока запросов до четырёх тысяч — в сто раз больше при том же результате.

Проверьте себя

В магазине 4 118 отзывов. Нужны ссылки на фото только по негативным — их 611. Сколько запросов минимально?

Лимиты, расписание и хранение выгрузки

Квота Seller API считается на магазин, а не на ключ или скрипт: ваша выгрузка делит её с сервисом учёта, внешней аналитикой и всем, что подключено к кабинету. Поэтому полную выгрузку ставьте на ночь, а не на девять утра, когда в API ломятся все остальные процессы. Точные лимиты по методам площадка меняет — сверяйтесь с документацией, а не с постами двухлетней давности.

Дешёвый режим наблюдения выглядит так: раз в 15–30 минут дёргаете /v1/review/count и сравниваете число с предыдущим. Выросло — идёте в список за новыми. Не выросло — не идёте вообще. Отдельного push-уведомления про новый отзыв в Seller API я не нашёл: набор типов там про заказы, товары, остатки и чаты, а список Ozon пополняет — сверьтесь с актуальным в базе знаний Ozon Seller. Пока его нет, остаётся опрос, и опрашивать счётчик несравнимо дешевле, чем список.

Про хранение три правила. Первое: складывайте не только поля отзыва, но и дату, когда вы его впервые увидели, — по ней потом восстанавливается динамика. Второе: покупатель может отредактировать отзыв, а Ozon — удалить его по жалобе, поэтому исчезнувший из выгрузки отзыв помечайте флагом, а не стирайте строку, иначе история рейтинга задним числом перепишется и расследовать просадку будет не по чему. Третье: даты приходят в UTC — приведите их к своему поясу сразу при записи, иначе недельные отчёты поедут на несколько часов, а у вечерних отзывов сместится день.

Что считать на выгруженном массиве

Ради этого всё и затевалось. Минимальный набор, который считается одним запросом к вашей же таблице:

Метрика Как считается по выгрузке Что показывает
Средняя оценка за 30 дней Среднее rating по дате публикации Куда едет рейтинг прямо сейчас, а не за всю историю
Доля 1–2 звёзд Отзывы с оценкой ≤ 2 ÷ все отзывы периода Насколько плотный поток негатива
Покрытие ответами Отзывы с ответом продавца ÷ все отзывы Сколько людей остались без реакции
Время первого ответа Дата первого комментария − дата отзыва Честная скорость службы, а не ощущение
Доля отзывов с медиа Отзывы с фото или видео ÷ все отзывы Насколько убедительна карточка для сомневающихся
Отзывы на 100 доставленных Отзывы за период ÷ доставленные × 100 Сравнимая между товарами активность покупателей

Главное здесь — считать всё в разрезе SKU и месяца, а не общей кучей по магазину. Средняя оценка 4,6 по магазину спокойно прячет один товар с 3,9, который тянет вниз выдачу и генерирует возвраты. И считайте долю негатива не от числа отзывов, а от числа доставок: товар с сотней отзывов и товар с тремя сравнивать в процентах бессмысленно.

Следующий шаг после метрик — разметка текстов по причинам. Достаточно десяти категорий вроде «брак», «не тот размер», «повреждена упаковка», «долго везли», «не соответствует фото». Разложите по ним хотя бы все единицы и двойки за квартал — и половина вопросов о том, что чинить в товаре, закроется сама. Связку «негатив по SKU → возвраты → прибыль по этому товару» мы в Starbox считаем уже внутри разбора прибыли по товарам, но и таблицы с разметкой хватает, чтобы увидеть главное.

Разбор: как мы выгрузили 4 118 отзывов и что в них нашли

Магазин на одиннадцать SKU, товары для дома, отзывы копились четырнадцать месяцев. Картина до выгрузки: рейтинг магазина стоял на месте, а выкуп по одному товару месяц за месяцем сползал, и объяснения этому не было.

Первый слив — 4 118 отзывов, 42 запроса к списку, около трёх минут. Оценок 1–3 в массиве оказалось 611, из них единиц и двоек — 389. Карточку через /v1/review/info дёргали только по этим 611, ради фотографий. Заодно вскрылось про ответы: 1 902 отзыва остались без реакции вообще. Отвечали только на свежие, дальше руки не доходили.

Потом разметка по причинам. 148 единиц и двоек из 389 — это 38 % — пришлись на одну позицию, напольную вешалку-стойку. Внутри этих 148 ровно 71 отзыв говорил об одном и том же: шатается, складывается под весом одежды. Проверили возвраты по товару — 15,9 % против 8,3 % в среднем по остальным десяти SKU.

Дальше арифметика. 340 заказов в месяц, разрыв 7,6 процентного пункта — около 26 лишних возвратов. Обратная логистика, повторная приёмка и уценка обходились нам примерно в 1 400 ₽ за штуку — порядка 36 000 ₽ в месяц на одном узле крепления. В отчётах это выглядело просто как повышенный процент возвратов: цифра есть, причины нет. Причина лежала в текстах отзывов.

Решение вышло скучным: усилили узел крепления у поставщика, вынесли в карточку фото этого узла крупным планом и абзац про предельную нагрузку. За три месяца средняя оценка товара поднялась с 4,1 до 4,6, возвраты опустились до 9,4 %. В кабинете такое не ловится: отзывы там лежат лентой, а вопрос «какая формулировка повторяется чаще других» лентой не решается.

FAQ

Как выгрузить отзывы с Ozon в Excel?

Кнопки «выгрузить отзывы в файл» в разделе «Отзывы» нет — экспорт собирают сами. Рабочий путь один: постранично забрать массив методом /v1/review/list и писать строки скриптом — в CSV, который потом открывается Excel, или сразу в Google Таблицы. Понадобится действующая подписка Premium Plus и ключ Seller API; на четыре тысячи отзывов уходит около сорока запросов и пара минут.

Нужна ли подписка Premium Plus для API отзывов?

Да, отзывные методы открывает именно она, и обойти это нечем. Запрос без подписки упирается в 403 при исправных Client-Id и Api-Key — на этом месте обычно начинают перевыпускать ключ, хотя дело не в нём. Сервисы отзывов работают через тот же самый API и по вашему ключу, так что подписку всё равно придётся оплачивать; действующие условия смотрите в базе знаний Ozon Seller.

Можно ли отвечать на отзывы через API?

Можно: метод /v1/review/comment/create публикует ответ продавца и при необходимости сразу помечает отзыв обработанным. Правила к тексту те же, что и в кабинете: без контактов, ссылок на сторонние площадки и обещаний вознаграждения за изменение оценки.

Почему метод отзывов отвечает ошибкой 403?

Три причины по частоте. Первая — не оплачена или закончилась Premium Plus. Вторая — запрос ушёл в Performance API, а это отдельный контур с собственной авторизацией через client_id и client_secret. Третья — ключ выпущен в другом кабинете или принадлежит другому магазину. Начинайте с подписки: её проглядеть проще всего. Типы ключей и их права Ozon за последние годы менял, так что заодно сверьтесь с актуальным описанием в базе знаний Ozon Seller.

Как часто можно опрашивать отзывы?

Полный слив нужен один раз и потом изредка, для сверки; ежедневная работа — это догон новых раз в час-два плюс /v1/review/count между заходами, чтобы не ходить в список вхолостую. Лимит один на всех, кто подключён к вашему кабинету, поэтому разводите запросы во времени с остальными интеграциями и держите тяжёлое на ночь.

Статья была полезна?

Вы развиваете магазин. ИИ разбирается с рутиной.

Поручите Starbox AI поиск потерь в прибыли, проверку рекламы и планирование запасов. Задавайте вопросы в чате и получайте рекомендации по своему магазину. Попробуйте ИИ-менеджера для Ozon 14 дней бесплатно, без карты.

Попробовать ИИ-менеджера бесплатно