Каталог и техникапозиция 8 из 9
Микроразметка для интернет-магазина: Product, Offer, отзывы
Что разобрано ниже
Микроразметка сообщает поисковику и другим машинам, что на странице товар, сколько он стоит, есть ли он в наличии и как его оценили покупатели. Для магазина минимальный набор — 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 с названием, логотипом и контактами — разумно разместить один раз на главной или на странице контактов.
Проверка: порядок действий
- Возьмите три типовые страницы: карточку в наличии, карточку без наличия, категорию.
- Прогоните каждую через валидатор микроразметки в Яндекс Вебмастере и через Rich Results Test. Валидатор Schema.org покажет синтаксические ошибки независимо от правил поисковиков.
- Сравните цену и наличие в результате проверки с тем, что видно на странице прямо сейчас.
- После внедрения следите за отчётами о расширенных результатах для товаров в Search Console: там видно, сколько страниц прошло проверку и какие поля отсутствуют.
- После каждого обновления шаблона карточки повторяйте проверку — разметка ломается тихо.
Проверить в своём магазине
- Есть ли JSON-LD
ProductсOfferна всех карточках, а не только на части шаблонов. - Совпадают ли цена и статус наличия в разметке с видимыми на странице.
- Что в разметке у товаров «нет в наличии» и «цена по запросу».
- Размечены ли только собственные отзывы, видимые на странице.
- Совпадает ли
BreadcrumbListс видимыми крошками и ведёт ли на канонические адреса. - Нет ли ошибок в отчётах о товарах в Search Console и в валидаторе Яндекса.
Вопросы владельцев магазинов
Почему разметка без ошибок, а звёзд в выдаче всё равно нет?
Валидатор проверяет только корректность кода, а решение о показе расширенного сниппета поисковик принимает сам, учитывая качество сайта, запрос и тип выдачи. Убедитесь, что отзывы реальные и видны на странице, а затем просто наблюдайте: появление звёзд не гарантировано даже при идеальной разметке.
Можно ли скопировать разметку из модуля CMS и не трогать?
Можно взять готовый модуль как основу, но проверьте его на своих страницах. Типичные проблемы модулей — пустой бренд, цена без учёта скидки, вечный статус «в наличии» и рейтинг, который выводится даже без отзывов. Всё это лучше исправить до того, как поисковик проиндексирует тысячи карточек.
Микроданные или JSON-LD — есть ли разница для Яндекса?
Яндекс понимает оба формата. JSON-LD удобнее в поддержке, потому что не переплетается с вёрсткой и не ломается при её правке. Главное — не дублировать одну и ту же сущность в двух форматах с разными значениями.
Нужна ли разметка, если товары уже выгружаются в фид?
Да, это разные каналы. Фид передаёт данные в товарные сервисы поисковиков, а разметка описывает конкретную страницу при обычном обходе. Они должны совпадать по цене и наличию: расхождение между ними поисковик может воспринять как недостоверные данные.
Проверено редакцией 27.10.2026. Интерфейсы Вебмастера, Метрики и Search Console время от времени меняются — названия разделов сверяйте со справкой сервисов.