Empresa local

Cuando los usuarios buscan empresas en la Búsqueda de Google o Maps, es posible que los resultados muestren una tarjeta de Gráfico de conocimiento importante con detalles sobre una empresa que coincida con la consulta. Cuando buscan un tipo de negocio (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 cómo funcionan.

A continuación, presentamos una descripción general de cómo generar, 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. Para obtener información sobre dónde colocar los datos estructurados en la página, mira el video JSON-LD Structured Data: Where to insert in a page?.
  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 del mapa del sitio de Search Console.

Ejemplos

Ficha simple de empresa local

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


<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"
       ],
      "@id": "http://davessteakhouse.example.com",
      "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"
       ],
      "@id": "http://davesdeptstore.example.com",
      "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 LocalBusiness más específico posible; por ejemplo, Restaurant, DaySpa, HealthClub, etcétera.

Propiedades obligatorias
@id

URL

Corresponde a un único ID único global de la ubicación específica de la empresa en la forma de una URL Debe ser estable y mantener el mismo formato con el paso del tiempo. La Búsqueda de Google trata a la URL como una string opaca y no es necesario que sea un vínculo activo. Si la empresa tiene varias ubicaciones, asegúrate de que esta propiedad sea única para cada una de ellas.

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

Corresponde a la calificación promedio del negocio 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

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

geo.longitude

Number

Corresponde a la 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, "$$$").

review

Review

Es una opinión sobre el negocio 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. A diferencia de la propiedad @id, esta 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.

Lineamientos adicionales de las imágenes:

  • Cada página debe contener al menos una imagen (independientemente de si se incluye lenguaje de marcado o no). Google elegirá la mejor imagen para mostrar en los resultados de la Búsqueda según la relación de aspecto y resolución.
  • Las URL de las imágenes se deben poder rastrear e indexar.
  • Deben representar el contenido que incluya lenguaje de marcado.
  • Deben estar en formato .jpg, .png o .gif.
  • Para obtener mejores resultados, proporciona varias imágenes en alta resolución (mínimo de 50,000 píxeles al multiplicar el ancho por el alto) con la siguiente relación de aspecto: 16 × 9, 4 × 3 y 1 × 1.

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 datos estructurados, aquí tienes algunos recursos que pueden ayudarte.