Массовая выгрузка
Постраничный обход большого среза датасета — для загрузки в LLM-контекст, собственную базу или аналитику — с учётом дневной квоты.
Навигация по категориям перед выгрузкой
Прежде чем выгружать весь ассортимент маркетплейса, часто удобно сузить область через
список категорий — GET /categories, полученный category_path как фильтр category
в GET /products. Полное руководство, включая совпадение по вхождению на любом уровне
иерархии и разбор пустого category_path: [] — в разделе Категории.
Так же можно сузить выгрузку по конкретному бренду через brand — см. раздел
Бренды для списка доступных названий и примеров.
Постраничный обход
page_size по умолчанию 100, максимум 500 — специально больше типичного значения для
UI-ориентированных API, рассчитан именно на массовую выгрузку. Ориентируйтесь на
meta.total, а не на заранее известное число страниц:
#!/bin/bash
PAGE=1
while true; do
RESPONSE=$(curl -s -G -H "Authorization: Bearer mn_live_..." \
"https://data.marketninja.ru/v1/products" \
--data-urlencode "marketplace=wildberries" \
--data-urlencode "category=Зоотовары" \
--data-urlencode "page_size=500" \
--data-urlencode "page=$PAGE")
echo "$RESPONSE" | jq -c '.data[]' >> products.jsonl
TOTAL=$(echo "$RESPONSE" | jq '.meta.total')
if [ $((PAGE * 500)) -ge "$TOTAL" ]; then break; fi
PAGE=$((PAGE + 1))
doneУчитывайте дневную квоту
Квота считает записи, фактически возвращённые в ответах, а не количество запросов —
крупная постраничная выгрузка расходует квоту пропорционально числу товаров, которые вы
получили, вне зависимости от того, за сколько запросов вы это сделали. Заголовки
X-Quota-Limit/X-Quota-Used присутствуют только в ответе 429 quota_exceeded —
проверяйте статус ответа и останавливайтесь при превышении, а не пытайтесь угадать
остаток заранее.
Для LLM-контекста
Если цель — предоставить модели актуальный срез данных (а не хранить копию датасета у себя), удобно выгружать точечно, под конкретный запрос пользователя, а не всё сразу: например, найти конкретный товар или продавца через сценарии из Поиска товаров и передать модели уже готовый, компактный JSON — вместо предварительной массовой выгрузки «на всякий случай».
Last updated on