Market NinjaMarket Ninja

Массовая выгрузка

Постраничный обход большого среза датасета — для загрузки в 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 — проверяйте статус ответа и останавливайтесь при превышении, а не пытайтесь угадать остаток заранее.

Квота сбрасывается в полночь UTC. Если вы выгружаете весь датасет целиком, спланируйте это на несколько дней вместо одного запуска, либо уточните лимит для вашего ключа.

Для LLM-контекста

Если цель — предоставить модели актуальный срез данных (а не хранить копию датасета у себя), удобно выгружать точечно, под конкретный запрос пользователя, а не всё сразу: например, найти конкретный товар или продавца через сценарии из Поиска товаров и передать модели уже готовый, компактный JSON — вместо предварительной массовой выгрузки «на всякий случай».

Last updated on

On this page