Schema.org JSON-LD: структурированные данные для Google Search
Как выбрать, создать и проверить структурированные данные, которые соответствуют видимому контенту и могут претендовать на расширенные результаты, но не гарантируют их показ.
Структурированные данные Schema.org — это словарь, который поисковые системы используют, чтобы понимать содержание страниц. Если разметка сделана правильно, обычный сниппет превращается в расширенный результат: со звёздами рейтинга, ценами товаров, часами работы или фото прямо в выдаче Google.
Статья описывает всю систему: как выбрать формат и приоритетные схемы и как написать JSON-LD для Organization, Product, AggregateRating, Review и ImageObject. Отдельно разберём подтипы, которые чаще всего упускают.
<script> → Google разбирает структуру → расширенный сниппет со звёздами рейтинга и ценой прямо в выдаче.Что такое Schema.org и зачем нужна разметка
Schema.org — совместный проект Google, Bing, Yahoo и Яндекса, запущенный в 2011 году. Словарь содержит более 900 типов данных и тысячи свойств. Все типы наследуют базовый Thing и делятся на ветки: Person, Organization, Product, Event, CreativeWork, Action и другие.
Соответствие странице
Разметка должна описывать информацию, которую пользователь видит и может проверить.
Соблюдайте правила функций
Используйте поддерживаемый тип и выполняйте требования к содержимому и технические правила.
Тестируйте граф
Проверьте синтаксис и требования политики, затем посмотрите отрисованную страницу.
Без обещания показа
Пройденный тест не гарантирует показ расширенного результата.
Разметка Schema.org решает сразу три задачи. Для поисковых систем — однозначно определяет сущности: это организация, а не просто текст с названием; это цена товара, а не просто число. Для пользователей — расширенные результаты в выдаче делают сниппеты информативнее до клика. Для бизнеса — выше 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>.
<!-- Base JSON-LD template -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Site Name",
"url": "https://example.com"
}
</script>
<!-- Multiple schemas — multiple <script> blocks -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Company",
"url": "https://example.com"
}
</script>Приоритет схем: что даёт расширенные результаты в Google
Не каждая схема Schema.org даёт расширенный результат. Google поддерживает ограниченный набор типов, которые меняют внешний вид выдачи. Остальные схемы помогают Google понять контент, но не меняют внешний вид сниппета.
Бизнес и организации
LocalBusiness, Restaurant, Store — часы работы, адрес, телефон и рейтинг в Knowledge Panel. Высший приоритет для локального бизнеса.
Товары и цены
Product + Offer — цена, наличие и рейтинг прямо в сниппете. Google Shopping и расширенные сниппеты. Обязательно для e-commerce.
Контент и FAQ
Article и другие поддерживаемые типы должны точно описывать видимый контент. FAQ полезен читателю, но не гарантирует расширение в выдаче.
Рейтинги и отзывы
AggregateRating + Review — звёзды в сниппете. Самый заметный визуальный элемент. Работает для Product, LocalBusiness, Recipe, Course.
| Тип схемы | Расширенный результат в Google | Приоритет |
|---|---|---|
| Product + Offer | Цена, наличие, рейтинг в сниппете; карточки Shopping | Критичен для e-commerce |
| LocalBusiness + AggregateRating | Knowledge Panel, Map Pack, звёзды | Критичен для локального бизнеса |
| Article / NewsArticle | Карусель Top Stories, дата публикации | Высокий для медиа и блогов |
| BreadcrumbList | Хлебные крошки вместо URL в сниппете | Высокий для любого сайта |
| 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": "Company Name",
"legalName": "Example LLC",
"url": "https://example.com",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png",
"width": 200,
"height": 60
},
"description": "Brief company description for Knowledge Graph.",
"foundingDate": "2015",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-800-123-4567",
"contactType": "customer service",
"availableLanguage": "English"
},
"sameAs": [
"https://www.linkedin.com/company/yourcompany",
"https://twitter.com/yourcompany",
"https://www.facebook.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": "The Birch Restaurant",
"url": "https://example.com",
"telephone": "+1-212-555-0100",
"email": "info@example.com",
"servesCuisine": ["American", "European"],
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10001",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 40.7128,
"longitude": -74.0060
},
"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://en.wikipedia.org/wiki/...
- LinkedIn, Twitter/X, Facebook, Instagram
- YouTube-канал организации
- Google Business Profile (для локального бизнеса)
- Отраслевые каталоги — медицинские реестры, адвокатские палаты и т. п.
Product — схема товара и все подтипы
Product — базовая схема для любого товара или позиции. Она работает вместе с Offer (цена и наличие) и AggregateRating (рейтинг). Правильно реализованная схема Product даёт расширенный результат в 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 требует минимальный набор полей: name, image, description и вложенный Offer с priceCurrency, price и availability. Если не заполнено хотя бы одно из этих полей, сниппет товара не обогатится.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Air X Pro Running Shoes",
"description": "Lightweight running shoes with foam sole for road running. Weight 230g, drop 10mm.",
"sku": "AIRX-001-BLK",
"mpn": "AIRX001",
"gtin13": "0123456789012",
"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": "USD",
"price": "89.99",
"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 Smartphone",
"brand": { "@type": "Brand", "name": "Samsung" },
"image": "https://example.com/galaxy-s25.jpg",
"offers": {
"@type": "AggregateOffer",
"priceCurrency": "USD",
"lowPrice": "799",
"highPrice": "1099",
"offerCount": "3",
"offers": [
{
"@type": "Offer",
"name": "128 GB / Black",
"price": "799",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
{
"@type": "Offer",
"name": "256 GB / White",
"price": "899",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
{
"@type": "Offer",
"name": "512 GB / Violet",
"price": "1099",
"priceCurrency": "USD",
"availability": "https://schema.org/PreOrder"
}
]
}
}ProductGroup — товары с вариантами
ProductGroup — группа связанных товаров, которые отличаются параметрами (размером, цветом, материалом). Используется на карточках товаров с вариантами. Каждый конкретный вариант — это вложенный Product, у которого isVariantOf указывает на родительский ProductGroup.
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Air X Pro Running Shoes",
"description": "Road running shoes available in multiple colours and sizes.",
"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 — Black, US 9",
"sku": "AIRX-BLK-9",
"color": "Black",
"size": "US 9",
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Air X Pro — Blue, US 11",
"sku": "AIRX-BLU-11",
"color": "Blue",
"size": "US 11",
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"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 Running Shoes",
"image": "https://example.com/airx.jpg",
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"bestRating": "5",
"worstRating": "1",
"reviewCount": "128",
"ratingCount": "215"
}
}Review — отдельные отзывы
Review — схема для отдельного текстового отзыва. Он вкладывается в родительский объект через свойство review. Каждый Review содержит автора, оценку и текст отзыва. Google может показать фрагмент текста отзыва в расширенном результате.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Air X Pro Running Shoes",
"image": "https://example.com/airx.jpg",
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128"
},
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"name": "Great shoes for daily runs",
"reviewBody": "Been running in them for 3 months — sole holds up well, feet don't tire. Recommend for road running.",
"datePublished": "2026-03-15",
"author": {
"@type": "Person",
"name": "Alex K."
}
},
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "4",
"bestRating": "5"
},
"reviewBody": "Good cushioning, but runs a little small. Order half a size up.",
"datePublished": "2026-04-01",
"author": {
"@type": "Person",
"name": "Maria S."
}
}
]
}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 |
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Air X Pro Running Shoes",
"image": [
{
"@type": "ImageObject",
"url": "https://example.com/airx-front.jpg",
"width": 1200,
"height": 1200,
"caption": "Air X Pro — front view"
},
{
"@type": "ImageObject",
"url": "https://example.com/airx-side.jpg",
"width": 1200,
"height": 1200,
"caption": "Air X Pro — side view"
}
],
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}Объединение схем на одной странице
На одной странице несколько схем добавляются отдельными блоками <script>. Ниже полная разметка страницы товара: продавец, хлебные крошки, товар с ценой, рейтингом и отзывом.
<!-- Schema 1: Selling organisation (on all site pages) -->
<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>
<!-- Schema 2: Breadcrumbs -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com" },
{ "@type": "ListItem", "position": 2, "name": "Footwear", "item": "https://example.com/shoes" },
{ "@type": "ListItem", "position": 3, "name": "Air X Pro" }
]
}
</script>
<!-- Schema 3: Product with price, rating and review (on product page) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Air X Pro Running Shoes",
"description": "Road running shoes.",
"sku": "AIRX-001",
"brand": { "@type": "Brand", "name": "RunMax" },
"image": "https://example.com/airx.jpg",
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"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": "Alex K." },
"reviewBody": "Excellent shoes, run in them every day.",
"datePublished": "2026-04-10"
}
}
</script>Проверка структурированных данных
После внедрения всегда проверяйте разметку. Google предоставляет два официальных инструмента, а Search Console показывает реальную картину того, что видит сканер на проиндексированных страницах.
Откройте search.google.com/test/rich-results и введите URL или HTML. Инструмент покажет, какие расширенные результаты доступны для схемы, какие поля обязательны и что заполнено неверно. Это единственное место, где можно подтвердить, что разметка действительно даст визуальные улучшения в выдаче.
Откройте validator.schema.org для полной проверки по стандарту Schema.org, а не только по типам, которые поддерживает Google. Он проверяет обязательные свойства каждого типа и предупреждает о несовместимых комбинациях — полезно для сложных вложенных схем.
Search Console → Enhancements → выберите тип схемы. Здесь видны реальные ошибки на проиндексированных страницах. Именно эти ошибки сейчас блокируют расширенные результаты на живых URL — это самый практичный сигнал.
Чек-лист структурированных данных
Базовая реализация JSON-LD
- Тег <script type="application/ld+json"> добавлен в <head> или в конец <body>
- Каждый блок содержит @context: "https://schema.org" и @type
- У всех основных сущностей есть уникальный @id в формате URL с фрагментом (#name)
- JSON валиден: нет висячих запятых, все кавычки закрыты
- Разметка есть в HTML-ответе сервера (не только через JavaScript)
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
- Отзывы в разметке — настоящие отзывы реальных пользователей
FAQ
Влияет ли разметка Schema.org напрямую на позиции в Google?
Можно ли добавить структурированные данные через Google Tag Manager?
<script> с JSON-LD. Но Google предпочитает разметку в HTML-ответе сервера, а не добавленную через JavaScript. Разметка, вставленная через GTM, может распознаться неверно при сканировании, если Googlebot не выполняет JS на этой странице. Оптимально формировать JSON-LD на стороне сервера.Сколько отзывов включать в разметку Review?
Почему расширенные результаты не появляются, хотя разметка прошла проверку?
Как указывать цену для международного магазина?
Check it with SpiderHead
Free and local: run the audit on your own machine.



