Local Businesses

When users search for businesses on Google Search or Maps, Search results may display a prominent Knowledge Graph card with details about a business that matched the query. When users query for a type of business, such as a restaurant, they may see a carousel of listings hosted by restaurant listing providers.

Examples

You can try out the following examples using the Structured Data Testing Tool.

Local Business Listing

Category searches like “Spanish restaurants” or entity searches like “Cascal” (A Steak house)

Place Action

Location-based queries such as "nearby barbers" or "hair salons within 15 miles"

Business hours

The following examples demonstrate how to mark up different types of business hours.

Standard hours
Standard Hours Excluding the validFrom and validThrough properties signify that the hours are valid year-round.This example defines a business that is open weekdays from 9am to 9pm, with weekend hours from 10am until 11pm.
"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
For hours past midnight, define opening and closing hours using a single OpeningHoursSpecification property. This example defines hours from Saturday at 6pm until Sunday at 3am.
"openingHoursSpecification": {
  "@type": "OpeningHoursSpecification",
  "dayOfWeek": "Saturday",
  "opens": "18:00",
  "closes": "03:00"
}
All-day hours
To show a business as open 24 hours a day, set the open property to "00:00" and the closes property to "23:59".To show a business is closed all day, set both opens and closes properties to "00:00". This example shows a business 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
Use both the validFrom and validThrough properties to define seasonal hours. This example shows 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

For a business with sub-departments, each with its own distinct properties such as opening hours or telephone numbers, you can mark up the department property with an element for each sub-department. Define properties that differ from the main store individually in each respective department element.

Example

Follow these guidelines for department names in your markup:

  • Include the store name with the department name in the following format: {store name} {department name}.

    For example, gMart and gMart Pharmacy.

  • Use a department name by itself when it is explicitly branded. For example: Best Buy and Geek Squad.

Restaurant lists

When a user searches for best dinner in NYC or provides similar list-seeking queries, your marked up restaurant content can appear as a host-specific carousel in Search Results. To enable host-specific lists for restaurants, build your restaurant list pages in AMP HTML with ItemList markup and mark up individual restaurant pages. For implementation details, see the carousels documentation.

Example

Order & reservation scenarios

Business markup can specify multiple Action types and qualify the actions with other parameters. Depending upon your offering, you might mark up your content with more than a single combination of actions and qualifying parameters.

OrderAction
parameters
  • potentialAction.@type
  • potentialAction.target.inLanguage
  • potentialAction.target.actionPlatform
ReserveAction
parameters
  • potentialAction.@type
  • potentialAction.target.inLanguage
  • potentialAction.target.actionPlatform
  • potentialAction.result.provider

The following examples show markup for a single action target for different businesses.

Order food delivery

Reserve fitness class

Reserve restaurant

Many other combinations of actions and parameters are possible. When developing more complex business actions, be sure to use only a single value in either potentialAction.target.url OR potentialAction.target.urlTemplate.

The following illustrates some scenarios for using OrderAction and ReserveAction types:

  • One OrderAction and one ReserveAction: A restaurant that accepts delivery orders and table reservations.
  • One OrderAction for each provider: A restaurant that accepts delivery orders from two different providers.
  • One ReserveAction for the following:
    • A yoga studio that offers different classes through a single provider that includes all classes.
    • A hair salon that has multiple stylists, each with a unique menu of services that includes all stylists.

Follow these guidelines for Action markup for businesses:

  • Provide only a single value in either potentialAction.target.url OR potentialAction.target.urlTemplate.
  • The target web page or app must let the user complete the action online. For example, a web page that displays the menu of a restaurant is not a valid action page if the user must make a telephone call to place an order or reserve a table.

Type definitions

The following tables list properties and usage for local business and business action types, based on the full definitions at schema.org/LocalBusiness.

Local business properties

Define each local business location as a LocalBusiness type. Use the most specific LocalBusiness sub-type possible; for example, Restaurant, DaySpa, HealthClub, and so on.

Properties
@id

URL, required

Globally unique ID of the specific business location in the form of a URL. The ID should be stable and unchanging over time. Google Search treats the URL as an opaque string and it does not have to be a working link. If the business has multiple locations, make sure the @id is unique for each location.

acceptsReservations

Boolean, recommended

For food establishments, True or False. If True, the best practice is to also define potentialAction.

address

PostalAddress, required

Address of the specific business location.

address.addressCountry

Text, required

The 2-letter ISO 3166-1 alpha-2 country code.

address.addressLocality

Text, required

City.

address.addressRegion

Text, required where applicable

State or province.

address.postalCode

Text, required

Postal or zip code.

address.streetAddress

Text, required

Street number, street name, and unit number (if applicable).

department

LocalBusiness, recommended

A nested item for a single sub-department you can define using any of the properties in this table.

geo

GeoCoordinates, recommended

Geographic coordinates of the business.

geo.latitude

Number, recommended

The latitude of the business location. The precision should be at least 5 decimal places.

geo.longitude

Number, recommended

The longitude of the business location. The precision should be at least 5 decimal places.

menu

URL, recommended

For food establishments, the fully-qualified URL of the menu.

name

Text, required

Business name.

openingHoursSpecification

OpeningHoursSpecification, recommended

Hours during which the business location is open.

openingHoursSpecification.closes

Time, recommended

The time the business location closes, in hh:mm:ss format.

openingHoursSpecification.dayOfWeek

Text, recommended

One or more of the following:

  • Monday
  • Tuesday
  • Wednesday
  • Thursday
  • Friday
  • Saturday
  • Sunday
openingHoursSpecification.opens

Time, recommended

The time the business location opens, in hh:mm:ss format.

openingHoursSpecification.validFrom

Date, recommended

The start date of a seasonal business closure, in YYYY-MM-DD format.

openingHoursSpecification.validThrough

Date, recommended

The end date of a seasonal business closure, in YYYY-MM-DD format.

potentialAction

ReserveAction or OrderAction, recommended

Read more about specifying business actions.

telephone

Text, recommended

A business phone number meant to be the primary contact method for customers. Be sure to include the country code and area code in the phone number.

url

URL, recommended

The fully-qualified URL of the specific business location. Unlike the @id property, this URL property should be a working link.

Restaurant properties

To include a restaurant in a host-specific list, include the following properties:

Properties
image

Repeated field of URL or ImageObject, required

An image of the business.

Additional image guidelines:

  • Every page must contain at least one image (whether or not you include markup). Google will pick the best image to display in Search results based on the aspect ratio and resolution.
  • Image URLs must be crawlable and indexable.
  • Images must represent the marked up content.
  • Images must be in .jpg, .png, or. gif format.
  • For best results, provide multiple high-resolution images (minimum of 50K pixels when multiplying width and height) with the following aspect ratios: 16x9, 4x3, and 1x1.

For example:

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

Text, required

Business name.

servesCuisine

servesCuisine, required

If marking up a restaurant, provide the type of cuisine they serve.

Business action properties

Structured data in Google Search supports two types of business actions:

  • OrderAction—represents an order for products or services to be delivered.
  • ReserveAction—represents a reservation for a physical object such as a restaurant table, automobile, or hotel room for a specific date and time.

The following two tables list the properties for each action type.

OrderAction properties

Properties
deliveryMethod

DeliveryMethod, recommended

Method by which the order is delivered to the user. Use one of the following values:

  • http://purl.org/goodrelations/v1#DeliveryModePickUp
  • http://purl.org/goodrelations/v1#DeliveryModeOwnFleet
priceSpecification

DeliveryChargeSpecification, recommended

Cost of delivery service if applicable.

priceSpecification.appliesToDeliveryMethod

DeliveryMethod, recommended

This property applies only to the delivery method: http://purl.org/goodrelations/v1#DeliveryModeOwnFleet

priceSpecification.price

Numeric, recommended

Total delivery cost as a numerical only value. Use the priceCurrency property to denote the type of currency instead of currency symbols.

priceSpecification.priceCurrency

Text, recommended

The 3-letter ISO 4217 currency code.

priceSpecification.eligibleTransaction.price

Numeric, recommended

Numeric only minimum order amount. Use the eligibleTransaction.priceCurrency property to specify the type of currency instead of including currency symbols.

priceSpecification.eligibleTransaction.priceCurrency

Text, recommended

The 3-letter ISO 4217 currency code.

priceSpecification.eligibleTransactionVolume

PriceSpecification, recommended

The minimum order amount to be eligible for the delivery service.

ReserveAction properties

Properties
result

Reservation, required

The details of the reservation. Use the most granular sub-type of Reservation possible; for example, FoodEstablishmentReservation to reserve a restaurant table.

result.name

Text, required

The name of the object being reserved; for example, "Table at La Boheme."

result.provider

Person, recommended

Details of the individual assisting the customer.

result.provider.name

Text, recommended

Name of the provider.

Send feedback about...