Структурированные данные
Schema.org и JSON-LD: полный разбор Organization, Product, рейтингов и фото

Полный разбор разметки Schema.org: форматы JSON-LD vs Microdata, приоритет схем для [rich results](/glossary/rich-results), Organization и все подтипы, Product с Offer и AggregateOffer, рейтинги, отзывы и фотографии — с рабочим кодом.
Структурированные данные Schema.org — это словарь, который поисковые системы используют для понимания содержимого страниц. Правильно реализованная разметка превращает обычный сниппет в rich result: со звёздами рейтинга, ценой товара, временем работы организации или фотографией прямо в выдаче Google.
В этой статье разберём полную систему: от выбора формата и приоритетных схем — до конкретного JSON-LD кода для Organization, Product, AggregateRating, Review и ImageObject. Особый акцент — на всех подтипах, которые часто упускают из виду.
<script> → Google парсит структуру → rich snippet со звёздами рейтинга и ценой прямо в выдаче.Что такое Schema.org и зачем нужна разметка
Schema.org — совместный проект Google, Bing, Yahoo и Яндекса, запущенный в 2011 году. Словарь содержит более 900 типов данных и тысячи свойств. Все типы наследуются от базового Thing и делятся на крупные ветки: Person, Organization, Product, Event, CreativeWork, Action и другие.
Рост CTR с rich results
Сниппеты со звёздами рейтинга и другими rich elements стабильно показывают более высокий CTR по сравнению с обычными
Типов в Schema.org
Словарь охватывает всё: от рецептов и товаров до научных статей и программных продуктов
Рекомендация Google
Google официально рекомендует JSON-LD для всех новых реализаций структурированных данных
Прямого влияния на позиции
Разметка не повышает позиции напрямую, но rich results увеличивают CTR, что косвенно улучшает ранжирование
Разметка Schema.org решает три задачи одновременно. Для поисковика — однозначно идентифицирует сущности: это организация, а не просто текст с названием; это цена товара, а не просто число. Для пользователя — rich results в SERP повышают информативность сниппета до клика. Для бизнеса — повышенный CTR и присутствие в Knowledge Graph.
Форматы: JSON-LD, Microdata, RDFa
Структурированные данные Schema.org можно добавить тремя способами. Для новых проектов выбор однозначен — JSON-LD, остальные поддерживаются, но неудобны в поддержке.
| Формат | Где размещается | Связь с HTML | Рекомендация Google |
|---|---|---|---|
| JSON-LD | Тег <script type="application/ld+json"> | Отдельно от HTML | Предпочтительный |
| Microdata | Атрибуты itemscope, itemtype, itemprop | Встроен в HTML-элементы | Поддерживается |
| RDFa | Атрибуты vocab, typeof, property | Встроен в HTML-элементы | Поддерживается |
Базовый шаблон JSON-LD одинаков для любой страницы: тег <script> с типом application/ld+json, внутри — JSON с обязательными полями @context и @type. Тег можно разместить в <head> или в конце <body>. Несколько схем — несколько отдельных <script> тегов.
<!-- Базовый шаблон JSON-LD -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Название сайта",
"url": "https://example.com"
}
</script>
<!-- Несколько схем — несколько <script> блоков -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Компания",
"url": "https://example.com"
}
</script>Приоритет схем: что даёт rich results в Google
Не каждая схема из Schema.org превращается в rich result. Google поддерживает ограниченный набор типов, которые дают визуальные улучшения в SERP. Остальные схемы полезны для понимания контента, но не меняют внешний вид сниппета.
Бизнес и организации
LocalBusiness, Restaurant, Store — часы работы, адрес, телефон, рейтинг в Knowledge Panel. Высший приоритет для локального бизнеса.
Товары и цены
Product + Offer — цена, наличие, рейтинг прямо в сниппете. Google Shopping и rich snippets. Обязательно для e-commerce.
Контент и FAQ
Article, FAQPage, HowTo — FAQ разворачивается прямо в выдаче, расширяя сниппет. Даёт много дополнительного пространства в SERP.
Рейтинги и отзывы
AggregateRating + Review — звёзды в сниппете. Самый заметный визуальный элемент. Работает для Product, LocalBusiness, Recipe, Course.
| Тип схемы | Rich result в Google | Приоритет |
|---|---|---|
| Product + Offer | Цена, наличие, рейтинг в сниппете; Shopping карточки | Критический для e-commerce |
| LocalBusiness + AggregateRating | Knowledge Panel, Map Pack, звёзды | Критический для локального бизнеса |
| FAQPage | Раскрываемые вопросы под сниппетом | Высокий для контентных страниц |
| Article / NewsArticle | Top Stories карусель, дата публикации | Высокий для медиа и блогов |
| BreadcrumbList | Хлебные крошки вместо URL в сниппете | Высокий для любого сайта |
| HowTo | Пошаговые инструкции с фото в SERP | Средний для инструкций |
| Event | Карточка события, дата, место | Средний для event-страниц |
| Recipe | Карточка рецепта с фото, временем, калориями | Средний для кулинарных сайтов |
| Organization (не Local) | Knowledge Graph, логотип в результатах | Базовый для всех сайтов |
Organization — базовая схема и все подтипы
Organization — базовый тип для любой компании, организации или бренда. Иерархия подтипов широка: каждый добавляет специфические поля. Выбор правильного подтипа важен — Google использует его для определения контекста бизнеса и отображения в Knowledge Panel.
| Тип | Для кого | Ключевые доп. поля |
|---|---|---|
| Organization | Любая компания, НКО, бренд без физадреса | name, url, logo, sameAs |
| LocalBusiness | Любой бизнес с физическим адресом | address, telephone, openingHours, geo |
| Store | Розничный магазин | currenciesAccepted, paymentAccepted |
| FoodEstablishment | Кафе, ресторан (базовый) | servesCuisine, menu, hasMap |
| Restaurant | Ресторан | servesCuisine, menu, acceptsReservations |
| CafeOrCoffeeShop | Кофейня | servesCuisine |
| FastFoodRestaurant | Фастфуд | servesCuisine |
| MedicalOrganization | Медучреждение (базовый) | medicalSpecialty |
| Hospital | Больница | availableService, medicalSpecialty |
| MedicalClinic | Клиника | medicalSpecialty, availableService |
| Dentist | Стоматология | availableService |
| LegalService | Юридическая фирма | — |
| Lawyer | Адвокат / юрист | — |
| AccountingService | Бухгалтерия / аудит | — |
| FinancialService | Банк, страховая, инвестиции | — |
| RealEstateAgent | Агентство недвижимости | — |
| AutomotiveBusiness | Автодилер, автосервис (базовый) | — |
| AutoDealer | Автосалон | — |
| AutoRepair | Автосервис | — |
| Hotel | Отель | amenityFeature, checkinTime, checkoutTime |
| SportsActivityLocation | Спортивный объект (базовый) | availableService |
| GymOrHealthClub | Фитнес-клуб | — |
| GovernmentOrganization | Государственная организация | — |
| EducationalOrganization | Учебное заведение (базовый) | — |
| CollegeOrUniversity | Университет / колледж | — |
| School | Школа | — |
| Corporation | Корпорация (крупный бизнес) | tickerSymbol, legalName |
Базовая Organization
Базовую схему Organization добавляют на главную страницу любого сайта. Она помогает Google идентифицировать бренд и связать его с профилями через sameAs. Поле @id с уникальным идентификатором позволяет ссылаться на эту организацию из других схем без дублирования данных.
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Название компании",
"legalName": "ООО Пример",
"url": "https://example.com",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png",
"width": 200,
"height": 60
},
"description": "Краткое описание компании для Knowledge Graph.",
"foundingDate": "2015",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+7-800-123-45-67",
"contactType": "customer service",
"availableLanguage": "Russian"
},
"sameAs": [
"https://vk.com/yourcompany",
"https://t.me/yourcompany",
"https://www.instagram.com/yourcompany"
]
}LocalBusiness — физический бизнес с адресом
LocalBusiness — наиболее важный подтип для бизнеса с физическим присутствием. Правильно заполненная схема повышает шансы на появление в Google Map Pack (блок карт в топе выдачи) и Knowledge Panel с часами работы. Ключевые поля: address, geo, openingHoursSpecification, telephone, priceRange.
{
"@context": "https://schema.org",
"@type": "Restaurant",
"@id": "https://example.com/#business",
"name": "Ресторан Берёзка",
"url": "https://example.com",
"telephone": "+7-495-123-45-67",
"email": "info@example.com",
"servesCuisine": ["Русская кухня", "Европейская кухня"],
"priceRange": "₽₽",
"address": {
"@type": "PostalAddress",
"streetAddress": "ул. Арбат, 10",
"addressLocality": "Москва",
"addressRegion": "Москва",
"postalCode": "119019",
"addressCountry": "RU"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 55.7493,
"longitude": 37.5885
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "12:00",
"closes": "23:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday", "Sunday"],
"opens": "12:00",
"closes": "00:00"
}
],
"image": "https://example.com/photos/restaurant.jpg",
"hasMap": "https://maps.google.com/?cid=XXXXXX"
}sameAs — связь с внешними профилями
Поле sameAs сообщает Google, что ваша организация идентична профилям на внешних платформах. Это ключевое поле для построения Knowledge Graph — базы сущностей Google. Чем больше авторитетных источников подтверждают существование организации, тем выше вероятность появления в Knowledge Panel.
- Wikidata (наиболее авторитетный): https://www.wikidata.org/wiki/Q...
- Wikipedia: https://ru.wikipedia.org/wiki/...
- VK, Instagram, Facebook, LinkedIn, Twitter/X
- YouTube канал организации
- 2GIS, Яндекс.Карты (для локального бизнеса)
- Отраслевые каталоги — для медицины, юридических услуг, недвижимости
Product — схема товара и все подтипы
Product — базовая схема для любого товара или продукта. Работает вместе с Offer (цена и наличие) и AggregateRating (рейтинг). Правильно реализованная схема даёт rich result в Google: цену, статус наличия и звёзды рейтинга прямо в сниппете.
| Тип | Для чего | Особенности |
|---|---|---|
| Product | Базовая схема любого товара | name, image, description обязательны |
| Offer | Конкретное предложение: цена + наличие | price, priceCurrency, availability обязательны |
| AggregateOffer | Диапазон цен (несколько офферов) | lowPrice, highPrice, offerCount |
| ProductGroup | Группа товаров с вариантами | variesBy, hasVariant |
| IndividualProduct | Конкретный вариант в ProductGroup | isVariantOf → ProductGroup |
| Brand | Бренд товара (вложен в Product) | name обязателен |
Базовая Product с Offer
Google требует минимальный набор полей для rich result: name, image, description, а также вложенный Offer с priceCurrency, price и availability. Без хотя бы одного из этих полей сниппет товара не будет обогащён.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Кроссовки беговые Air X Pro",
"description": "Лёгкие беговые кроссовки с пенной подошвой для асфальта. Вес 230 г, дроп 10 мм.",
"sku": "AIRX-001-BLK",
"mpn": "AIRX001",
"gtin13": "4607134200010",
"brand": {
"@type": "Brand",
"name": "RunMax"
},
"image": [
"https://example.com/photos/airx-front.jpg",
"https://example.com/photos/airx-side.jpg",
"https://example.com/photos/airx-back.jpg"
],
"offers": {
"@type": "Offer",
"url": "https://example.com/products/air-x-pro",
"priceCurrency": "RUB",
"price": "5990",
"priceValidUntil": "2026-12-31",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "RunMax Store"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128"
}
}AggregateOffer — диапазон цен
Если товар предлагается несколькими продавцами или существует в нескольких вариантах — используйте AggregateOffer. Показывает диапазон цен (lowPrice — highPrice) вместо единой цены.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Смартфон Galaxy S25",
"brand": { "@type": "Brand", "name": "Samsung" },
"image": "https://example.com/galaxy-s25.jpg",
"offers": {
"@type": "AggregateOffer",
"priceCurrency": "RUB",
"lowPrice": "79990",
"highPrice": "109990",
"offerCount": "3",
"offers": [
{
"@type": "Offer",
"name": "128 GB / Чёрный",
"price": "79990",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock"
},
{
"@type": "Offer",
"name": "256 GB / Белый",
"price": "89990",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock"
},
{
"@type": "Offer",
"name": "512 GB / Фиолетовый",
"price": "109990",
"priceCurrency": "RUB",
"availability": "https://schema.org/PreOrder"
}
]
}
}ProductGroup — товар с вариантами
ProductGroup — группа связанных товаров, отличающихся параметрами (размер, цвет, материал). Используется на карточке товара с вариантами. Каждый конкретный вариант — вложенный Product с isVariantOf, указывающим на родительский ProductGroup.
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Кроссовки Air X Pro",
"description": "Беговые кроссовки в нескольких цветах и размерах.",
"url": "https://example.com/products/air-x-pro",
"brand": { "@type": "Brand", "name": "RunMax" },
"productGroupID": "AIRX-PRO",
"variesBy": ["https://schema.org/color", "https://schema.org/size"],
"hasVariant": [
{
"@type": "Product",
"name": "Air X Pro — Чёрный, 42",
"sku": "AIRX-BLK-42",
"color": "Чёрный",
"size": "42",
"offers": {
"@type": "Offer",
"price": "5990",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Air X Pro — Синий, 44",
"sku": "AIRX-BLU-44",
"color": "Синий",
"size": "44",
"offers": {
"@type": "Offer",
"price": "5990",
"priceCurrency": "RUB",
"availability": "https://schema.org/OutOfStock"
}
}
]
}AggregateRating и Review — рейтинги и отзывы
Звёзды рейтинга в поисковой выдаче — самый заметный визуальный элемент сниппета. Реализуются через два связанных типа: AggregateRating (суммарный рейтинг) и Review (отдельный отзыв). Оба типа всегда вкладываются в родительскую схему: Product, LocalBusiness, Recipe, Course, Book и другие.
AggregateRating — суммарный рейтинг
AggregateRating отражает совокупную оценку: среднее значение и количество голосов. Google отображает его как звёзды в сниппете. Обязательные поля: ratingValue (среднее значение) и reviewCount или ratingCount.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Кроссовки Air X Pro",
"image": "https://example.com/airx.jpg",
"offers": {
"@type": "Offer",
"price": "5990",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"bestRating": "5",
"worstRating": "1",
"reviewCount": "128",
"ratingCount": "215"
}
}Review — отдельные отзывы
Review — схема отдельного текстового отзыва. Вкладывается в родительский объект через свойство review. Каждый Review содержит автора, оценку и текст. Google может отображать фрагмент текста отзыва в rich snippet.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Кроссовки Air X Pro",
"image": "https://example.com/airx.jpg",
"offers": {
"@type": "Offer",
"price": "5990",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128"
},
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"name": "Отличные кроссовки для ежедневных пробежек",
"reviewBody": "Бегаю в них уже 3 месяца — подошва держит хорошо, нога не устаёт. Рекомендую для асфальта.",
"datePublished": "2026-03-15",
"author": {
"@type": "Person",
"name": "Алексей К."
}
},
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "4",
"bestRating": "5"
},
"reviewBody": "Хорошая амортизация, но размер немного маломерит. Брать на 0.5 размера больше.",
"datePublished": "2026-04-01",
"author": {
"@type": "Person",
"name": "Мария С."
}
}
]
}ImageObject — фотографии в разметке
Изображения в Schema.org указываются двумя способами: как строка с URL ("image": "https://example.com/photo.jpg") или как объект ImageObject с метаданными. Для большинства схем достаточно строки, но для Article, Recipe, HowTo Google рекомендует ImageObject — он позволяет указать размеры, подпись и формат.
| Тип схемы | Требования к изображению | Мин. ширина |
|---|---|---|
| Product | Хотя бы одно изображение товара, белый фон предпочтителен | 800 px рекомендован |
| Article / NewsArticle | Минимум 3 изображения: 16:9, 4:3, 1:1 | 1200 px |
| Recipe | Изображение готового блюда обязательно | Любой, 1200×628 оптимально |
| LocalBusiness | Фото входа, интерьера, фасада | Любой |
| Organization (лого) | Прямоугольное, белый/прозрачный фон | 112×112 мин, до 1×10 ratio |
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Кроссовки Air X Pro",
"image": [
{
"@type": "ImageObject",
"url": "https://example.com/airx-front.jpg",
"width": 1200,
"height": 1200,
"caption": "Кроссовки Air X Pro — вид спереди"
},
{
"@type": "ImageObject",
"url": "https://example.com/airx-side.jpg",
"width": 1200,
"height": 1200,
"caption": "Кроссовки Air X Pro — вид сбоку"
}
],
"offers": {
"@type": "Offer",
"price": "5990",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock"
}
}Объединение схем на одной странице
На одной странице можно (и нужно) размещать несколько схем — отдельными блоками <script>. Пример полной разметки карточки товара: организация-продавец, хлебные крошки, товар с ценой, рейтингом и отзывом.
<!-- Схема 1: Организация-продавец (на всех страницах сайта) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "RunMax Store",
"url": "https://example.com",
"logo": "https://example.com/logo.png"
}
</script>
<!-- Схема 2: Хлебные крошки -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Главная", "item": "https://example.com" },
{ "@type": "ListItem", "position": 2, "name": "Обувь", "item": "https://example.com/shoes" },
{ "@type": "ListItem", "position": 3, "name": "Air X Pro" }
]
}
</script>
<!-- Схема 3: Товар с ценой, рейтингом и отзывом (на странице товара) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Кроссовки Air X Pro",
"description": "Беговые кроссовки для асфальта.",
"sku": "AIRX-001",
"brand": { "@type": "Brand", "name": "RunMax" },
"image": "https://example.com/airx.jpg",
"offers": {
"@type": "Offer",
"price": "5990",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2026-12-31",
"seller": { "@id": "https://example.com/#organization" }
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128",
"bestRating": "5"
},
"review": {
"@type": "Review",
"reviewRating": { "@type": "Rating", "ratingValue": "5" },
"author": { "@type": "Person", "name": "Алексей К." },
"reviewBody": "Отличные кроссовки, бегаю в них каждый день.",
"datePublished": "2026-04-10"
}
}
</script>Валидация разметки
После реализации разметку обязательно нужно проверить. Google предоставляет два официальных инструмента, а Search Console даёт реальную картину того, что видит краулер на проиндексированных страницах.
Откройте search.google.com/test/rich-results, введите URL или HTML-код. Инструмент покажет: какие rich results доступны для данной схемы, какие поля обязательны и что заполнено неверно. Только здесь видно, даст ли разметка visual enhancements в SERP.
Откройте validator.schema.org для полной валидации по стандарту Schema.org. Проверяет обязательные свойства каждого типа и предупреждает о несовместимых комбинациях — полезно при сложных вложенных схемах.
Search Console → Улучшения (Enhancements) → выберите тип схемы. Раздел показывает реальные ошибки на проиндексированных страницах. Ошибки здесь — это то, что мешает rich results прямо сейчас, на живых URL.
Чеклист структурированных данных
JSON-LD базовая реализация
- Тег <script type="application/ld+json"> добавлен в <head> или конец <body>
- Каждый блок содержит @context: "https://schema.org" и @type
- Все главные сущности имеют уникальный @id в формате URL с фрагментом (#name)
- JSON валиден — нет лишних запятых, все кавычки закрыты
- Разметка присутствует в HTML-ответе сервера (не только через JS)
Organization / LocalBusiness
- Выбран правильный подтип (Restaurant, Dentist, AutoDealer и т.д.) вместо просто Organization
- Заполнены: name, url, telephone, address (для LocalBusiness)
- Добавлен geo с точными координатами (latitude, longitude)
- openingHoursSpecification заполнен: дни по-английски, время в формате HH:MM
- sameAs ссылается минимум на соцсети + Wikidata (если есть)
Product
- Заполнены: name, description, image (минимум одно изображение)
- Вложен Offer с полями: price, priceCurrency, availability, priceValidUntil
- availability использует полный URL: https://schema.org/InStock
- Указаны sku и/или gtin13 для Google Shopping
- AggregateRating вложен, если на странице есть рейтинги пользователей
Рейтинги и отзывы
- AggregateRating содержит ratingValue, reviewCount, bestRating, worstRating
- Значения AggregateRating соответствуют реальным данным с сайта
- Review вложен в родительский объект (Product / LocalBusiness), а не отдельным блоком
- Каждый Review имеет author (Person), reviewRating, datePublished, reviewBody
- Отзывы в разметке — реальные отзывы реальных пользователей