Пагинация WB API: как выгрузить все страницы и продолжить после сбоя
Выгрузка данных WB API без потери страниц: cursor, offset, next, сохранение прогресса и проверка завершения при обновлении каталога или отчёта.
Содержание статьи
Ответ WB API может содержать только часть каталога, заказов или отчёта. Успешный первый запрос ещё не означает, что выгрузка завершена. Для продавца последствие незаметной ошибки серьёзное: аналитика строится по неполному набору данных, хотя программа показывает обычный статус успеха.
Сначала определите механизм продолжения
Официальная инструкция от 6 апреля 2026 года описывает три подхода: курсор, смещение и токен продолжения. В карточках используются поля курсора, в отдельных методах — limit и offset, в других — next. Финансовая детализация применяет rrdid. Конкретные параметры и условие окончания нужно брать из описания выбранного метода.
Не создавайте единое правило «пустой ответ означает конец» для всех интеграций. Зафиксируйте в настройках загрузчика название метода, фильтр периода, размер страницы и признак завершения. Разработчик должен показать, как каждый из этих параметров проверен. Смена периода посреди обхода делает сохранённое положение неоднозначным и требует отдельного решения.
Что сохранять после каждой страницы
В справке рекомендовано хранить cursor или next, чтобы продолжать загрузку после сбоя. При ошибке между страницами повторяют именно неудачный запрос. Для offset есть дополнительный риск: изменение набора данных между запросами может приводить к пропускам и дублям.
Практически полезно связывать запись полученной страницы и нового положения продолжения одной проверяемой операцией. Если программа сначала продвинет курсор, а затем не сохранит строки, часть данных потеряется. Если сначала сохранит строки и упадёт до курсора, повторный запуск может принести их снова. Поэтому заранее определите способ распознавания повторной записи по устойчивому идентификатору, а не по порядковому номеру строки.
Как проверить полноту выгрузки
Для теста подготовьте объём, который точно превышает одну страницу. Проверьте нормальное завершение, остановку между страницами и повторный запуск с сохранённой позиции. Отдельно сравните набор уникальных идентификаторов, а не только общее количество строк: одинаковая сумма может скрывать одновременно дубли и пропуски.
Фиксируйте время начала и окончания обхода. Если данные меняются в процессе, полученная выгрузка не обязательно является снимком одного момента. Этот предел нужно учитывать при сравнении с кабинетом и объяснять пользователю отчёта. Для исторических стабильных периодов сверка обычно проще, чем для постоянно меняющихся оперативных данных.
Когда выгрузка считается готовой
Готовность подтверждают условие окончания метода, отсутствие необработанных ошибок и сохранённый итог проверки. Не отправляйте частичный файл как полный после тайм-аута. Лучше явно показать незавершённый статус и продолжить загрузку, чем незаметно занизить продажи или остатки в рабочей аналитике.
Материал отражает сведения на указанную дату. Правила и условия работы площадок могут измениться. Редакционные принципы