Market NinjaMarket Ninja

Сессии парсинга

Получение именно тех данных, которые вы только что спарсили через расширение — проверка статуса сессии и выгрузка данных после слияния

Каждый запуск парсинга в расширении — одна страница или массовый сбор — становится одной сессией парсинга, привязанной к вашему аккаунту. GET /products и остальные эндпоинты на этом сайте ищут по всему общему датасету; эти три эндпоинта всегда возвращают только ваши собственные данные.

Вы не создаёте и не придумываете id сессии сами — расширение генерирует его автоматически при каждом запуске парсинга. GET /me/scrapes — это способ его найти.

Список ваших последних парсингов

curl -H "Authorization: Bearer mn_live_..." \
  "https://data.marketninja.ru/v1/me/scrapes"
{
  "data": [
    {
      "id": "b1f8b6b0-2f7d-4a1a-9a3c-2f6d8e9a1234",
      "status": "processing",
      "stats": { "total": 40, "pending": 12, "processing": 0, "merged": 28, "rejected": 0, "flagged": 0 },
      "metadata": { "source_type": "bulk", "intent": "data", "url_count": 40 },
      "created_at": "2026-08-04T10:15:00.000Z",
      "updated_at": "2026-08-04T10:16:42.000Z"
    }
  ],
  "meta": { "total": 1, "page": 1, "page_size": 100 }
}

Сначала самые новые, без параметров фильтрации — это всегда история именно вашего аккаунта.

Проверка статуса сессии

status становится completed, как только в сессии не остаётся ничего в pending/processing — это не означает «каждый элемент обязательно успешно слился». Точную разбивку смотрите в stats.

curl -H "Authorization: Bearer mn_live_..." \
  "https://data.marketninja.ru/v1/me/scrapes/b1f8b6b0-2f7d-4a1a-9a3c-2f6d8e9a1234"
Фоновый процесс слияния запускается по расписанию, а не мгновенно — сразу после парсинга status почти всегда processing. Опрашивайте этот эндпоинт (или просто повторяйте запрос к .../products ниже), пока статус не станет completed, а не считайте, что парсинг завершён сразу же после того, как расширение закончило работу.

Получение спарсенных данных

Когда у вас есть id сессии, это и есть тот самый эндпоинт «дай мне то, что я только что собрал» — он возвращает каждый сабмишен в сессии, а не только уже слитые:

curl -G -H "Authorization: Bearer mn_live_..." \
  "https://data.marketninja.ru/v1/me/scrapes/b1f8b6b0-2f7d-4a1a-9a3c-2f6d8e9a1234/products" \
  --data-urlencode "page_size=100"
{
  "data": [
    { "submission_status": "merged", "product": { "id": "e86bee19-...", "name": "..." } },
    { "submission_status": "pending", "product": null }
  ],
  "meta": { "total": 40, "page": 1, "page_size": 100 }
}

product равен null, пока конкретный элемент ещё не слит — это осознанное поведение, а не баг: если бы ещё не слитые строки просто опускались, свежий парсинг первую минуту-другую выглядел бы как пустая страница. Слитый product — точно тот же формат объекта, что возвращает GET /products.

Дневная квота на данные расходуется только на строки, у которых реально есть слитый product — плейсхолдер pending квоту не расходует, поэтому повторные запросы к ещё обрабатывающейся сессии ничего не стоят.

Last updated on

On this page