Документация API

Базовый URL: https://api.marketsniper.ru. Все запросы требуют заголовок Authorization: Bearer <token>. Получите токен через /api/v1/auth/token.

Аутентификация и лимиты

Для доступа к API передавайте заголовок Authorization: Bearer <token> в каждом запросе. Токен можно получить, отправив POST-запрос на /api/v1/auth/token с вашими ключами.

Rate limits: Лайт — нет доступа к API, Медиум — 1 000 запросов/день, Про — без ограничений.

Аутентификация

POST/api/v1/auth/token

Получение токена доступа. Токен действителен 1 час, после истечения необходимо запросить новый.

ПараметрТипОбязательныйОписание
api_keystringДаВаш API-ключ из личного кабинета
api_secretstringДаСекретный ключ, выданный при подключении API
Пример ответа
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expires_in": 3600,
  "token_type": "Bearer"
}

Товары

GET/api/v1/products/search

Поиск товаров по названию, маркетплейсу и категории с постраничной навигацией.

ПараметрТипОбязательныйОписание
querystringНетПоисковый запрос по названию товара
marketplacestringНетФильтр по маркетплейсу: ozon или wb
category_idintНетID категории для фильтрации
pageintНетНомер страницы (по умолчанию 1)
per_pageintНетКоличество результатов на странице (макс. 100)
Пример ответа
{
  "data": [
    {
      "id": 12345,
      "name": "iPhone 15 Pro 256GB",
      "marketplace": "ozon",
      "sku": "OZN-12345",
      "price": 114990,
      "seller_id": 567,
      "category_id": 42,
      "url": "https://ozon.ru/product/iphone-15-pro-256gb-12345"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 1523
  }
}
GET/api/v1/products/:id

Получение подробной информации о товаре, включая текущую цену, диапазон цен за 30 дней, остатки, данные о продавце и рейтинг.

Пример ответа
{
  "id": 12345,
  "name": "iPhone 15 Pro 256GB",
  "marketplace": "ozon",
  "sku": "OZN-12345",
  "current_price": 114990,
  "min_price_30d": 109990,
  "max_price_30d": 124990,
  "stock_fbo": 2410,
  "stock_fbs": 180,
  "seller": {
    "id": 567,
    "name": "TechStore"
  },
  "category": {
    "id": 42,
    "name": "Смартфоны"
  },
  "rating": 4.8,
  "reviews_count": 1247
}
GET/api/v1/products/:id/price-history

История изменения цен товара за указанный период с выбранной гранулярностью (час, день, неделя).

ПараметрТипОбязательныйОписание
fromdateНетНачало периода в формате YYYY-MM-DD
todateНетКонец периода в формате YYYY-MM-DD
granularitystringНетДетализация: hour, day или week
Пример ответа
{
  "product_id": 12345,
  "currency": "RUB",
  "granularity": "day",
  "data": [
    {
      "date": "2026-03-01",
      "price": 119990,
      "min_price": 117990,
      "max_price": 121990
    },
    {
      "date": "2026-03-02",
      "price": 118990,
      "min_price": 116990,
      "max_price": 120990
    }
  ]
}
GET/api/v1/products/:id/stock

Текущие остатки товара по складам с разбивкой на FBO и FBS.

Пример ответа
{
  "product_id": 12345,
  "updated_at": "2026-03-28T10:00:00Z",
  "total_fbo": 2410,
  "total_fbs": 180,
  "warehouses": [
    {
      "id": "msk-1",
      "name": "Москва (Коледино)",
      "type": "fbo",
      "quantity": 1200
    },
    {
      "id": "msk-2",
      "name": "Москва (Хоругвино)",
      "type": "fbo",
      "quantity": 810
    },
    {
      "id": "spb-1",
      "name": "Санкт-Петербург",
      "type": "fbo",
      "quantity": 400
    }
  ]
}

Ценовой мониторинг

GET/api/v1/prices/changes

Лента последних изменений цен на товары. Позволяет фильтровать по маркетплейсу, минимальному проценту изменения и категории.

ПараметрТипОбязательныйОписание
marketplacestringНетФильтр по маркетплейсу: ozon или wb
min_change_percentfloatНетМинимальный процент изменения цены
category_idintНетID категории для фильтрации
pageintНетНомер страницы
per_pageintНетКоличество результатов на странице
Пример ответа
{
  "data": [
    {
      "product_id": 12345,
      "name": "iPhone 15 Pro 256GB",
      "marketplace": "ozon",
      "old_price": 124990,
      "new_price": 114990,
      "change_percent": -8.0,
      "changed_at": "2026-03-28T08:15:00Z"
    },
    {
      "product_id": 67890,
      "name": "Samsung Galaxy S24 Ultra",
      "marketplace": "wb",
      "old_price": 99990,
      "new_price": 94990,
      "change_percent": -5.0,
      "changed_at": "2026-03-28T07:42:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 847
  }
}

Остатки и пополнения

GET/api/v1/stock/replenishments

События пополнений складских остатков. Позволяет отслеживать когда и сколько товара было добавлено на склады.

ПараметрТипОбязательныйОписание
product_idintНетID товара для фильтрации
seller_idintНетID продавца для фильтрации
marketplacestringНетФильтр по маркетплейсу: ozon или wb
fromdateНетНачало периода в формате YYYY-MM-DD
todateНетКонец периода в формате YYYY-MM-DD
pageintНетНомер страницы
per_pageintНетКоличество результатов на странице
Пример ответа
{
  "data": [
    {
      "product_id": 12345,
      "seller_id": 567,
      "warehouse": "Москва (Коледино)",
      "quantity_added": 500,
      "date": "2026-03-25T06:00:00Z"
    },
    {
      "product_id": 12345,
      "seller_id": 567,
      "warehouse": "Санкт-Петербург",
      "quantity_added": 200,
      "date": "2026-03-24T14:30:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 38
  }
}

Селлеры

GET/api/v1/sellers/search

Поиск продавцов по имени и маркетплейсу с постраничной навигацией.

ПараметрТипОбязательныйОписание
querystringНетПоисковый запрос по названию продавца
marketplacestringНетФильтр по маркетплейсу: ozon или wb
pageintНетНомер страницы
per_pageintНетКоличество результатов на странице
Пример ответа
{
  "data": [
    {
      "id": 567,
      "name": "TechStore",
      "marketplace": "ozon",
      "products_count": 142,
      "avg_rating": 4.7
    },
    {
      "id": 890,
      "name": "TechnoPoint",
      "marketplace": "ozon",
      "products_count": 315,
      "avg_rating": 4.5
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 234
  }
}
GET/api/v1/sellers/:id

Подробный профиль продавца с информацией о количестве товаров, рейтинге, отзывах и категориях.

Пример ответа
{
  "id": 567,
  "name": "TechStore",
  "marketplace": "ozon",
  "products_count": 142,
  "avg_rating": 4.7,
  "total_reviews": 12450,
  "registered_at": "2021-06-15",
  "categories": [
    {
      "id": 42,
      "name": "Смартфоны",
      "products_count": 38
    },
    {
      "id": 55,
      "name": "Аксессуары",
      "products_count": 64
    },
    {
      "id": 61,
      "name": "Планшеты",
      "products_count": 40
    }
  ]
}

Категории

GET/api/v1/categories

Список всех категорий товаров с количеством товаров, продавцов и средней ценой.

ПараметрТипОбязательныйОписание
marketplacestringНетФильтр по маркетплейсу: ozon или wb
Пример ответа
{
  "data": [
    {
      "id": 42,
      "name": "Смартфоны",
      "parent_id": 10,
      "products_count": 15230,
      "sellers_count": 847,
      "avg_price": 28450
    },
    {
      "id": 55,
      "name": "Аксессуары",
      "parent_id": 10,
      "products_count": 48120,
      "sellers_count": 2340,
      "avg_price": 1250
    }
  ]
}
GET/api/v1/categories/:id/analytics

Аналитика категории за указанный период: средняя цена, динамика, количество товаров и ведущие продавцы.

ПараметрТипОбязательныйОписание
fromdateНетНачало периода в формате YYYY-MM-DD
todateНетКонец периода в формате YYYY-MM-DD
Пример ответа
{
  "category_id": 42,
  "name": "Смартфоны",
  "period": {
    "from": "2026-03-01",
    "to": "2026-03-28"
  },
  "avg_price": 28450,
  "avg_price_change": -2.3,
  "total_products": 15230,
  "new_products": 124,
  "top_sellers": [
    {
      "id": 567,
      "name": "TechStore",
      "market_share": 8.2
    },
    {
      "id": 890,
      "name": "TechnoPoint",
      "market_share": 6.5
    },
    {
      "id": 1024,
      "name": "МобиМаркет",
      "market_share": 5.1
    }
  ]
}

Уведомления

GET/api/v1/alerts

Получение списка всех настроенных уведомлений текущего пользователя.

Пример ответа
{
  "data": [
    {
      "id": 891,
      "type": "price_drop",
      "product_id": 12345,
      "threshold_percent": 5,
      "channels": ["telegram", "email"],
      "active": true,
      "created_at": "2026-03-28T12:00:00Z"
    },
    {
      "id": 892,
      "type": "stock_low",
      "product_id": 67890,
      "threshold_percent": 10,
      "channels": ["telegram"],
      "active": true,
      "created_at": "2026-03-27T09:30:00Z"
    }
  ]
}
POST/api/v1/alerts

Создание нового уведомления. Укажите тип события, товар, порог срабатывания и каналы доставки.

Тело запроса
{
  "type": "price_drop",
  "product_id": 12345,
  "threshold_percent": 5,
  "channels": ["telegram", "email"]
}
Пример ответа
{
  "id": 891,
  "type": "price_drop",
  "product_id": 12345,
  "threshold_percent": 5,
  "channels": ["telegram", "email"],
  "active": true,
  "created_at": "2026-03-28T12:00:00Z"
}
DELETE/api/v1/alerts/:id

Удаление уведомления по его ID. Возвращает подтверждение удаления.

Пример ответа
{
  "success": true,
  "message": "Alert 891 deleted"
}