Empresa local

Cuando los usuarios buscan empresas en la Búsqueda de Google o Maps, es posible que los resultados muestren un panel de conocimiento destacado de Google con detalles sobre una empresa que coincida con la búsqueda. Cuando buscan un tipo de empresa (por ejemplo, "mejores restaurantes en Nueva York"), es posible que vean un carrusel de empresas relacionadas a esa búsqueda. Con los datos estructurados de empresas locales, puedes indicarle a Google tus horarios de atención, los diferentes departamentos dentro de la empresa, reseñas de tu negocio y mucho más. Si quieres ayudar a los usuarios a hacer una reserva o un pedido directamente en los resultados de la Búsqueda, puedes usar la API de reservas de Maps para habilitar reservas, pagos y otras acciones.

Cómo agregar 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, presentamos una descripción general para aprender a compilar, probar y actualizar datos estructurados. Si quieres obtener una guía paso a paso para agregar datos estructurados a una página web, consulta el codelab de datos estructurados.

  1. Agrega las propiedades obligatorias. Según el formato que uses, obtén información sobre las ubicaciones donde puedes insertar datos estructurados en la página.
  2. Sigue los lineamientos.
  3. Valida tu código con la Prueba de resultados enriquecidos.
  4. 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.
  5. 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.

Ejemplos

Ficha simple de empresa local

El siguiente es un ejemplo de una ficha simple de empresa local que usa JSON-LD.

Ficha de empresas locales 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": "http://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": "http://www.example.com/menu",
      "acceptsReservations": "True"
    }
    </script>
  </head>
  <body>
  </body>
</html>

Este es un ejemplo de un carrusel de restaurante. Por el momento, se limita a un pequeño conjunto de proveedores de restaurantes. Si te interesa participar, completa este 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 atención

En los siguientes ejemplos, se muestra cómo marcar diferentes tipos de horarios de atención.

Horario estándar

El horario estándar, sin incluir las propiedades validFrom y validThrough, implica que el horario es válido para todo el año. En este ejemplo, se define una empresa que abre los días de semana de 9 a.m. a 9 p.m., y los fines de semana de 10 a.m. a 11 p.m.

"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"
  }
]
Horario de trasnoche

Para el horario de pasada la medianoche, define la hora de apertura y de cierre con una sola propiedad OpeningHoursSpecification. En este ejemplo, se define el horario de los sábados desde las 6 p.m. hasta los domingos a las 3 a.m.

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

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

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Saturday",
    "opens": "00:00",
    "closes": "23:59"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Sunday",
    "opens": "00:00",
    "closes": "00:00"
  }
]
Horarios navideños

Usa las propiedades validFrom y validThrough para definir horarios navideños. En este ejemplo, se muestran empresas cerradas durante las vacaciones de invierno.

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

Varios departamentos

En el caso de una empresa que tiene departamentos con características propias (como horarios de atención o números de teléfono), puedes marcar la propiedad department con un elemento para cada departamento. Define las propiedades que son diferentes a las de la tienda principal de manera individual en cada elemento del departamento correspondiente.

<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": "http://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",
          "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>

Lineamientos

Para aparecer en los resultados enriquecidos como empresa local, debes cumplir con los siguientes lineamientos.

Definiciones de tipos de datos estructurados

En las siguientes tablas, se enumeran las propiedades y cómo se usan para las empresas locales y los tipos de acciones para empresas, según las definiciones completas de schema.org/LocalBusiness.

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.

LocalBusiness

La definición completa de LocalBusiness está disponible en schema.org/LocalBusiness. Define la ubicación de cada empresa local como tipo de LocalBusiness. Usa el subtipo más específico posible de LocalBusiness; por ejemplo, Restaurant, DaySpa, HealthClub, etcétera.

Propiedades obligatorias
address

PostalAddress

Corresponde a la ubicación física de la empresa. Incluye tantas propiedades como sea posible. Cuantas más propiedades indiques, mayor será la calidad del resultado para 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

Corresponde al nombre de la empresa.

Propiedades recomendadas
aggregateRating

AggregateRating

Para sitios que captan opiniones sobre otras empresas locales: La calificación promedio de la empresa local según varias opiniones o calificaciones. Consulta los lineamientos para fragmentos de opiniones y la lista de propiedades de opiniones agregadas obligatorias y recomendadas.

department

LocalBusiness

Corresponde a un elemento anidado para un único departamento. Puedes definir cualquiera de las propiedades de esta tabla para un departamento.

Lineamientos adicionales:

  • Incluye el nombre de la tienda y el del departamento en el siguiente formato: {store name} {department name}. Por ejemplo, gMart y gMart Pharmacy.
  • Si el departamento tiene un nombre de marca explícito, puedes especificarlo de esa manera. Por ejemplo, Best Buy y Geek Squad.
geo

GeoCoordinates

Corresponde a las coordenadas geográficas de la empresa.

geo.latitude

Number

Latitud de la ubicación de la empresa. La precisión debe ser de al menos 5 cifras decimales.

geo.longitude

Number

Longitud de la ubicación de la empresa. La precisión debe ser de al menos 5 cifras decimales.

menu

URL

Corresponde a la URL completa del menú de los establecimientos de comida.

openingHoursSpecification

Corresponde al arreglo o a un único objeto (se admiten ambos) de OpeningHoursSpecification

Corresponde al horario en el que se encuentra abierta la ubicación de la empresa.

openingHoursSpecification.closes

Time

Corresponde a la hora en que cierra la ubicación de la empresa, con formato hh:mm:ss.

openingHoursSpecification.dayOfWeek

Text

Corresponde a una o varias de estas opciones:

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

Time

Corresponde a la hora en que abre la ubicación de la empresa, con formato hh:mm:ss.

openingHoursSpecification.validFrom

Date

Corresponde a la fecha de inicio del cierre de temporada de la empresa, con formato AAAA-MM-DD.

openingHoursSpecification.validThrough

Date

Corresponde a la fecha de finalización del cierre de temporada de la empresa, con formato AAAA-MM-DD.

priceRange

Text

Es el intervalo de precios relativo de un comercio, comúnmente especificado con un rango numérico (por ejemplo, "USD 10-USD 15") o con una cantidad normalizada de símbolos de moneda (por ejemplo, "$$$").

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

review

Review

Para los sitios que capturan opiniones sobre otras empresas locales: Una opinión sobre la empresa local. Sigue los lineamientos para los fragmentos de opiniones, así como la lista de propiedades de opiniones obligatorias y recomendadas.

servesCuisine

servesCuisine

Corresponde al tipo de comida que sirve el restaurante.

telephone

Text

Corresponde al número de teléfono de la empresa destinado a ser el método de contacto principal para clientes. Asegúrate de incluir el código de país y de área.

url

URL

Corresponde a la URL completa de la ubicación específica de la empresa. La URL debe ser un vínculo activo.

Si tienes varias fichas de restaurantes en tu sitio y quieres que sean aptas para un carrusel de alojamiento, agrega el objeto "Carousel". Además de las propiedades estándares de Carousel, define las siguientes propiedades en el objeto. Si bien las propiedades de carrusel no son obligatorias, debes agregar las siguientes propiedades para que tu ficha de restaurante sea apta para un carrusel de alojamiento.

Propiedades obligatorias
image

Valor repetido de URL o ImageObject

Corresponde a 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 lograr los mejores resultados, incluye varias imágenes de alta resolución (mínimo de 50.000 píxeles al multiplicar la anchura por la altura) cuya relación de aspecto sea 16x9, 4x3 o 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

Corresponde al nombre del restaurante.

Propiedades recomendadas
address

PostalAddress

Corresponde a la ubicación física de la empresa. Incluye tantas propiedades como sea posible. Cuantas más propiedades indiques, mayor será la calidad del resultado para los usuarios. Por ejemplo:


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

servesCuisine

Corresponde al tipo de comida que sirve el restaurante.

Solución de problemas

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