Пропустить шапку и читать
Витринав поиске

Каталог и техникапозиция 8 из 9

Микроразметка для интернет-магазина: Product, Offer, отзывы

Выпущено 27.10.2026Читать около 6 мин

Что разобрано ниже

Микроразметка сообщает поисковику и другим машинам, что на странице товар, сколько он стоит, есть ли он в наличии и как его оценили покупатели. Для магазина минимальный набор — Product с вложенным Offer на каждой карточке и BreadcrumbList на карточках и категориях. Пишите её в формате JSON-LD, генерируйте из тех же данных, что выводятся на странице, и проверяйте валидатором Яндекса и Rich Results Test от Google.

Зачем это магазину, если гарантии нет

Разметка не повышает позиции напрямую и не обязывает поисковик показывать звёзды или цену в сниппете. Зато она убирает двусмысленность: робот не гадает, какое из чисел на странице — цена, а какое — старая цена или стоимость доставки. Это влияет на то, как выглядит сниппет в Google, как товар понимают при сопоставлении с фидом, и как страница используется в ответах нейросетей — подробнее об этом на странице про нейросети и магазин.

Формат JSON-LD удобнее микроданных в атрибутах вёрстки: блок живёт отдельно от HTML, его проще собрать шаблоном CMS и проще проверить. Оба поисковика его поддерживают.

Карточка товара: базовый блок

Условный пример для магазина товаров для дома. Все значения подставляются из базы, а не прописываются руками.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Диван-кровать Осло, серая рогожка",
  "sku": "OSLO-GR-200",
  "gtin13": "4600000000000",
  "brand": { "@type": "Brand", "name": "Условная фабрика" },
  "image": [
    "https://shop.example/upload/oslo-1.webp",
    "https://shop.example/upload/oslo-2.webp"
  ],
  "description": "Раскладной диван с механизмом еврокнижка, спальное место 140×200 см.",
  "offers": {
    "@type": "Offer",
    "url": "https://shop.example/catalog/divany/oslo-seryy/",
    "price": "42990",
    "priceCurrency": "RUB",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": { "@type": "Organization", "name": "Магазин товаров для дома" }
  }
}
</script>

Что здесь обязательно, а что желательно:

СвойствоЗачемКомментарий
name, imageОпознать товарНазвание как в H1, фото — те же, что в галерее
offers.price, priceCurrencyЦена в сниппете и сопоставление с фидомЧисло без пробелов и символа валюты
offers.availabilityСтатус наличияInStock, OutOfStock, PreOrder, BackOrder
sku, gtin13, mpnСвязать с той же моделью у других продавцовШтрихкод указывайте только настоящий
brandБрендовые запросы, группировкаНазвание производителя, не магазина

Если у товара есть варианты по цвету или размеру с разными ценами, их можно описать несколькими Offer внутри offers или диапазоном через AggregateOffer с lowPrice и highPrice. Выбор зависит от того, как устроены варианты в каталоге — на одной странице или на разных адресах; это разобрано на странице про дубли товаров.

Наличие и цена: где ломается чаще всего

Поисковики сверяют разметку с тем, что видит человек. Расхождение — самая частая причина, по которой расширенный сниппет пропадает.

  • Цена в разметке не обновилась после выгрузки, потому что JSON-LD закеширован отдельно от карточки.
  • На странице показана цена со скидкой, а в разметке — старая.
  • Товара нет, а в разметке по-прежнему InStock. Как оформлять такие карточки целиком, читайте на странице про товары не в наличии.
  • Цена выводится скриптом после загрузки, а в исходном HTML её нет совсем.

Если на сайте есть цена «по запросу», не ставьте в price ноль. Лучше вообще не размечать Offer, чем размечать недостоверно.

Рейтинг и отзывы

AggregateRating и Review вкладываются в тот же Product:

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.6",
  "reviewCount": "18"
},
"review": [{
  "@type": "Review",
  "author": { "@type": "Person", "name": "Ирина" },
  "datePublished": "2026-09-14",
  "reviewRating": { "@type": "Rating", "ratingValue": "5" },
  "reviewBody": "Раскладывается легко, ткань не скатывается после двух месяцев."
}]

Три правила, которые нельзя нарушать: отзывы видны на этой же странице, написаны покупателями (не скопированы с маркетплейса или сайта производителя), рейтинг считается по ним же. Разметка чужих или придуманных отзывов — прямое нарушение правил обоих поисковиков, за него можно лишиться расширенных сниппетов на всём сайте. Как собирать и модерировать отзывы, чтобы было что размечать, — на странице про отзывы и вопросы покупателей.

Хлебные крошки

BreadcrumbList повторяет видимую цепочку «Главная → Раздел → Категория» и помогает поисковику понять место страницы в каталоге. Цепочка должна совпадать с той, что видна на странице, и вести на канонические адреса категорий. Логика самого дерева и крошек описана на странице про структуру каталога.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Мебель", "item": "https://shop.example/catalog/mebel/" },
    { "@type": "ListItem", "position": 2, "name": "Диваны", "item": "https://shop.example/catalog/mebel/divany/" },
    { "@type": "ListItem", "position": 3, "name": "Диван-кровать Осло" }
  ]
}

Последний элемент — текущая страница, ссылку на неё можно не указывать.

А категориям нужна разметка?

Категории размечать Product не нужно: это список, а не товар. Хватит BreadcrumbList. Иногда добавляют ItemList со ссылками на карточки, но заметного эффекта в выдаче это обычно не даёт, а ошибки в нём появляются при каждом изменении сортировки. Для магазина важнее, чтобы на каждой карточке разметка была полной и точной. Сведения о самом магазине — Organization с названием, логотипом и контактами — разумно разместить один раз на главной или на странице контактов.

Проверка: порядок действий

  1. Возьмите три типовые страницы: карточку в наличии, карточку без наличия, категорию.
  2. Прогоните каждую через валидатор микроразметки в Яндекс Вебмастере и через Rich Results Test. Валидатор Schema.org покажет синтаксические ошибки независимо от правил поисковиков.
  3. Сравните цену и наличие в результате проверки с тем, что видно на странице прямо сейчас.
  4. После внедрения следите за отчётами о расширенных результатах для товаров в Search Console: там видно, сколько страниц прошло проверку и какие поля отсутствуют.
  5. После каждого обновления шаблона карточки повторяйте проверку — разметка ломается тихо.

Проверить в своём магазине

  • Есть ли JSON-LD Product с Offer на всех карточках, а не только на части шаблонов.
  • Совпадают ли цена и статус наличия в разметке с видимыми на странице.
  • Что в разметке у товаров «нет в наличии» и «цена по запросу».
  • Размечены ли только собственные отзывы, видимые на странице.
  • Совпадает ли BreadcrumbList с видимыми крошками и ведёт ли на канонические адреса.
  • Нет ли ошибок в отчётах о товарах в Search Console и в валидаторе Яндекса.

Вопросы владельцев магазинов

Почему разметка без ошибок, а звёзд в выдаче всё равно нет?

Валидатор проверяет только корректность кода, а решение о показе расширенного сниппета поисковик принимает сам, учитывая качество сайта, запрос и тип выдачи. Убедитесь, что отзывы реальные и видны на странице, а затем просто наблюдайте: появление звёзд не гарантировано даже при идеальной разметке.

Можно ли скопировать разметку из модуля CMS и не трогать?

Можно взять готовый модуль как основу, но проверьте его на своих страницах. Типичные проблемы модулей — пустой бренд, цена без учёта скидки, вечный статус «в наличии» и рейтинг, который выводится даже без отзывов. Всё это лучше исправить до того, как поисковик проиндексирует тысячи карточек.

Микроданные или JSON-LD — есть ли разница для Яндекса?

Яндекс понимает оба формата. JSON-LD удобнее в поддержке, потому что не переплетается с вёрсткой и не ломается при её правке. Главное — не дублировать одну и ту же сущность в двух форматах с разными значениями.

Нужна ли разметка, если товары уже выгружаются в фид?

Да, это разные каналы. Фид передаёт данные в товарные сервисы поисковиков, а разметка описывает конкретную страницу при обычном обходе. Они должны совпадать по цене и наличию: расхождение между ними поисковик может воспринять как недостоверные данные.

Проверено редакцией 27.10.2026. Интерфейсы Вебмастера, Метрики и Search Console время от времени меняются — названия разделов сверяйте со справкой сервисов.