Перейти к содержимому

Товарный фид (YML)

Фид — основной способ передать каталог в SearchBooster. Мы скачиваем его по ссылке, разбираем, строим поисковый индекс и дальше обновляем по расписанию. Основной формат — YML (Yandex Market Language): его умеют выгружать почти все CMS и маркетплейс-модули. Если у вас фид для Google Merchant, он тоже подойдёт — см. другие форматы.

<offer id="110166" available="true" group_id="1101">
  <url>https://shop.ru/p/110166</url>
  <name>Самоедская собака, щенок</name>
  <vendor>Nordic Kennel</vendor>
  <price>960</price>
  <oldprice>1200</oldprice>
  <currencyId>RUR</currencyId>
  <categoryId>8145</categoryId>
  <picture>https://shop.ru/img/110166.jpg</picture>
  <param name="Окрас">белый</param>
  <param name="Возраст" unit="мес">3</param>
  <description>Дружелюбный щенок…</description>
</offer>
  1. 1nameНазвание — главный источник для поиска
  2. 2price / oldpriceЦена и зачёркнутая цена; по цене работают фильтр и сортировка
  3. 3pictureКартинка: показывается в выдаче и используется для поиска по фото
  4. 4vendorБренд: фасет, подсказка-бренд, буст в ранжировании
  5. 5paramХарактеристики → фильтры и фасеты
  6. 6availableНаличие: товары не в наличии уходят вниз или скрываются
  7. 7categoryIdКатегория: фасет, подсказки-категории, «популярное в категории»
Наведите на тег, карточку или строку легенды: подсветится, какое поле фида за что отвечает.
feed.xml
<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2026-10-17T10:00:00+03:00">
<shop>
<name>Мой магазин</name>
<url>https://shop.ru</url>
<currencies>
<currency id="RUR" rate="1"/>
</currencies>
<categories>
<category id="1">Собаки</category>
<category id="8145" parentId="1">Самоедская собака</category>
</categories>
<offers>
<offer id="110166" available="true">
<url>https://shop.ru/p/110166</url>
<name>Самоедская собака, щенок</name>
<price>960</price>
<currencyId>RUR</currencyId>
<categoryId>8145</categoryId>
<picture>https://shop.ru/img/110166.jpg</picture>
</offer>
</offers>
</shop>
</yml_catalog>
<categories>
<category id="1" url="https://shop.ru/c/dogs" imageUrl="https://shop.ru/c/dogs.jpg">Собаки</category>
<category id="8145" parentId="1" ordering="10">Самоедская собака</category>
</categories>
Атрибут Что делает
id Идентификатор категории. Не может быть 0.
parentId Родитель. Если родителя нет в фиде, категория станет корневой.
url Ссылка на страницу категории — используется в подсказках-категориях.
imageUrl Картинка категории. Если не указана, берём фото первого товара в ней.
ordering Порядок вывода в дереве категорий.

Категории без названия пропускаются. Дерево категорий доступно через API: GET /api/{uuid}/settings.

Индексатор пропускает оффер только в трёх случаях: нет id, нет категории или нет названия (и его нельзя собрать из vendor + model). Остальные поля формально необязательны, но без них товар будет плохо искаться и некрасиво выглядеть — валидатор подсветит их как ошибки.

Тег / атрибут Описание
offer@id обязательно Уникальный ID товара — строка ("110166", "A-15"). По нему работают рекомендации, события и API индексации. Не используйте 0.
name обязательно Название — главный источник для поиска. Если пусто, соберём из vendor + model.
categoryId обязательно ID категории из <categories>. Можно указать несколько тегов — первый станет основной категорией.
url рекомендуется Абсолютная ссылка на карточку товара.
price рекомендуется Цена (число, разделитель — точка). Без неё — 0.
currencyId рекомендуется RUR/RUB, BYN, UAH, KZT, USD, EUR. Конвертации валют нет — цена отдаётся как есть.
picture рекомендуется Картинки, тег можно повторять. Первая показывается в выдаче и используется для поиска по фото.
offer@available рекомендуется true / false. Не указан — считаем, что товар в наличии.
Тег / атрибут Описание
oldprice Зачёркнутая цена. Скидка = oldprice > price; на ней работает виджет «Товары со скидкой».
offer@group_id Группа вариантов (размеры, цвета одной модели). В выдаче варианты схлопываются в одну карточку, см. groupByGroupId.
vendor Бренд: фасет, подсказки-бренды, фильтр в рекомендациях.
vendorCode Артикул. Поиск по артикулу работает даже без пробелов и дефисов.
model, typePrefix Модель и тип товара («Смартфон»).
barcode Штрихкод, тег можно повторять. Ищется точным совпадением.
offerCode Внутренний код товара.
description Описание. HTML оборачивайте в <![CDATA[ … ]]> — иначе текст внутри тегов потеряется.
param Характеристика: <param name="Цвет">белый</param>, <param name="Вес" unit="кг">1.5</param>. Из параметров строятся фильтры и фасеты.
label Ярлык на карточке («Хит», «Новинка»), тег можно повторять.
price type="…" / oldprice type="…" Дополнительные типы цен (оптовая, по карте): <price type="opt">90</price>.
count Остаток.
pickup, delivery, isPreorder Самовывоз, доставка, предзаказ — доступны как фильтры pickup, delivery, preorder.
region Цены и наличие по регионам — см. Регионы, цены и остатки.
snippet Короткий текст для подсказок.

Любой нестандартный тег (<rating>4.8</rating>, <margin>35</margin>) сохраняется как поле товара: по нему можно фильтровать, сортировать и строить формулы ранжирования. Если тег повторяется, сохранится последнее значение; вложенные теги и атрибуты таких полей не сохраняются.

  1. Одно значение — один <param>. Несколько цветов — несколько тегов с одним name:
    <param name="Цвет">белый</param>
    <param name="Цвет">кремовый</param>
  2. Числа — отдельно от единиц. <param name="Мощность" unit="Вт">600</param> даёт фильтр-диапазон, а 600 Вт в значении — только список.
  3. Одинаковые названия во всём фиде. «Цвет», «цвет» и «Цвет товара» станут разными фильтрами.
  4. Без технических параметров. ID склада, внутренние флаги лучше передавать своими тегами — они не попадут в фасеты.

Какие параметры показывать фильтрами, в каком порядке и с каким типом (список, цвет, диапазон, переключатель) — настраивается в личном кабинете, раздел Фильтры.

К проекту можно подключить несколько ссылок — например, отдельные фиды по разделам каталога. Они разбираются по очереди и склеиваются:

  • одинаковый id категории — побеждает первый фид;
  • одинаковый id оффера — побеждает последний;
  • если хоть один фид не скачался или битый, индексация не обновляется (старый индекс продолжает работать).
  • Фид должен открываться по прямой ссылке https://… без авторизации. Сжатие gzip поддерживается (feed.xml.gz или Content-Encoding), zip — нет.
  • Кодировка — по декларации <?xml encoding="…"?>; рекомендуем UTF-8.
  • Если сайт защищён антиботом или WAF, добавьте наши IP в белый список — адреса покажутся в уведомлении об ошибке загрузки; также их можно запросить у поддержки.
  • Если вместо XML пришла HTML-страница (капча, заглушка), загрузка завершится ошибкой, а поиск продолжит работать на прошлой версии каталога.

Что происходит после загрузки, как часто обновляется индекс и как защищён каталог от «пустого» фида — в разделе Как обновляется индекс.