Datos estructurados de empresa local (LocalBusiness)

Cuando los usuarios buscan empresas en la Búsqueda de Google o en Maps, los resultados de búsqueda pueden mostrar un panel de información de Google importante con detalles sobre una empresa que coincide con la consulta. Cuando los usuarios hacen una búsqueda sobre un tipo de empresa (como "los mejores restaurantes de Nueva York"), puede que vean un carrusel de empresas relacionadas con su consulta. Con los datos estructurados de la empresa local, puedes indicarle a Google los horarios de apertura, los distintos departamentos de la empresa, reseñas y más información. Si quieres ayudar a los usuarios a hacer una reserva o un pedido directamente en los resultados de búsqueda, puedes usar la API de reservas de Maps para permitir realizar reservas, pagos y otras operaciones.

Cómo añadir datos estructurados

Los datos estructurados son un formato estandarizado con el que se puede proporcionar información sobre una página y clasificar su contenido. Consulta cómo funcionan los datos estructurados si aún no te has familiarizado con ellos.

A continuación se explica a grandes rasgos cómo crear, probar y publicar datos estructurados. Si necesitas una guía detallada para añadir datos estructurados a una página web, consulta el codelab de datos estructurados.

  1. Añade las propiedades obligatorias. Consulta más información sobre dónde insertar datos estructurados en una página en función del formato que estés utilizando.
  2. Sigue las directrices.
  3. Valida tu código con la prueba de resultados enriquecidos y corrige los errores críticos. Te recomendamos que también corrijas los problemas no críticos que puedan marcarse en la herramienta, ya que pueden ayudar a mejorar la calidad de los datos estructurados (sin embargo, esto no es necesario para que se muestren los resultados enriquecidos).
  4. Crea varias páginas que incluyan tus datos estructurados y comprueba cómo las ve Google con la herramienta de inspección de URLs. Asegúrate de que Google pueda acceder a tu página y de que no esté bloqueada por un archivo robots.txt, por la etiqueta noindex ni por requisitos de inicio de sesión. Si la página se ve bien, puedes solicitar que Google vuelva a rastrear tus URLs.
  5. Para que Google siempre tenga la versión actualizada de tus páginas, te recomendamos que envíes un sitemap. Puedes automatizar este envío con la API Sitemap de Search Console.

Ejemplos

Fichas sencillas de empresa local

A continuación se muestra un ejemplo de una ficha sencilla de una empresa local con JSON-LD.

Ficha de empresa local en la Búsqueda de Google


<html>
  <head>
    <title>Dave's Steak House</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Restaurant",
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "name": "Dave's Steak House",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "148 W 51st St",
        "addressLocality": "New York",
        "addressRegion": "NY",
        "postalCode": "10019",
        "addressCountry": "US"
      },
      "review": {
        "@type": "Review",
        "reviewRating": {
          "@type": "Rating",
          "ratingValue": "4",
          "bestRating": "5"
        },
        "author": {
          "@type": "Person",
          "name": "Lillian Ruiz"
        }
      },
      "geo": {
        "@type": "GeoCoordinates",
        "latitude": 40.761293,
        "longitude": -73.982294
      },
      "url": "https://www.example.com/restaurant-locations/manhattan",
      "telephone": "+12122459600",
      "servesCuisine": "American",
      "priceRange": "$$$",
      "openingHoursSpecification": [
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": [
            "Monday",
            "Tuesday"
          ],
          "opens": "11:30",
          "closes": "22:00"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": [
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "opens": "11:30",
          "closes": "23:00"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": "Saturday",
          "opens": "16:00",
          "closes": "23:00"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": "Sunday",
          "opens": "16:00",
          "closes": "22:00"
        }
      ],
      "menu": "https://www.example.com/menu"
    }
    </script>
  </head>
  <body>
  </body>
</html>

A continuación, se muestra un ejemplo de un restaurante que cumple los requisitos de una página de detalles (suponiendo que también haya una página de resumen con etiquetas de carrusel). En estos momentos, el carrusel de restaurantes está limitado a un pequeño conjunto de proveedores de restaurantes. Si quieres participar, manifiesta tu interés en nuestro formulario.

<html>
  <head>
    <title>Trattoria Luigi</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@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",
       "address": {
         "@type": "PostalAddress",
         "streetAddress": "148 W 51st St",
         "addressLocality": "New York",
         "addressRegion": "NY",
         "postalCode": "10019",
         "addressCountry": "US"
       }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Horario de apertura

En los siguientes ejemplos se muestra cómo indicar diferentes tipos de horarios de apertura.

Horario estándar

Si se excluyen las propiedades validFrom y validThrough, significa que las horas son válidas durante todo el año. En este ejemplo se define una empresa que está abierta de lunes a viernes desde las 9:00 h hasta las 21:00 h, y durante el fin de semana desde las 10:00 h hasta las 23:00 h.

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday"
    ],
    "opens": "09:00",
    "closes": "21:00"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "Saturday",
      "Sunday"
    ],
    "opens": "10:00",
    "closes": "23:00"
  }
]
Horarios nocturnos

Para indicar horas posteriores a la medianoche, define las horas de apertura y cierre mediante una sola propiedad OpeningHoursSpecification. En este ejemplo se definen los horarios desde el sábado a las 18:00 h hasta el domingo a las 3:00 h.

"openingHoursSpecification": {
  "@type": "OpeningHoursSpecification",
  "dayOfWeek": "Saturday",
  "opens": "18:00",
  "closes": "03:00"
}
Horarios de todo el día

Para mostrar una empresa abierta las 24 horas del día, pon "00:00" en la propiedad open y "23:59" en la propiedad closes. Si quieres indicar que una empresa está cerrada todo el día, pon "00:00" en las propiedades opens y closes. En este ejemplo se muestra una empresa abierta todo el día los sábados y cerrada todo el día los domingos.

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Saturday",
    "opens": "00:00",
    "closes": "23:59"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Sunday",
    "opens": "00:00",
    "closes": "00:00"
  }
]
Horario estacional

Con las propiedades validFrom y validThrough, puedes definir horarios estacionales. En este ejemplo se muestra una empresa cerrada durante las vacaciones de invierno.

"openingHoursSpecification": {
  "@type": "OpeningHoursSpecification",
  "opens": "00:00",
  "closes": "00:00",
  "validFrom": "2015-12-23",
  "validThrough": "2016-01-05"
}

Múltiples departamentos

En una empresa con departamentos, cada uno con sus distintas propiedades, como los horarios de apertura o los números de teléfono, puedes marcar la propiedad department con un elemento para cada departamento. Define las propiedades que difieran de la tienda principal en los elementos respectivos de cada departamento.

<html>
  <head>
    <title>Dave's Department Store</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Store",
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "name": "Dave's Department Store",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "1600 Saratoga Ave",
        "addressLocality": "San Jose",
        "addressRegion": "CA",
        "postalCode": "95129",
        "addressCountry": "US"
      },
      "geo": {
        "@type": "GeoCoordinates",
        "latitude": 37.293058,
        "longitude": -121.988331
      },
      "url": "https://www.example.com/store-locator/sl/San-Jose-Westgate-Store/1427",
      "priceRange": "$$$",
      "telephone": "+14088717984",
      "openingHoursSpecification": [
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday"
          ],
          "opens": "08:00",
          "closes": "23:59"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": "Sunday",
          "opens": "08:00",
          "closes": "23:00"
        }
      ],
      "department": [
        {
          "@type": "Pharmacy",
          "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
          "name": "Dave's Pharmacy",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "1600 Saratoga Ave",
            "addressLocality": "San Jose",
            "addressRegion": "CA",
            "postalCode": "95129",
            "addressCountry": "US"
          },
          "priceRange": "$",
          "telephone": "+14088719385",
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "09:00",
              "closes": "19:00"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": "Saturday",
              "opens": "09:00",
              "closes": "17:00"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": "Sunday",
              "opens": "11:00",
              "closes": "17:00"
            }
          ]
        }
      ]
    }
    </script>
  </head>
  <body>
  </body>
</html>

Directrices

Debes seguir estas directrices para que puedas aparecer en los resultados enriquecidos de empresa local.

Definiciones de tipos de datos estructurados

En las tablas siguientes se enumeran las propiedades, y su uso, de las empresas locales y los tipos de acciones comerciales, según las definiciones completas que puedes consultar en schema.org/LocalBusiness.

Debes incluir las propiedades obligatorias para que tu contenido pueda mostrarse como un resultado enriquecido. Si quieres, puedes especificar también las propiedades recomendadas para proporcionar más información sobre tu contenido y, así, ofrecer una mejor experiencia de usuario.

Puedes añadir datos estructurados de LocalBusiness a cualquier página de tu sitio, aunque puede ser más conveniente incluirlos en una página que contenga información sobre tu empresa.

LocalBusiness

Puedes consultar la definición completa de LocalBusiness en schema.org/LocalBusiness. Define cada ubicación de la empresa local como un tipo LocalBusiness. Utiliza el subtipo LocalBusiness más específico posible; por ejemplo, Restaurant, DaySpa, HealthClub, etc. Si tienes varios tipos, especifícalos como un array (additionalType no es compatible). Por ejemplo, si tu empresa ofrece varios servicios:

{
  "@context": "https://schema.org",
  "@type": ["Electrician", "Plumber", "Locksmith"],
  ....
}

Las propiedades que admite Google son las siguientes:

Propiedades obligatorias
address

PostalAddress

Indica la ubicación física de la empresa. Incluye tantas propiedades como sea posible. Cuantas más propiedades proporciones, mayor será la calidad del resultado que obtendrán los usuarios. Por ejemplo:


"address": {
  "@type": "PostalAddress",
  "streetAddress": "148 W 51st St Suit 42 Unit 7",
  "addressLocality": "New York",
  "addressRegion": "NY",
  "postalCode": "10019",
  "addressCountry": "US"
}
name

Text

Es el nombre de la empresa.

Propiedades recomendadas
aggregateRating

AggregateRating

Para sitios que capturan reseñas de otras empresas locales: la valoración media de la empresa local según varias valoraciones o reseñas. Sigue las directrices de fragmentos de reseñas y la lista de propiedades de reseñas agregadas obligatorias y recomendadas.

department

LocalBusiness

Indica un elemento anidado para un solo departamento. Puedes definir cualquiera de las propiedades en esta tabla para un departamento.

Directrices adicionales:

  • Incluye el nombre de la tienda con el nombre del departamento con el formato siguiente: {store name} {department name}. Por ejemplo, gMart y gMart Pharmacy.
  • Si el nombre del departamento tiene una marca explícita, especifica un nombre de departamento por sí mismo. Por ejemplo: Best Buy y Geek Squad.
geo

GeoCoordinates

Indica las coordenadas geográficas de la empresa.

geo.latitude

Number

Indica, con una precisión de al menos 5 decimales, la latitud de la ubicación de la empresa.

geo.longitude

Number

Indica, con una precisión de al menos 5 decimales, la longitud de la ubicación de la empresa.

menu

URL

En el caso de un establecimiento de comida, la URL completa de su carta.

openingHoursSpecification

Matriz u objeto único (se admiten ambos) de OpeningHoursSpecification

Horario durante el cual la ubicación de la empresa está abierta.

openingHoursSpecification.closes

Time

Hora a la que se cierra la ubicación de la empresa, en formato hh:mm:ss.

openingHoursSpecification.dayOfWeek

Text

Una o varias de estas opciones:

  • Lunes
  • Martes
  • Miércoles
  • Jueves
  • Viernes
  • Sábado
  • Domingo
openingHoursSpecification.opens

Time

Hora a la que se abre la ubicación de la empresa, en formato hh:mm:ss.

openingHoursSpecification.validFrom

Date

Indica la fecha de inicio del cierre comercial estacional, en formato AAAA-MM-DD.

openingHoursSpecification.validThrough

Date

Indica la fecha de finalización del cierre comercial estacional, en formato AAAA-MM-DD.

priceRange

Text

El intervalo de precios relativo de una empresa, normalmente especificado por un intervalo numérico (por ejemplo, "10-15 $") o un número normalizado de signos de moneda (por ejemplo, "$$$").

Este campo debe tener menos de 100 caracteres. Si tiene más, Google no incluirá ningún intervalo de precios junto a la empresa.

review

Reseña

Para sitios que capturan reseñas sobre otras empresas locales: una reseña de la empresa local. Sigue las directrices de fragmentos de reseñas y la lista de propiedades de reseñas obligatorias y recomendadas.

servesCuisine

servesCuisine

Indica el tipo de cocina que se sirve en el restaurante.

telephone

Text

Indica un número de teléfono comercial destinado a ser la forma de contacto principal de los clientes. No olvides incluir el código de país y el prefijo telefónico en el número de teléfono.

url

URL

Indica la URL completa de la ubicación de la empresa específica. La URL debe ser un enlace que funcione.

Si tienes varios restaurantes en la ficha de tu sitio web y quieres que puedan aparecer en un carrusel anfitrión, añade el objeto Carrusel. Además de las propiedades Carrusel estándar, define las siguientes propiedades de tu objeto Carrusel. Si bien no son obligatorias, debes añadir las siguientes propiedades si quieres que tu lista de restaurantes pueda aparecer en un carrusel anfitrión.

Las propiedades que admite Google son las siguientes:

Propiedades obligatorias
image

Valores URL o ImageObject repetidos

Muestra una o más imágenes del restaurante.

Directrices de imágenes adicionales:

  • Cada página debe contener al menos una imagen (con o sin etiquetas). Google elegirá la mejor imagen para mostrarla en los resultados de búsqueda teniendo en cuenta su relación de aspecto y su resolución.
  • Las URLs de imagen deben poder rastrearse e indexarse. Comprueba que Google pueda acceder a tus URLs mediante la herramienta de inspección de URLs.
  • Las imágenes deben ser representativas del contenido etiquetado.
  • Las imágenes deben estar en un formato de archivo compatible con Google Imágenes.
  • Para obtener los mejores resultados, recomendamos proporcionar varias imágenes de alta resolución (mínimo de 50.000 píxeles al multiplicar la anchura y la altura) con las siguientes relaciones 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 del restaurante.

Propiedades recomendadas
address

PostalAddress

Indica la ubicación física de la empresa. Incluye tantas propiedades como sea posible. Cuantas más propiedades proporciones, mayor será la calidad del resultado que obtendrán los usuarios. Por ejemplo:


"address": {
  "@type": "PostalAddress",
  "streetAddress": "148 W 51st St",
  "addressLocality": "New York",
  "addressRegion": "NY",
  "postalCode": "10019",
  "addressCountry": "US"
}
servesCuisine

servesCuisine

Indica el tipo de cocina que se sirve en el restaurante.

Solucionar problemas

Si tienes problemas para implementar o depurar datos estructurados, a continuación se incluyen algunos recursos que pueden serte útiles.