Carruseles de datos estructurados (beta)

Google usa datos estructurados para comprender el contenido de la página y mostrarlo con una apariencia más enriquecida en los resultados de la búsqueda, lo que se denomina resultado enriquecido. Esta guía se enfoca en un nuevo resultado enriquecido de carrusel que está en versión beta. Es un resultado enriquecido en formato de lista en el cual las personas pueden desplazarse horizontalmente para ver más entidades de un sitio determinado (también conocido como carrusel de host). Cada tarjeta del carrusel puede tener información de tu sitio sobre el precio, la calificación y las imágenes de las entidades que aparecen en la página.

Para poder usar este resultado enriquecido de la versión beta, agrega datos estructurados de ItemList en combinación con al menos uno de los siguientes elementos de datos estructurados admitidos:

A continuación, se muestra cómo se ven los carruseles en la Búsqueda de Google cuando se agrega lenguaje de marcado de ItemList en combinación con un tipo de contenido compatible:

Nuevo resultado enriquecido de carrusel

Disponibilidad de funciones

Esta función se encuentra en versión beta, por lo que es posible que veas cambios en los requisitos o lineamientos a medida que la desarrollemos. Si tu empresa se encuentra en el EEE o atiende a usuarios del EEE, y deseas obtener más información y expresar interés en estas nuevas experiencias, puedes comenzar por completar el formulario correspondiente (para las consultas sobre vuelos, usa elformulario de interés para consultas sobre vuelos).

Por el momento, esta función solo está disponible en los países del Espacio Económico Europeo (EEE), tanto en computadoras de escritorio como en dispositivos móviles. Está disponible para búsquedas de viajes, lugares y compras. En el caso de las consultas de compras, se está probando primero en Alemania, Francia, República Checa y el Reino Unido.

Agrega datos estructurados

Los datos estructurados son un formato estandarizado para proporcionar información sobre una página y clasificar su contenido. Si aún no estás familiarizado con los datos estructurados, obtén más información sobre su funcionamiento.

A continuación se presenta una descripción general para agregar datos estructurados a un sitio:

  1. Elige una sola página de resumen que contenga información sobre cada entidad de la lista. Por ejemplo, una página de categoría que contenga los "Mejores hoteles en París" con vínculos a páginas de detalles específicas en tu sitio para obtener más información sobre cada hotel. Puedes mezclar y combinar diferentes tipos de entidades (por ejemplo, hoteles, restaurantes) si es necesario para tu situación. Por ejemplo, si tienes el artículo "Actividades en Suiza", que enumera eventos y empresas locales.
  2. Agrega las propiedades obligatorias a esa página de resumen. No necesitas agregar lenguaje de marcado a las páginas de detalles para ser apto para esta función beta. Según el formato que uses, obtén información sobre las ubicaciones donde puedes insertar datos estructurados en la página.
  3. Agrega las propiedades obligatorias y recomendadas para el tipo de contenido específico que se mostrará en el carrusel:

    Según tu situación, puedes elegir el mejor tipo para usar. Por ejemplo, si tienes una lista de hoteles y alquiler de vacaciones en tu página, usa los tipos Hotel y VacationRental. Si bien es ideal usar el tipo más cercano a tu situación, puedes optar por usar un tipo más genérico (por ejemplo, LocalBusiness).

  4. Sigue los lineamientos.
  5. Valida tu código con la Prueba de resultados enriquecidos.
  6. Implementa algunas páginas que incluyan tus datos estructurados y utiliza la Herramienta de inspección de URL para probar el modo en el que Google ve la página. Asegúrate de que Google pueda acceder a la página y que no esté bloqueada por un archivo robots.txt, una etiqueta noindex ni requisitos de acceso. Si la página se ve bien, puedes pedirle a Google que vuelva a rastrear tus URL.
  7. Para mantener informado a Google sobre los cambios futuros, te recomendamos que envíes un mapa del sitio. Puedes automatizar este proceso con la API de Search Console Sitemap.

Lineamientos

A fin de que tu página sea apta para los resultados enriquecidos de carrusel, debes seguir los Conceptos básicos sobre la Búsqueda y los lineamientos generales de datos estructurados. Además, se aplican los siguientes lineamientos a los resultados enriquecidos de carrusel:

  • Se permite el uso de tipos genéricos. Sin embargo, para usar las propiedades recomendadas, debes usar los tipos respectivos. Por ejemplo, para usar amenityFeature, utiliza el tipo LodgingBusiness.
  • Se permite el uso de campos adicionales o suplementarios, pero es posible que no aparezcan en el resultado enriquecido.
  • Tu sitio debe tener una página de resumen y varias páginas de detalles. Actualmente, esta función no está diseñada para admitir otras situaciones, como una página todo en uno donde los "detalles" son puntos de anclaje dentro de la misma página.
  • El lenguaje de marcado debe estar en una página de resumen o categoría, que es una página en forma de lista que contiene información sobre al menos tres entidades y, luego, incluye vínculos a otras páginas de tu sitio para obtener más información sobre esas entidades. Si bien no es necesario que agregues lenguaje de marcado a las páginas de detalles, debes incluir las URLs de estas páginas en el lenguaje de marcado de tu página de resumen.
  • Marca todos los elementos que estén en la página de resumen o categoría. Para categorías de paginación, agrega un ItemList a cada página posterior, además de incluir las entidades que se enumeran en esa página. En el caso de las páginas con desplazamiento infinito, céntrate en marcar las entidades que se cargan inicialmente en el viewport.

Ejemplos

A continuación, se muestra una estructura de alto nivel del carrusel. El orden especificado en el lenguaje de marcado es el que se usará para ordenar las tarjetas en el resultado enriquecido del carrusel.


  <html>
    <head>
      <title>Top 5 Restaurants in Italy</title>
      <script type="application/ld+json">
        {
        "@context": "https://schema.org",
        "@type": "ItemList",
          "itemListElement": [
            {
              "@type": "ListItem",
                "position": 1,
                "item": {
                  "@type": "Restaurant",
                  "name": "Trattoria Luigi",
                  "image": [
                    "https://example.com/photos/1x1/photo.jpg",
                    "https://example.com/photos/4x3/photo.jpg",
                    "https://example.com/photos/16x9/photo.jpg"
                  ],
                  "priceRange": "$$$",
                  "servesCuisine": "Italian",
                  "aggregateRating": {
                    "@type": "AggregateRating",
                    "ratingValue": 4.5,
                    "reviewCount": 250
                  },
                "url": "https://www.example.com/trattoria-luigi"
              }
            },
            {
              "@type": "ListItem",
                "position": 2,
                "item": {
                  "@type": "Restaurant",
                  "name": "La Pergola",
                  "image": [
                    "https://example.com/photos/1x1/photo.jpg",
                    "https://example.com/photos/4x3/photo.jpg",
                    "https://example.com/photos/16x9/photo.jpg"
                  ],
                  "priceRange": "$$$",
                  "servesCuisine": "Italian",
                  "aggregateRating": {
                    "@type": "AggregateRating",
                    "ratingValue": 4.9,
                    "reviewCount": 1150
                  },
                "url": "https://www.example.com/la-pergola"
              }
            },
            {
              "@type": "ListItem",
              "position": 3,
              "item": {
                "@type": "Restaurant",
                "name": "Pasta e Basta",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "priceRange": "$$$",
                "servesCuisine": "Italian",
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.2,
                  "reviewCount": 690
                },
              "url": "https://www.example.com/pasta-e-basta"
              }
            }
          ]
        }
      </script>
    </head>
    <body>
    </body>
  </html>
  

Definiciones de tipos de datos estructurados

Debes incluir las propiedades obligatorias a fin de que tu contenido sea apto para aparecer como resultado enriquecido. También puedes incluir las propiedades recomendadas para agregar más información sobre tu contenido, lo que podría brindar una mejor experiencia del usuario.

ItemList

ItemList es el elemento contenedor que incluye todos los elementos de la lista. Todas las URLs de los elementos de la lista deben dirigir a diferentes páginas del mismo dominio.

La definición completa de ItemList está disponible en schema.org/ItemList.

Propiedades obligatorias
itemListElement

ListItem

Lista de elementos. Para especificar una lista, define un ItemList que contenga al menos tres elementos itemListElement.item.

itemListElement.item

Subtipo de LocalBusiness, Product o Event

Es un elemento individual de una lista. Propaga este objeto con lo siguiente:

Ejemplo: Para un hotel, proporciona las propiedades priceRange y amenityFeature.

itemListElement.position

Integer

Es la posición del elemento en el carrusel. Es un número en base 1.

Propiedades comunes de los elementos de lista (LocalBusiness, Product, o Event)

Todos los tipos de elementos del carrusel tienen las siguientes propiedades en común.

Propiedades obligatorias
image

Valor repetido de URL o ImageObject

Una o más imágenes de la entidad o el elemento (por ejemplo, una imagen del hotel). No incluyas logotipos en esta propiedad de imagen.

Lineamientos de imagen adicionales:

  • Las URLs de las imágenes se deben poder indexar y rastrear. Para comprobar si Google puede acceder a tus URL, usa la Herramienta de inspección de URL.
  • Deben representar el contenido con lenguaje de marcado.
  • Las imágenes deben estar en un formato de archivo compatible con Google Imágenes.
  • Para obtener mejores resultados, recomendamos proporcionar varias imágenes de alta resolución (mínimo de 50,000 píxeles al multiplicar el ancho por la altura) con la siguiente relación de aspecto: 16x9, 4x3 y 1x1.

Por ejemplo:

"image": [
  "https://example.com/photos/1x1/photo.jpg",
  "https://example.com/photos/4x3/photo.jpg",
  "https://example.com/photos/16x9/photo.jpg"
]
name

Text

Es el nombre de string de la entidad o el elemento. Por ejemplo, el nombre de un hotel o una ficha de vacaciones. item.name es el título del elemento individual en el carrusel. Se ignora el formato HTML.

url

URL

Es la URL canónica de la página de detalles del elemento (por ejemplo, la página independiente de un solo hotel o ficha de vacaciones a la que se hizo referencia en la página de resumen). Todas las URL de la lista deben ser únicas y estar publicadas en el mismo dominio de la página actual (o uno superior o inferior).

Propiedades recomendadas
aggregateRating.bestRating

Number

Es el valor más alto permitido en este sistema de calificación (por ejemplo, 5 / 10). Si se omite bestRating, se asume que es 5.

aggregateRating.ratingCount

Number

Corresponde a la cantidad total de calificaciones que hay para este elemento en tu sitio.

aggregateRating.ratingValue

Number o Text

Corresponde a una calificación de calidad numérica para el elemento, ya sea un número, una fracción o un porcentaje (por ejemplo, 4, 60% o 6 / 10). Google comprende la escala de las fracciones y los porcentajes, ya que la misma está implícita en la fracción o en el porcentaje. La escala predeterminada para los números es una escala de 5 puntos, en la que 1 es el valor más bajo y 5 es el valor más alto. Si prefieres otra escala, usa bestRating y worstRating.

Para números decimales, usa un punto en lugar de una coma a fin de especificar el valor (por ejemplo, 4.4 en lugar de 4,4). En microdatos y RDFa, puedes usar atributos content para anular el contenido visible. De esa manera, puedes mostrarle al usuario la convención de estilo que desees y, al mismo tiempo, cumplir con el requisito de uso de puntos para los datos estructurados. Por ejemplo:

<span itemprop="ratingValue" content="4.4">4,4</span> stars

Definiciones adicionales de las propiedades específicas de los tipos

LocalBusiness (y subtipos)

Además de las propiedades de ListItem, Google admite las siguientes propiedades de LocalBusiness (incluidos sus subtipos) para los resultados enriquecidos de carrusel. Anida estas propiedades en itemListElement.item.

Propiedades recomendadas
amenityFeature

LocationFeatureSpecification

Solo para LodgingBusiness: Es un componente de comodidad (por ejemplo, una característica o un servicio) del alojamiento.

"amenityFeature": {
  "@type": "LocationFeatureSpecification",
  "name" : "beachAccess",
  "value": true
}
priceRange

Text

Es el intervalo de precios relativo de una empresa, que comúnmente se especifica mediante una cantidad normalizada de signos de moneda. Proporciona el intervalo de precios en cualquiera de los siguientes formatos:

  • Nivel de precio: Por ejemplo, "$", "$$", "$$$"
  • Rango: Por ejemplo, "$-$$"

Este campo debe tener menos de 12 caracteres. Si tiene más de 12, Google no mostrará el intervalo de precios de la empresa.

servesCuisine

Text

Solo para restaurantes: Es el tipo de cocina que sirve el restaurante.

Product

Además de las propiedades de ListItem, Google admite las siguientes propiedades de Product para los resultados enriquecidos de carrusel. Anida estas propiedades en itemListElement.item.

Propiedades recomendadas
offers

Offer o AggregateOffer

Corresponde a un objeto Offer o AggregateOffer anidado para vender el producto. Incluye las propiedades recomendadas para Offer o AggregateOffer (la que se aplique a tu contenido).

Si usas Offer, incluidas las siguientes propiedades:

  • offers.price
  • offers.priceCurrency

Si usas AggregateOffer, incluidas las siguientes propiedades:

  • offers.highPrice
  • offers.lowPrice
  • offers.priceCurrency
offers.highPrice

Number

Es el precio más alto de todas las ofertas disponibles. Si especificas un precio único con price, no es necesario que incluyas las propiedades de highPrice y lowPrice.

offers.lowPrice

Number

Es el precio más bajo de todas las ofertas disponibles. Si especificas un precio único con price, no es necesario que incluyas las propiedades de highPrice y lowPrice.

offers.price

Number

Es el precio de oferta de un producto o de un componente de precio cuando se adjunta a PriceSpecification y sus subtipos. Si especificas un intervalo de precios con lowPrice y highPrice, no incluyas la propiedad de price.

offers.priceCurrency

Text

Corresponde a la moneda utilizada para describir el precio del producto con el formato ISO 4217 de tres letras. Si no se proporciona una moneda, Google la establecerá de forma predeterminada en USD.

Event

Además de las propiedades de ListItem, Google admite las siguientes propiedades de Event para los resultados enriquecidos de carrusel. Anida estas propiedades en itemListElement.item.

Propiedades recomendadas
offers

Offer o AggregateOffer

Corresponde a un objeto Offer o AggregateOffer anidado para vender el evento. Incluye las propiedades recomendadas para Offer o AggregateOffer (la que se aplique a tu contenido).

Si usas Offer, incluidas las siguientes propiedades:

  • offers.price
  • offers.priceCurrency

Si usas AggregateOffer, incluidas las siguientes propiedades:

  • offers.highPrice
  • offers.lowPrice
  • offers.priceCurrency
offers.highPrice

Number

Es el precio más alto de todas las ofertas disponibles. Si especificas un precio único con price, no es necesario que incluyas las propiedades de highPrice y lowPrice.

offers.lowPrice

Number

Es el precio más bajo de todas las ofertas disponibles. Si especificas un precio único con price, no es necesario que incluyas las propiedades de highPrice y lowPrice.

offers.price

Number

Es el precio de tus boletos, incluidos los cargos y las tarifas por el servicio. No olvides actualizarlo a medida que cambie el precio o se agoten los boletos. Si especificas un intervalo de precios con lowPrice y highPrice, no incluyas la propiedad de price.

Si el evento está disponible sin cargo, tarifas ni cargos de servicio, configura price como 0.

"offers": {
  "@type": "Offer",
  "price": 0
}
offers.priceCurrency

Text

Corresponde a la moneda utilizada para describir el precio del producto con el formato ISO 4217 de tres letras. Si no se proporciona una moneda, Google la establecerá de forma predeterminada en USD.

Ejemplos de situaciones comunes

Ejemplo de Restaurant

Este es un ejemplo de un carrusel de restaurante en JSON-LD.


<html>
    <head>
      <title>Top 5 Restaurants in Paris</title>
      <script type="application/ld+json">
        {
          "@context": "https://schema.org",
          "@type": "ItemList",
          "itemListElement": [
            {
              "@type": "ListItem",
              "position": 1,
              "item": {
                "@type": "Restaurant",
                "name": "Trattoria Luigi",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "priceRange": "$$$",
                "servesCuisine": "Italian",
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.5,
                  "reviewCount": 250
                },
                "url": "https://www.example.com/restaurant-location-1"
              }
            },
            {
              "@type": "ListItem",
              "position": 2,
              "item": {
                "@type": "Restaurant",
                "name": "La Pergola",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "priceRange": "$$$",
                "servesCuisine": "Italian",
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.9,
                  "reviewCount": 1150
                },
                "url": "https://www.example.com/restaurant-location-2"
              }
            },
            {
              "@type": "ListItem",
              "position": 3,
              "item": {
                "@type": "Restaurant",
                "name": "Pasta e Basta",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "priceRange": "$$$",
                "servesCuisine": "Italian",
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.2,
                  "reviewCount": 690
                },
                "url": "https://www.example.com/restaurant-location-3"
              }
            }
          ]
        }
      </script>
    </head>
    <body>
    </body>
  </html>

Ejemplo de alojamiento (Hotels y VacationRental)

Este es un ejemplo de un carrusel de alojamiento en JSON-LD.


<html>
    <head>
      <title>Top 5 Hotels in Paris</title>
      <script type="application/ld+json">
        {
        "@context": "https://schema.org",
        "@type": "ItemList",
            "itemListElement": [
              {
                "@type": "ListItem",
                "position": 1,
                "item": {
                  "@type": "Hotel",
                  "name": "Four Seasons Hotel George V, Paris",
                  "image": [
                    "https://example.com/photos/1x1/photo.jpg",
                    "https://example.com/photos/4x3/photo.jpg",
                    "https://example.com/photos/16x9/photo.jpg"
                  ],
                  "priceRange": "$$$$",
                  "amenityFeature": {
                      "@type": "LocationFeatureSpecification",
                      "name" : "internetType",
                      "value": "Free"
                  },
                  "aggregateRating": {
                    "@type": "AggregateRating",
                    "ratingValue": 4.9,
                    "reviewCount": 50
                  },
                  "url": "https://www.example.com/four-seasons"
                }
              },
              {
                "@type": "ListItem",
                "position": 2,
                "item": {
                  "@type": "VacationRental",
                  "name": "Downtown Condo",
                  "image": [
                    "https://example.com/photos/1x1/photo.jpg",
                    "https://example.com/photos/4x3/photo.jpg",
                    "https://example.com/photos/16x9/photo.jpg"
                  ],
                  "priceRange": "$$",
                  "amenityFeature": {
                    "@type": "LocationFeatureSpecification",
                    "name" : "instantBookable",
                    "value": true
                  },
                  "aggregateRating": {
                    "@type": "AggregateRating",
                    "ratingValue": 4.7,
                    "reviewCount": 827
                  },
                  "url": "https://www.example.com/downtown-condo"
                }
              },
              {
                "@type": "ListItem",
                "position": 3,
                "item": {
                  "@type": "Hotel",
                  "name": "Ritz Paris",
                  "image": [
                    "https://example.com/photos/1x1/photo.jpg",
                    "https://example.com/photos/4x3/photo.jpg",
                    "https://example.com/photos/16x9/photo.jpg"
                  ],
                  "priceRange": "$$$$",
                  "amenityFeature": {
                    "@type": "LocationFeatureSpecification",
                    "name" : "freeBreakfast",
                    "value": true
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.9,
                  "reviewCount": 1290
                },
                "url": "https://www.example.com/ritz-paris"
              }
            }
          ]
        }
      </script>
    </head>
    <body>
    </body>
  </html>

Ejemplo de Cosas que hacer

Este es un ejemplo de un carrusel de Cosas que hacer en JSON-LD.


<html>
    <head>
      <title>Top 5 Things To Do in Paris</title>
      <script type="application/ld+json">
        {
          "@context": "https://schema.org",
          "@type": "ItemList",
          "itemListElement": [
            {
              "@type": "ListItem",
              "position": 1,
              "item": {
                "@type": "Event",
                "name": "Paris Seine River Dinner Cruise",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "offers": {
                  "@type": "Offer",
                  "price": 45.00,
                  "priceCurrency": "EUR"
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.2,
                  "reviewCount": 690
                },
                "url": "https://www.example.com/event-location1"
              }
            },
            {
              "@type": "ListItem",
              "position": 2,
              "item": {
                "@type": "LocalBusiness",
                "name": "Notre-Dame Cathedral",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "priceRange": "$",
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.8,
                  "reviewCount": 4220
                },
                "url": "https://www.example.com/localbusiness-location"
              }
            },
            {
              "@type": "ListItem",
              "position": 3,
              "item": {
                "@type": "Event",
                "name": "Eiffel Tower With Host Summit Tour",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "offers": {
                  "@type": "Offer",
                  "price": 59.00,
                  "priceCurrency": "EUR"
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.9,
                  "reviewCount": 652
                },
                "url": "https://www.example.com/event-location2"
              }
            }
          ]
        }
      </script>
    </head>
    <body>
    </body>
  </html>
  

Ejemplo de Product

Este es un ejemplo de un carrusel de producto en JSON-LD.


<html>
    <head>
      <title>Top coats of the season</title>
      <script type="application/ld+json">
        {
          "@context": "https://schema.org",
          "@type": "ItemList",
          "itemListElement": [
            {
              "@type": "ListItem",
              "position": 1,
              "item": {
                "@type": "Product",
                "name": "Puffy Coat Series by Goat Coat",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "offers": {
                  "@type": "AggregateOffer",
                  "lowPrice": 45.00,
                  "highPrice": 60.00,
                  "priceCurrency": "EUR"
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.9,
                  "reviewCount": 50
                },
                "url": "https://www.example.com/puffy-coats"
              }
            },
            {
              "@type": "ListItem",
              "position": 2,
              "item": {
                "@type": "Product",
                "name": "Wool Coat Series by Best Coats Around",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "offers": {
                  "@type": "AggregateOffer",
                  "lowPrice": 189.00,
                  "highPrice": 200.00,
                  "priceCurrency": "EUR"
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.7,
                  "reviewCount": 827
                },
                "url": "https://www.example.com/wool-coats"
              }
            },
            {
              "@type": "ListItem",
              "position": 3,
              "item": {
                "@type": "Product",
                "name": "Antartic Coat by Cold Coats",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "offers": {
                  "@type": "Offer",
                  "price": 45.00,
                  "priceCurrency": "EUR"
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.9,
                  "reviewCount": 1290
                },
                "url": "https://www.example.com/antartic-coat"
              }
            }
          ]
        }
      </script>
    </head>
    <body>
    </body>
  </html>
  

Solución de problemas

Si tienes problemas para implementar o depurar datos estructurados, te brindamos algunos recursos que podrían resultarte útiles.