
Photo by Rob Bye via Unsplash
ローカルビジネス(Local Businesses)の構造化データをマークアップする方法を紹介します。
Googleは検索結果のナレッジグラフにカフェやレストラン、物販店や病院など、店舗を持っているローカルビジネスに関する情報を表示することがあります。

ローカルビジネス(Local Businesses)のナレッジグラフは、構造化データをマークアップしていなくても表示されますが、構造化データをマークアップすることで、Googleにより正確に情報を伝えることができます。
ローカルビジネスをマークアップする
ローカルビジネス(Local Businesses)の構造化データをJSON-LDでマークアップする方法です。JSON-LDはページのどこに記述しても問題ありませんが、通常は<head>タグ内に記述します。
<script type="application/ld+json">
{
"@context": "http://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"
},
"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"
}
</script>
ローカルビジネスの属性
ローカルビジネス(Local Businesses)の構造化データの属性は次のようになります。
| 属性 | 必須 | 説明 |
|---|---|---|
| @context | 必須 | "http://schema.org"を指定 |
| @type | 必須 | ビジネスの種類を指定 指定可能なビジネスの種類はこのページの下部にリストアップしています。 |
| @id | 必須 | ローカルビジネスごとのURL形式のID ユニークで、不変なものを使用する このURLはあくまでIDとして使用するものなので、ページが実在する必要はない 複数の店舗がある場合、@idは店舗ごとにユニークなものを使用する |
| acceptsReservations | 推奨 | 予約の可否をtrue, falseで指定 飲食店の場合のみ trueの場合は、 potentialActionも指定する |
| address | 必須 | 住所に関する情報 |
| address.addressCountry | 必須 | 国コード JP、USなど |
| address.addressLocality | 必須 | 都市 |
| address.addressRegion | 必須 | 都道府県 |
| address.postalCode | 必須 | 郵便番号 |
| address.streetAddress | 必須 | 番地 |
| geo | 推奨 | 緯度経度に関する情報 |
| geo.latitude | 推奨 | 緯度 |
| geo.longitude | 推奨 | 軽度 |
| menu | 推奨 | メニューページのURL 飲食店のみ |
| name | 必須 | 店舗名 |
| telephone | 推奨 | 電話番号 |
| URL | 推奨 | 店舗ページのURL @idのURLは実在しないURLでも問題ないが、このURLは実在するURLを指定する必要がある |
@typeで指定可能なビジネスの種類
@typeで指定可能なビジネスの種類です。次のようなものがあります。最新版はschema.orgで確認できます。ページの下部にある「More specific Types」にリストアップされています。
- AnimalShelter
- AutomotiveBusiness
- AutoBodyShop
- AutoDealer
- AutoPartsStore
- AutoRental
- AutoRepair
- AutoWash
- GasStation
- MotorcycleDealer
- MotorcycleRepair
- ChildCare
- Dentist
- DryCleaningOrLaundry
- EmergencyService
- EmploymentAgency
- EntertainmentBusiness
- AdultEntertainment
- AmusementPark
- ArtGallery
- Casino
- ComedyClub
- MovieTheater
- NightClub
- FinancialService
- AccountingService
- AutomatedTeller
- BankOrCreditUnion
- InsuranceAgency
- FoodEstablishment
- Bakery
- BarOrPub
- Brewery
- CafeOrCoffeeShop
- FastFoodRestaurant
- IceCreamShop
- Restaurant
- Winery
- GovernmentOffice
- PostOffice
- HealthAndBeautyBusiness
- BeautySalon
- DaySpa
- HairSalon
- HealthClub
- NailSalon
- TattooParlor
- HomeAndConstructionBusiness
- Electrician
- GeneralContractor
- HVACBusiness
- HousePainter
- Locksmith
- MovingCompany
- Plumber
- RoofingContractor
- InternetCafe
- LegalService
- Attorney
- Notary
- Library
- LodgingBusiness
- ProfessionalService
- RadioStation
- RealEstateAgent
- RecyclingCenter
- SelfStorage
- ShoppingCenter
- SportsActivityLocation
- BowlingAlley
- ExerciseGym
- GolfCourse
- HealthClub
- PublicSwimmingPool
- SkiResort
- SportsClub
- StadiumOrArena
- TennisComplex
- Store
- AutoPartsStore
- BikeStore
- BookStore
- ClothingStore
- ComputerStore
- ConvenienceStore
- DepartmentStore
- ElectronicsStore
- Florist
- FurnitureStore
- GardenStore
- GroceryStore
- HardwareStore
- HobbyShop
- HomeGoodsStore
- JewelryStore
- LiquorStore
- MensClothingStore
- MobilePhoneStore
- MovieRentalStore
- MusicStore
- OfficeEquipmentStore
- OutletStore
- PawnShop
- PetStore
- ShoeStore
- SportingGoodsStore
- TireShop
- ToyStore
- WholesaleStore
- TelevisionStation
- TouristInformationCenter
- TravelAgency
営業時間をマークアップする
様々なタイプの営業時間をマークアップできます。
通常の営業時間
validFrom(閉店期間の開始日)とvalidThrough(閉店期間の終了日)を指定しないことで、年間を通して通常営業をしていることを提示できます。下記のサンプルは、平日9時から21時、週末10時から23時の営業であることを表しています。
"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"
}
]
深夜の営業時間
深夜の営業時間を提示します。下記のサンプルは、土曜日の18時から日曜日の3時の営業であることを表します。
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "18:00",
"closes": "03:00"
}
24時間営業、定休日
24時間営業を表現するには、openに “00:00” を指定、closesに “23:59” を指定します。定休日を表現するには、openとclosesの両方に “00:00″を指定します。下記の例は土曜日は24時間営業、日曜日は終日休みであることを表します。
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "00:00",
"closes": "23:59"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Sunday",
"opens": "00:00",
"closes": "00:00"
}
]
休業日
年末年始などの休業日を表現します。validFrom(閉店期間の開始日)とvalidThrough(閉店期間の終了日)を使用します。下記のサンプルは2015年12月23日から2016年1月5日まで休みであることを表します。
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"opens": "00:00",
"closes": "00:00",
"validFrom": "2015-12-23",
"validThrough": "2016-01-05"
}
営業時間の属性
営業時間の構造化データの属性は次のようになります。
| 属性 | 必須 | 説明 |
|---|---|---|
| openingHoursSpecification | 推奨 | 営業時間に関する情報 |
| openingHoursSpecification @type |
推奨 | "openingHoursSpecification"を指定 |
| openingHoursSpecification .dayOfWeek |
推奨 | 営業している曜日
|
| openingHoursSpecification .closes |
推奨 | 営業終了時刻 hh:mm:ss |
| openingHoursSpecification .opens |
推奨 | 営業開始時刻 hh:mm:ss |
| openingHoursSpecification .validFrom |
推奨 | 休業期間の開始日 |
| openingHoursSpecification .validThrough |
推奨 | 休業期間の終了日 |
店舗内の小規模店舗や売り場をマークアップする
たとえば、スーパーの中に薬局がある場合など、店舗内に別の諸規模店舗や売り場がある場合は、departmentを使って定義します。
{
"@context": "http://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",
"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"
}
]
}
]
}
店舗内の小規模店舗や売り場をマークアップの属性
店舗内の小規模店舗や売り場の構造化データの属性は次のようになります。
| 属性 | 必須 | 説明 |
|---|---|---|
| department | 推奨 | 店舗内の店舗内の小規模店舗や売り場に関する情報 たとえば、スーパー内にある薬局など |
レストランのリストをマークアップする
「東京のおすすめレストラン」のように、特定のレストランをリストアップしたコンテンツの場合、検索結果でそのページのカルーセル枠にリストアップしたレストランを表示することが可能です。

リストページでレストランのリストをItemListでマークアップし、さらに個別のページで各レストランをマークアップします。
リストページのマークアップ
ItemListで各レストランの個別ページのURLをリストアップします。
<script type="application/ld+json">
{
"@context":"http://schema.org",
"@type":"ItemList",
"itemListElement":[
{
"@type":"ListItem",
"position":1,
"url":"http://example.com/restaurants-nyc/public-kitchen"
},
{
"@type":"ListItem",
"position":2,
"url":"http://example.com/restaurants-nyc/emily-west-village"
},
{
"@type":"ListItem",
"position":3,
"url":"http://example.com/restaurants-nyc/atla"
}
]
}
</script>
アイテムリスト(ItemList)の属性
アイテムリスト(ItemList)の構造化データの属性は次のようになります。
| 属性 | 必須 | 説明 |
|---|---|---|
| itemListElement | 必須 | この中にリストのアイテムを記載 |
| ItemList.position | 必須 | リストアイテムの順番 |
| ItemList.url | 必須 | リストアイテムのURL すべてのアイテムに固有のURLが必要 |
各レストランページのマークアップ
通常のローカルビジネス("@type": "Restaurant")として必要な情報をマークアップします。下記のサンプルは簡易版です。
<script type="application/ld+json">
{
"@context": "http://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"
],
"servesCuisine": "Italian"
}
</script>
各レストランページの属性
リストアップされた各レストランページには以下の属性を使います。
| 属性 | 必須 | 説明 |
|---|---|---|
| image | 必須 | 画像(複数指定可能) 複数の画像からGoogleが最適な画像を選択して検索結果に表示する 複数の高解像度画像を複数の縦横比で提供することが望ましい |
| name | 必須 | 店舗名 |
| servesCuisine | 必須 | ジャンル(イタリアン、和食など) |
注文や予約などのアクションをマークアップする
注文や予約などのアクションをローカルビジネスのマークアップに含めることで、ユーザーはナレッジパネルから席の予約やデリバリーの注文といったアクションを実行できるようになります。

アクションのマークアップは、potentialActionを使い、注文にはOrderAction、予約にReserveActionを指定します。
料理の注文
アクションとして料理の注文を定義するサンプルです。
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Restaurant",
"@id": "http://davescafe.example.com/",
"name": "Dave's Cafe",
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"address" :{
"@type": "PostalAddress",
"streetAddress": "123 William St",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10038",
"addressCountry": "US"
},
"geo":{
"@type": "GeoCoordinates",
"latitude": 40.709312,
"longitude": -74.007136
},
"telephone": "+19172423826",
"potentialAction": {
"@type": "OrderAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.example.com/daves-cafe-new-york",
"inLanguage": "en-US",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform",
"http://schema.org/IOSPlatform",
"http://schema.org/AndroidPlatform"
]
},
"deliveryMethod": [
"http://purl.org/goodrelations/v1#DeliveryModePickUp",
"http://purl.org/goodrelations/v1#DeliveryModeOwnFleet"
],
"priceSpecification": {
"@type": "DeliveryChargeSpecification",
"appliesToDeliveryMethod": "http://purl.org/goodrelations/v1#DeliveryModeOwnFleet",
"priceCurrency": "USD",
"price": 0.0,
"eligibleTransactionVolume": {
"@type": "PriceSpecification",
"priceCurrency": "USD",
"price": 12.00
}
}
}
}
</script>
フィットネスクラスの予約
アクションとしてフィットネスクラスの予約を定義するサンプルです。
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "HealthClub",
"@id": "http://daveshouseofyoga.example.com/",
"name": "Dave's House of Yoga",
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"address": {
"@type": "PostalAddress",
"streetAddress": "3986 Rivermark Pkwy",
"addressLocality": "Santa Clara",
"addressRegion": "CA",
"postalCode": "95054",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 37.3952149,
"longitude": -121.9474023
},
"telephone": "+14085551135",
"potentialAction": {
"@type": "ReserveAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.example.com/reserve?merchantId=20373",
"inLanguage": "en-US",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform",
"http://schema.org/IOSPlatform",
"http://schema.org/AndroidPlatform"
]
},
"result": {
"@type": "Reservation",
"name": "Book a class"
}
}
}
</script>
レストランの予約
アクションとしてレストランの予約を定義するサンプルです。
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Restaurant",
"@id": "http://davescafe.example.com/",
"name": "Dave's Cafe",
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"address": {
"@type": "PostalAddress",
"streetAddress": "123 William St",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10038",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 40.709312,
"longitude": -74.007136
},
"telephone": "+19172423826",
"potentialAction": {
"@type": "ReserveAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.example.com/reserve?merchantId=20373",
"inLanguage": "en-US",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform",
"http://schema.org/IOSPlatform",
"http://schema.org/AndroidPlatform"
]
},
"result": {
"@type": "FoodEstablishmentReservation",
"name": "Reserve table"
}
}
}
</script>
アクションの属性
アクションに関する属性は次のようになります。
| 属性 | 必須 | 説明 |
|---|---|---|
| potentialAction | 必須 | アクションに関する情報 |
| potentialAction@type | 必須 | OrderAction(注文)、または、ReserveAction(予約)を指定 |
| potentialAction .target |
必須 | アクションページ(注文ページ、予約ページ)に関する情報 |
| potentialAction .target .urlTemplate |
必須 | アクションページのURL |
| potentialAction .target .inLanguage |
必須 | アクションページの言語 |
| potentialAction .target .actionPlatform |
必須 | アクションページを利用可能なプラットフォーム http://schema.org/DesktopWebPlatform: デスクトップのWebブラウザ用 http://schema.org/MobileWebPlatform: モバイルのWebブラウザ用 http://schema.org/AndroidPlatform: Androidアプリ用 http://schema.org/IOSPlatform: |
注文アクションの属性
注文に関するアクションの属性は次のようになります。
| 属性 | 必須 | 説明 |
|---|---|---|
| deliveryMethod | 推奨 | 受け取り方法 以下のいずれかを指定
|
| priceSpecification | 推奨 | デリバリーの価格に関する情報 |
| priceSpecification .appliesToDeliveryMethod |
推奨 | 価格が発生するデリバリーの方法 以下を指定
|
| priceSpecification .price |
推奨 | デリバリーの費用(配送料) |
| priceSpecification .priceCurrency |
推奨 | デリバリーの費用の通貨コード JPY, USDなど |
| priceSpecification .eligibleTransactionVolume |
推奨 | デリバリーの最低注文価格に関する情報 |
| priceSpecification .eligibleTransactionVolume .price |
推奨 | デリバリーの最低注文価格 |
| priceSpecification .eligibleTransactionVolume .priceCurrency |
推奨 | デリバリーの最低注文価格の通貨コード JPY, USDなど |
予約アクションの属性
予約に関するアクションの属性は次のようになります。
| 属性 | 必須 | 説明 |
|---|---|---|
| result | 必須 | 予約に関する情報 |
| result .name |
必須 | 予約の対象 |
| result .provider |
推奨 | 顧客を担当する専任者に関する情報 |
| result .provider .name |
推奨 | 担当者の名前 |