API Яндекс Маркета: что можно автоматизировать продавцу

Что можно автоматизировать через партнёрский API Яндекс Маркета, где взять токен и какие права ему выдать, какие лимиты действуют и почему интеграция иногда останавливается без правок в коде.

Алексей Н.
Автор Алексей Н. Автор статьи
Тёмно-синяя обложка: жёлтый маршрут с бирюзовыми контрольными точками и изометрические посылки — схема обмена данными с Яндекс Маркетом

API Яндекс Маркета закрывает почти всё, что продавец делает в кабинете руками: заводит товары, меняет цены, передаёт остатки, забирает заказы и отчёты. Доступ бесплатный, платить приходится за разработку и сопровождение. Разбираем, что можно автоматизировать, где лежат лимиты и почему интеграция иногда останавливается без единой правки в коде.

Что API умеет

Партнёрский API — набор HTTPS-методов, разложенных по группам. Через них доступны:

  • товары и карточки — добавление в каталог, характеристики, архив, скрытие и возврат на витрину;
  • цены — базовая цена кабинета и цены отдельных магазинов, цена до скидки, минимум для акций;
  • остатки и оборачиваемость — передача и проверка остатков по складам;
  • заказы — получение, смена статусов, отгрузки FBS, ярлыки FBS и DBS, заказы с цифровыми товарами;
  • невыкупы и возвраты — решения по возврату, фото и заявления покупателя;
  • заявки FBY и LaaS — поставка, вывоз, утилизация и документы по ним;
  • отчёты и документы — реализация, стоимость услуг Маркета, оборачиваемость, цены, отзывы, буст;
  • отзывы, вопросы, чаты, индекс качества, буст продаж, акции, склады, справочники.

Чего в API нет: он не заменяет модерацию и не отменяет правила площадки. Категорию товара Маркет проверяет на своей стороне, и если товар ей не соответствует, метод вернёт ошибку.

Отдельный слой — API-уведомления. Маркет сам стучится на ваш адрес, когда появился заказ, изменился его статус, пришёл возврат, отзыв, сообщение в чате или начался спор. Без них интеграция вынуждена опрашивать методы по расписанию и упираться в лимиты.

Кому API нужен, а кому рано

API окупается там, где ручная работа перестала помещаться в рабочий день. Пара десятков заказов в сутки и несколько сотен позиций — уже повод считать. Если товаров десяток, а заказы приходят раз в два дня, Excel-файл в кабинете справится дешевле.

Есть и вынужденный сценарий. В справке Маркета о передаче остатков сейчас перечислены три способа: вручную в кабинете, Excel-файлом и автоматически — через модули для CMS и API. YML-файлов среди них нет. Продавцы, которые годами обновляли цены и остатки фидом, переезжают либо на API, либо на сервис, который читает их фид и сам ходит в API. Промежуточный вариант — готовый модуль: Маркет бесплатно отдаёт модуль для «1С:Предприятия», у популярных CMS есть свои.

Токен: где взять и какие права выдать

Токен создаётся в кабинете: иконка аккаунта → НастройкиAPI и модули → блок Токены авторизацииСоздать новый токен. Делать это могут только владелец и менеджер кабинета. На кабинет разрешено до 30 токенов, срок действия не ограничен — токен живёт, пока его не удалят. Готовый токен передаётся в заголовке Api-Key, запрос без него получит 401 Unauthorized. Схема OAuth 2.0 помечена как устаревшая.

При создании токена выбираются доступы — четырнадцать групп, от «Полного управления кабинетом» до узких вроде «Просмотра цен» или «Получения информации по FBY-заявкам». Правило площадки: отдельный токен на каждую интеграцию и минимально необходимые права. Тогда утечка ключа аналитики не даст переписать ваши цены. Ключи стоит менять при смене подрядчика и хранить в секрет-хранилище, а не в коде и переписке.

businessId и campaignId — не одно и то же

Самая частая ошибка на старте. Методы вида /businesses/{businessId}/… работают на уровне кабинета: каталог товаров, базовые цены, настройки. Методы вида /campaigns/{campaignId}/… — на уровне конкретного магазина: заказы, отгрузки, ярлыки. Часть отчётов требует одного идентификатора, часть — другого.

Оба идентификатора возвращает запрос GET v2/campaigns — он отдаёт всё, к чему открывает доступ ваш токен. Идентификатор кампании виден и в кабинете, в том же разделе «API и модули». Подробнее о том, как устроен кабинет и где что лежит, — в разборе личного кабинета продавца Яндекс Маркета.

Лимиты, о которых узнают в бою

Ограничений три типа, и путать их дорого. Отдельно стоят лимиты на генерацию отчётов.

Тип Что ограничивает Что вернётся при превышении
Глобальные Не больше четырёх одновременных запросов к магазину или кабинету 420 Enhance Your Calm
Ресурсные Число запросов или объём данных к одному ресурсу за сутки 420 Enhance Your Calm
Функциональные Размер выборки и тело запроса до 512 КБ 400 Bad Request

Четыре параллельных запроса — не опечатка: интеграция, которая выстреливает сотню запросов веером, упрётся сразу. Нагрузку раскладывают очередью или ограничителем скорости.

Состояние ресурсного лимита Маркет отдаёт в каждом ответе: X-RateLimit-Resource-Limit, X-RateLimit-Resource-Remaining и X-RateLimit-Resource-Until. Важная деталь: лимит уменьшают и успешные ответы, и клиентские ошибки 4xx. Только ошибки на стороне Маркета (5xx) лимит не тратят. Поэтому цикл повторов, который долбит метод с неверными параметрами, съест дневной запас и ничего не добьётся. Отсюда правило: повторять запрос имеет смысл только на 5xx и сетевых сбоях, с растущей паузой и случайной задержкой; на 4xx нужно чинить запрос. У подписки «Медиум» лимиты расширенные, конкретные значения указаны на странице каждого метода.

Когда API отключается не по вашей вине

Интеграция может перестать работать без изменений в коде. Маркет отключает доступ к API магазина по нескольким причинам, и статус видно в поле apiAvailability ответа GET v2/campaigns или GET v2/campaigns/{campaignId}.

Статус Что произошло Что делать
AVAILABLE Всё в порядке
DISABLED_BY_INACTIVITY Магазин не размещал товары на витрине больше 90 дней Включить интеграцию в кабинете, обновить цены и остатки, отправить магазин на модерацию
DISABLED_BY_NO_ACTIVE_CONTRACT Нет действующего договора с Маркетом Дозаполнить раздел «Юридические данные»
MANUALLY_DISABLED Интеграцию выключили вручную Включить в разделе «API и модули»
DISABLED_BY_NO_PLACEMENT_TYPE Магазин не подключён к программе размещения Подключить модель работы

Пока API недоступно, запросы не выполняются и не попадают в лог — искать там причину бесполезно. Если в кабинете отключены все магазины, блокируются и методы уровня кабинета. Проверять apiAvailability раз в сутки — дешёвая страховка от тихой остановки обмена.

Как понять, какая интеграция сломалась

Если с кабинетом работают несколько систем сразу, в логе запросов они сливаются в кашу. Разводит их заголовок X-Market-Integration: в него передаётся название интеграции и версия, например 1C-UT/2.5.14. До 100 символов, только ASCII. После этого в кабинете на вкладке «Лог запросов» появляется фильтр по интеграции, и виновника всплеска ошибок видно сразу. Вторая опора при разборе — идентификатор traceparent из ответа: по нему конкретный запрос находит и разработчик, и поддержка Маркета.

Уведомления: как не потерять заказ

Адрес для уведомлений должен работать по HTTPS с сертификатом от аккредитованного удостоверяющего центра, самоподписанный не подойдёт. Подлинность запроса проверяется по трём диапазонам адресов Маркета: 5.45.207.0/25, 141.8.142.0/25 и 5.255.253.0/25.

Отвечать нужно быстро: на обычное уведомление даётся 10 секунд, на проверочное типа PING — одна. Дальнейшую обработку события правильно уводить в очередь, а не держать соединение.

Если адрес молчит или отвечает ошибкой, Маркет ставит остальные уведомления на паузу и повторяет проблемный запрос: каждую минуту в течение часа, затем раз в 15 минут в течение суток, дальше раз в час. Через 14 дней недоступности магазин отключается от интеграции. Торговать он продолжает — просто вы перестаёте узнавать о заказах вовремя.

Что изменилось в 2026 году

API живёт своей жизнью, и раз в квартал что-нибудь отваливается. Главное за 2026 год:

  • Токенная пагинация. С 4 марта параметры page и pageSize помечены устаревшими, работать нужно через pageToken и limit. Конец выборки определяется только по наличию nextPageToken в ответе, а не по числу строк на странице.
  • Урезанные выборки. С 10 марта limit для цен снижен с 2 000 до 500, для ставок буста — с 1 500 до 500. С 28 января лимит товаров в запросе к каталогу кабинета уменьшен с 200 до 100.
  • НДС 22 %. Значение 7 (ставка 20 %) автоматически заменяется на 14, а с 1 июля 2026 года передавать 7 нельзя.
  • Отчёты по тарифу. С 18 мая глубина доступных данных и число одновременно генерируемых отчётов зависят от тарифного плана.
  • Тестовый заказ. С 28 мая в создании заказа появился параметр fake: такой заказ не отгружается и не трогает остатки.
  • Склады на уровне кабинета. С 29 июля появились методы v3 для складов и остатков по businessId, а старый метод смены статуса склада помечен устаревшим.

Вывод для интеграции: клиент нужно пересобирать по актуальной спецификации OpenAPI, а незнакомые поля и значения перечислений — пропускать, а не падать на них.

Остатки: чем API отличается от кабинета

Передавать нужно количество, свободное для новых заказов, — с учётом продаж вне Маркета. Продали три штуки в офлайн-точке с того же склада, значит остаток на витрине уменьшается на три. Обновление не мгновенное: от передачи данных до изменения на витрине проходит до 15 минут. Маркет требует передавать остатки как можно чаще, но не реже раза в день. Если в кабинете настроены группы складов, остаток достаточно передать по одному складу — по остальным он обновится сам.

И ещё одна деталь, которая экономит часы разбирательств: при добавлении и изменении ассортимента нужно читать results.errors и results.warnings в ответе. Если в пакете есть ошибки, изменения не применятся по всем переданным товарам, а не только по проблемным.

Что в чужих статьях написано неправильно

По запросу «api яндекс маркет» выдача заметно засорена текстами, где цифры выдуманы. Проверять их стоит по документации, а не по соседней статье. Вот что встречается чаще всего и чего в первоисточнике нет:

  • «лимит 100 000 запросов в сутки» и «500 запросов в минуту» — таких общих величин в документации нет, ограничения указаны отдельно для каждого метода;
  • «токен действует год и продлевается автоматически» — токен бессрочный и живёт, пока его не удалят;
  • «авторизация через Authorization: Bearer» — это устаревшая схема OAuth, актуальная передаётся в заголовке Api-Key;
  • «песочница для тестов по отдельному адресу» — публичного тестового контура нет, для проверки используется параметр fake и скрытие товаров;
  • «уведомления подписываются HMAC-SHA256, отвечать можно 30 секунд» — подлинность проверяется по диапазонам IP, а на ответ даётся 10 секунд;
  • «остатки синхронизируются каждые 5 минут» — Маркет говорит про задержку до 15 минут и требование обновлять не реже раза в день.

Отдельная категория — примеры кода из статей двух-трёхлетней давности. Они собраны под OAuth и старые адреса методов и в 2026 году просто не заработают.

Свой код или готовый сервис

Разработка интеграции — не разовый платёж. API меняется несколько раз в квартал: методы устаревают, лимиты урезаются, поля переименовываются. Каждое изменение требует правки, тестов и человека, который за этим следит. Собственный код оправдан, когда процессы нетиповые и внутри есть разработчик. В остальных случаях расходы на сопровождение съедают экономию.

SelSup закрывает эту часть за вас: подключение по токену без разработки, единая работа с Маркетом, Ozon, Wildberries и другими площадками, цены, остатки, заказы и отчёты в одном месте. Изменения в API мы отслеживаем и вносим сами. Посмотрите, как это устроено, на демонстрации SelSup — покажем на ваших товарах и ответим на вопросы по интеграции. Общие правила площадки, модели работы и деньги разобраны в обзоре условий работы на Яндекс Маркете.

Частые вопросы

API Яндекс Маркета платный?

Нет. Доступ к API не требует платы, как и модуль Маркета для «1С:Предприятия». Платить придётся за разработку интеграции и её сопровождение либо за сторонний сервис. С 18 мая 2026 года глубина данных в отчётах и число одновременно генерируемых отчётов зависят от тарифного плана.

Кто в компании может создать токен?

Только владелец кабинета и менеджер кабинета. Остальные роли токены не создают и не редактируют. На кабинет разрешено до 30 токенов, и каждой интеграции лучше выдать свой, с минимальным набором прав.

Что делать, если API вернуло 420?

Это превышение лимита. Сначала проверьте число одновременных запросов — их не может быть больше четырёх. Затем посмотрите заголовки X-RateLimit-Resource-Remaining и X-RateLimit-Resource-Until: они покажут остаток и время сброса. Очередь надёжнее, чем повторы подряд.

Нужно ли передавать остатки по FBY?

Нет. Товары FBY и LaaS лежат на складах Маркета, и он считает их сам. Передавать остатки нужно магазинам, которые торгуют со своего склада, — FBS, DBS и Экспресс. Одновременно с API остатки и цены можно править вручную или Excel-файлом, но источник данных лучше держать один.

Почему интеграция перестала работать, хотя код не меняли?

Скорее всего, Маркет отключил API магазину. Проверьте поле apiAvailability в ответе GET v2/campaigns. Типичные причины: магазин больше 90 дней не размещал товары на витрине, закончился договор, магазин не подключён к программе размещения или интеграцию выключили вручную. Пока доступ закрыт, запросы даже не попадают в лог.

Каналы SelSup

Продолжайте читать и смотреть

Новости маркетплейсов, автоматизация и практические разборы ИИ — на удобной для вас площадке.

Следующий шаг

Посмотрите, как SelSup работает на ваших задачах

Покажем, как SelSup помогает автоматизировать процессы и контролировать результат.

Больше лайфхаков для селлеров и полезных советов — в нашем телеграм-канале
Подписаться на рассылку
Присоединяйтесь к списку наших подписчиков, чтобы получать последние обновления и статьи на ваш e-mail.
Спасибо!
Ваша заявка принята. Мы свяжемся с вами в ближайшее время.