Provide Local Business Information

When users search for a business on Google Search or Maps, they may see a prominent "Knowledge Panel" card with details about the searched-for business.

Use markup on your official website to provide Google with information about local business locations. These attributes appear on the card and elsewhere throughout Google Search and Maps. For instance, a restaurant's menu URL appears prominently on the card, letting users click through to see what kind of food and drink is available.

Adding structured data markup to your site

Providing business information to Google is straightforward: simply define a schema.org LocalBusiness item for each business location, inclusive of:

  • Disambiguation properties such as the business name, address, and telephone.
  • Service-related properties such as operating hours and menu URLs.

We recommend using JSON-LD as the data format.

The schema.org markup should be embedded on your official web site.

Test and validate your markup with the structured data testing tool.

Markup properties

Each local business location should be defined as a LocalBusiness item. Use the most specific LocalBusiness sub-type possible, e.g. Restaurant, DaySpa, HealthClub.

Property Type Description
@id (Required) URL Globally unique ID of the specific business location in the form of a URL. The ID should be stable and not change over time. The URL is treated as an opaque string and does not have to be a working link. If the business has multiple locations, the @id should be unique for each of them.
name (Required) Text Business name
address (Required) PostalAddress Address of the specific business location.
address.streetAddress (Required) Text Street number, street name, and unit number (if applicable).
address.addressLocality (Required) Text City.
address.addressRegion (Required where applicable) Text State or province.
address.postalCode (Required) Text Postal or zip code.
address.addressCountry (Required) Text The 2-letter ISO 3166-1 alpha-2 country code.
url URL The fully-qualified URL of the specific business location.
geo (Recommended) GeoCoordinates Geographic coordinates of the business.
geo.latitude (Recommended) Numeric The latitude of the business location. The precision should be at least 5 decimal places.
geo.longitude (Recommended) Numeric The longitude of the business location. The precision should be at least 5 decimal places.
telephone (Recommended) Text Business phone number, inclusive of country code. Specify the public phone number of the business normally used by customers.
potentialAction ReserveAction or OrderAction Read more about specifying place actions.
openingHoursSpecification (Recommended) OpeningHoursSpecification Hours during which the business location is open.
openingHoursSpecification.opens Time The time the business location opens, in hh:mm:ss format.
openingHoursSpecification.closes Time The time the business location closes, in hh:mm:ss format.
openingHoursSpecification.dayOfWeek Text One or more of the following:
  • Monday
  • Tuesday
  • Wednesday
  • Thursday
  • Friday
  • Saturday
  • Sunday
openingHoursSpecification.validFrom Date The start date of a seasonal business closure, in YYYY-MM-DD format.
openingHoursSpecification.validThrough Date The end date of a seasonal business closure, in YYYY-MM-DD format.
menu URL For food establishments, the fully-qualified URL of the menu.
acceptsReservations Boolean For food establishments, "True" or "False". If "True", we recommend also specifying potentialAction.
department LocalBusiness A nested item for a single subdepartment. Accepts all properties specified in this table.

Business hours

Following are examples of how to specify different kinds of business hours.

Standard hours

Opening hours without validFrom and validThrough specified are assumed to be valid year-round.

"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"
  }
]

Late night hours

To specify opening hours that exceed midnight, specify the opening and closing hours in a single OpeningHoursSpecification item.

Following is an example of a business that is open from Saturday at 6pm to Sunday at 3am.

"openingHoursSpecification": {
  "@type": "OpeningHoursSpecification",
  "dayOfWeek": "Saturday",
  "opens": "18:00",
  "closes": "03:00"
}

All day hours

To specify a business is open all day, opens should be "00:00" and closes should be "23:59".

To specify a business is closed all day, opens should be "00:00" and closes should be "00:00".

Following is an example of a business that is open all day Saturday and closed all day Sunday.

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

Seasonal hours

To specify seasonal hours, define both validFrom and validThrough.

Following is an example of a business closed for winter holidays.

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

Multiple departments

If your business has subdepartments with distinct properties such as opening hours or telephone numbers, you can mark up those departments as separate items in the department property of the main store. Properties that differ from the main store should be individually specified in the respective department item.

The department name in your markup should follow these guidelines:

  • Generally, the department name should follow the "<store name> <department name>" format. For example, "gMart" and "gMart Pharmacy".
  • If the department is explicitly branded, use that name directly. For example: "Best Buy" and "Geek Squad".

Example markup

A steak house

{
  "@context": "http://schema.org",
  "@type": "Restaurant",
  "@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"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 40.761293,
    "longitude": -73.982294
  },
  "url": "http://www.example.com/restaurant-locations/manhattan",
  "telephone": "+12122459600",
  "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"
}

A store with multiple departments

{
  "@context": "http://schema.org",
  "@type": "Store",
  "@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",
  "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",
      "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"
        }
      ]
    }
  ]
}

A store with holiday opening hours

Following is an example of a store with restricted holiday hours on Dec 24-25 that override its normal business hours.

{
  "@context": "http://schema.org",
  "@type": "Store",
  "@id": "http://middleofnowhere.example.com",
  "name": "Middle of Nowhere Foods",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "opens": "12:00",
      "closes": "14:00",
      "validFrom": "2015-12-24",
      "validThrough": "2015-12-25"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Wednesday",
        "Thursday",
        "Friday",
        "Saturday"
      ],
      "opens": "11:30",
      "closes": "23:00"
    }
  ]
}