Продавцы на Wildberries работают с горой данных: заказы, продажи, остатки на складах, финансовые отчёты, реклама. В личном кабинете всё разбросано, а для нормальной аналитики хочется собрать данные в одном месте и строить свои отчёты. Забрать их к себе в базу помогает API.
В этой статье покажу как выгружать данные из Wildberries через API на Python и складывать их в базу данных: ClickHouse, PostgreSQL или MySQL. Использовать будем бесплатную библиотеку morin, а начнём с простой демонстрации, которую можно запустить локально без сервера и без Docker. Статья продолжает серию про коннекторы, принцип у всех один.
Зачем выгружать данные из Wildberries
Личный кабинет WB хорош для оперативной работы, но не для аналитики:
- История ограничена, а хочется хранить данные за все периоды.
- Свести продажи, рекламу и остатки в одном отчёте внутри кабинета нельзя.
- Построить свои метрики (маржа, ДРР, оборачиваемость) неудобно.
- Автоматизировать ежедневную выгрузку под дашборд руками невозможно.
Решение одно: забрать данные из Wildberries через API в свою базу данных и работать уже там. В базе лежит вся история, к ней подключается любой BI-инструмент, а обновление идёт автоматически.
Что такое API Wildberries
API Wildberries - это интерфейс, через который программа получает данные магазина напрямую, без захода в кабинет. Через wb api можно вытянуть заказы, продажи, остатки, финансовый отчёт о реализации, карточки товаров и статистику рекламы.
Работает wildberries api так: вы отправляете HTTP-запрос с токеном, а в ответ получаете данные в JSON. Библиотека morin прячет постраничную выгрузку и разбор ответов внутри, отдавая готовые строки для базы данных.
Получаем доступ к API: токен
Для работы с API Wildberries нужен один параметр - токен. Он берётся в личном кабинете продавца Wildberries, в разделе доступа к API.

При создании токена выбираются категории (Статистика, Аналитика, Продвижение и другие) - для выгрузки данных нужна категория статистики, для рекламы отдельно категория продвижения.
Токен даёт доступ к данным магазина, поэтому храните его в секрете. Если токен утёк, отзовите его в кабинете и создайте новый.
Устанавливаем библиотеку morin
morin - бесплатная библиотека для получения данных из разных API (Wildberries, OZON, Яндекс Директ и другие) и загрузки в базу:
pip install morinДрайверы для ClickHouse, PostgreSQL и MySQL ставятся автоматически вместе с morin, отдельно доустанавливать ничего не нужно.
Для первой демонстрации без базы хватит одной morin.
Бесплатный старт: получаем данные Wildberries на Python
Начнём с простого - вытащим данные магазина в Python. База и Docker пока не нужны, всё запускается локально и бесплатно.
from morin import WBbyDate
wb = WBbyDate(
token='ВАШ_ТОКЕН_WB', # токен из кабинета Wildberries
add_name='shop1', # метка магазина (префикс таблиц)
start='2025-01-01',
)Заказы за день. Проверим доступ, получив заказы за конкретную дату:
orders = wb.get_orders('2025-06-01')
print(f'Заказов за день: {len(orders)}')Остатки на складах:
stocks = wb.get_stocks()
for s in stocks[:5]:
print(s)Продажи за день:
sales = wb.get_sales('2025-06-01')
print(f'Продаж за день: {len(sales)}')На выходе - списки словарей, готовые к анализу: закидываем в pandas или сохраняем. Уже на этом этапе morin работает как обычный клиент wildberries api.
Загрузка данных Wildberries в ClickHouse
Теперь сложим данные в базу. Начнём с ClickHouse - аналитической СУБД, которая отлично подходит под такие данные. Нужен запущенный ClickHouse: локально его поднимают одной командой Docker или ставят на сервер.
Добавляем параметры подключения и указываем отчёты через запятую - за один запуск можно забрать сразу несколько:
from morin import WBbyDate
wb = WBbyDate(
subd='clickhouse',
host='localhost', port='8123',
username='default', password='',
database='wildberries',
add_name='shop1',
token='ВАШ_ТОКЕН_WB',
start='2025-01-01',
backfill_days=3,
reports='orders,sales,stocks',
)
wb.collecting_manager()Что делает collecting_manager:
- сам создаёт таблицы в ClickHouse и определяет столбцы по данным;
- работает по принципу Airflow - фиксирует в служебной таблице, за какие дни данные собраны;
- при повторном запуске догружает только недостающие дни;
backfill_daysперезабирает несколько последних дней (данные WB задним числом уточняются).
После запуска в базе появятся таблицы с заказами, продажами и остатками. Дальше к ним подключается любой дашборд. Так выглядит таблица остатков в Clickhouse:

То же самое в PostgreSQL и MySQL
Чтобы грузить не в ClickHouse, а в PostgreSQL или MySQL, меняется один параметр - subd. Остальной код тот же.
Для PostgreSQL:
wb = WBbyDate(
subd='postgresql',
host='localhost', port='5432',
username='postgres', password='postgres',
database='wildberries',
add_name='shop1',
token='ВАШ_ТОКЕН_WB',
start='2025-01-01', backfill_days=3,
reports='orders,sales,stocks',
)
wb.collecting_manager()Для MySQL меняем subd на 'mysql' и порт на 3306. morin сама подберёт типы столбцов под выбранную базу данных. Один и тот же коннектор Wildberries наполняет три разные СУБД.
Какие отчёты умеет коннектор Wildberries
У коннектора Wildberries много готовых отчётов, они задаются параметром reports (через запятую). Полный список - с функцией, которая вызывает каждый отчёт:
orders- заказы, функцияget_orders()sales- продажи, функцияget_sales()stocks- остатки на складах, функцияget_stocks()stocks_history- история остатков, функцияget_stocks()incomes- поставки на склад, функцияget_incomes()orders_changes- изменения по заказам, функцияget_orders_changes()sales_changes- изменения по продажам, функцияget_sales_changes()realized- финансовый отчёт о реализации (еженедельный), функцияget_realized()realized_list- список готовых финансовых отчётов, функцияget_realized_list()realized_detail- детализация финансового отчёта, функцияget_realized_detail()sbor_orders- сборочные задания FBS, функцияget_sbor()sbor_status- статусы сборочных заданий, функцияget_sbor_status()cards- карточки товаров, функцияget_cards()feedbacks- отзывы покупателей, функцияget_feedbacks()voronka_week- воронка продаж за неделю, функцияget_voronka_week()voronka_all- воронка продаж за весь период, функцияget_voronka_all()paid_storage- платное хранение, функцияget_paid_storage()excise- маркируемые (акцизные) товары, функцияget_excise()adv_upd- обновление ставок рекламы, функцияget_adv_upd()
Полная статистика рекламных кампаний забирается отдельно (нужен токен категории «Продвижение»). Для регулярного сбора берут нужный набор, например orders,sales,stocks, и запускают ежедневно.
Автоматизация через Docker
Демонстрация выше запускается руками. Чтобы данные Wildberries обновлялись сами каждый день, morin разворачивают в Docker - сбор идёт по расписанию, с логами и уведомлениями в Telegram. Подробно этот сценарий разобран в отдельной статье про коннекторы к API в ClickHouse на Docker.
Библиотека одинаково работает и как простой Python-клиент, и внутри Docker-контейнера для боевой автоматизации.
FAQ
Как получить данные из Wildberries через API на Python?
Установите библиотеку morin (pip install morin), создайте объект WBbyDate с токеном и вызовите методы get_orders, get_sales, get_stocks. Данные вернутся списком словарей.
Где взять токен Wildberries API?
В личном кабинете продавца Wildberries, в разделе доступа к API. При создании выбираются категории - для выгрузки данных нужна категория статистики.
Бесплатно ли пользоваться API Wildberries?
Да, сам wb api и библиотека morin бесплатны. Платить нужно только за сервер и базу данных, если вынесете сбор в облако.
В какую базу данных можно грузить данные WB?
Коннектор morin умеет ClickHouse, PostgreSQL и MySQL. База выбирается одним параметром subd.
Заключение
Мы разобрали, как выгружать данные из Wildberries через API на Python и грузить их в ClickHouse, PostgreSQL или MySQL с помощью бесплатной библиотеки morin. Начали с локальной демонстрации, а затем одной строкой направили данные в базу.
Главное: получение данных Wildberries сводится к паре методов, выбор базы - к одному параметру, а список отчётов задаётся через запятую. По такому же принципу morin работает с OZON, Яндекс Директом, Метрикой и другими источниками.