v1 廣告空間結構定義

美食目錄動態饋給是以 schema.org DataFeed 實體為基礎。食物目錄動態饋給包含餐廳地址、菜單和地點等餐廳語言代碼詳細資料,以及餐廳的服務詳細資料 (例如外送費用、外送區域和下方指定的其他項目)。

DataFeed 包含元素集合,每個元素都代表以 schema.org 詞彙表達的單一項目。您可以使用 DataFeed 類型,發布 JSON-LD 格式的所有結構化資料。

如要瞭解如何使用此規格建構動態饋給,請參閱商品目錄整合總覽

日期和時間格式

DateTime 採用 schema.org 類型,除非另有說明,否則必須採用 ISO 8601 格式並包含日期、時間和時區。請在 DateTime 中使用下列語法:

// DateTime format:
YYYY-MM-DDTHH:MM:SS[∓HH:MM|Z]

例如:

2017-05-01T06:30:00-07:00 // UTC minus 7 hours
2017-05-01T06:30:00Z  // UTC time zone. The optional "Z" suffix represents the UTC time zone.

特定餐廳或服務地點時區的 Time 是當地時間,同樣取決於 schema.org 類型,且必須採用 ISO 8601 格式。時間使用下列語法:

// Time format:
THH:MM:SS

例如:

T08:08:00 // 8:08 AM

當您在指定 DateTimeTime 時注意下列事項:

  • 時間前的「T」前置字元屬於格式,此為必填項目。
  • 必須為 DATETIME 指定時區。但 TIME 不需要。
  • 時間必須以餐廳或服務的當地時間為準。

信封

所有美食目錄動態饋給的起始程式碼都必須包含「信封」部分。

「信封」是每個動態饋給的頂層結構,且必須為具備下列屬性的 DataFeed

屬性 類型 必要性 說明
@context 網址 必要 使用情境;通常為「http://schema.googleapis.com」。
@type 文字 必要 一律為「DataFeed」。
dateModified DateTime 必要

上次修改的資料動態饋給 DateTime,採用 ISO 8601 格式。

這個動態饋給中的項目修改日期和時間 (採用 ISO_OFFSET_DATE_TIME 格式)。在沒有這個欄位的情況下,系統會假設更新時間是 Google 伺服器收到 (或執行檢索) 推送訊息的時間。

如果您同時使用推送和檢索,我們強烈建議執行此設定。指定時間戳記時應以時區和毫秒為單位,例如「2016-12-28T06:30:00:123-07:00」。

在批次動態饋給中,實體版本管理取決於動態饋給信封中的 dateModified 欄位。

dataFeedElement MenuRestaurantService 陣列 必要 這個動態饋給包含一或多個項目。詳情請參閱下方內容。

以下範例顯示信封:

範例

{
  "@context": "http://schema.googleapis.com",
  "dateModified": "2016-12-28T06:30:00:123-07:00",
  "@type": "DataFeed",
  "dataFeedElement": [
    /* All items that are part of this feed go here */
  ]
}

AdditiveDetails

如要使用此類型,請新增 gs1 結構定義: "@context": ["http://gs1.org/voc/", "http://schema.org"]

接著,將 FoodBeverageTobaccoProduct 新增至適當的 MenuItemMenuItemOption 類型。

下表說明 AdditiveDetails 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律為「AdditiveDetails」。
additiveName 文字 選用 相加值的名稱。
additiveLevelOfContainment 文字 選用 每個 gs1:LevelOfContainmentCode 的包含代碼。例如 http://gs1.org/voc/LevelOfContainmentCode-CONTAINShttp://gs1.org/voc/LevelOfContainmentCode-FREE_FROMhttp://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN

以下範例顯示 AdditiveDetails 類型的用法:

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/8",
  "name": "Energy Drink",
  "description": "A 0.25l can of energy drink.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-energy-drink",
    "price": "3.49",
    "priceCurrency": "USD"
  },
  "additive": [
    {
      "@type": "AdditiveDetails",
      "additiveName": "caffeine",
      "additiveLevelOfContainment":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    },
    {
      "@type": "AdditiveDetails",
      "additiveName": "phosphate",
      "additiveLevelOfContainment":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    }
  ]
},

AddOnMenuItem

列於 MenuItem 外掛程式品項中的食物或飲料。

下表列出 AddOnMenuItem 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「AddOnMenuItem」。
@id 網址 必要 外掛程式選單項目的專屬 ID。
name 文字 必要 使用者在瀏覽選單時,識別 AddOnMenuItem 的文字。
description 文字 選用 外掛程式選單項目的說明。
image 網址 選用

符合下列規範的外掛程式選單項目圖片:

  • 顯示比例 3:2
  • >
  • 解析度至少為 600x400 像素 (72 dpi)
  • >
  • 建議解析度 1400x960 像素 (72 dpi)
offers Offer 的陣列 必填*

提供這個 AddOnMenuItem 的一或多項優惠。

說明這個 AddOnMenuItem 的供應時機和價格。在特定時間內,只能有一項優惠。如果價格或供應情形會因時段而異,則可提供許多有效優惠。如果外掛程式或項目是基本屬性,或是附加項目本身的變化版本 (例如小、中、大薯條做為外掛程式),請使用 hasMenuItemOption 屬性。

Offer.eligibleQuantity 的預設值為 0,最多 1。

下列 Offer 屬性用於 AddOnMenuItem:

  • 必須採用Offer.sku
  • 必須採用Offer.price
  • 必須採用Offer.priceCurrency
  • Offer.availabilityStarts (選用)
  • Offer.availabilityEnds (選用)
  • Offer.availableDay (選用)
  • Offer.validFrom (選用)
  • Offer.validThrough (選用)
  • Offer.eligibleQuantity (選用)
  • Offer.inventoryLevel (選用)
hasMenuItemOptions MenuItemOption 的陣列 必填*

這個外掛程式選單項目的基本屬性陣列 (例如小、中、大薯條做為加購項目),描述外掛程式項目本身的變化。請使用選項指定這個外掛程式選單項目可用的各種變化版本。有兩種情況可能會發生這種情況:

  • 基本變化版本位於外掛程式項目本身內,例如含有小、中、大薯條的加購項目
  • 這個外掛程式相關聯選單項目的基本變化版本 (例如可以用來製作大型披薩的補充起司)
suitableForDiet RestrictedDiet 的陣列 選用 這道餐點符合上述飲食限制,例如「GlutenFreeDiet」或「VeganDiet」。這是可能的值列舉清單。
nutrition NutritionInformation 選用 菜餚的營養資訊,最明顯的熱量是卡路里。
menuAddOn AddOnMenuSection 的陣列 選用 AddOnMenuItem 可以有選單區段,包含允許以外掛程式形式加入的允許項目。

以下範例顯示 AddOnMenuItem

範例 1

{
  "@type": "AddOnMenuSection",
  "@id": "https://www.example.com/1089/addon/1",
  "name": "AddOnCheese",
  "hasMenuItem": [
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/a",
      "name": "Swiss",
      "offers": {
        "@type": "Offer",
        "sku": "offer-swiss",
        "price": "2.99",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/b",
      "name": "Mozarella",
      "offers": {
        "@type": "Offer",
        "sku": "offer-mozzarella",
        "price": "1.99",
        "priceCurrency": "USD"
      }
    }
  ]
}

範例 2

{
  "@type": "MenuItem",
  "@id": "https://www.example.com/1089/product/170067",
  "name": "Pepperoni Pizza",
  "hasMenuItemOptions": [
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Small"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-small-pepperoni-pizza",
        "price": "10.00",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Large"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-large-pepperoni-pizza",
        "price": "20.00",
        "priceCurrency": "USD"
      }
    }
  ],
  "menuAddOn": [
    {
      "@type": "AddOnMenuSection",
      "name": "Choice of toppings",
      "@id": "https://www.example.com/1089/addon/1",
      "hasMenuItem": [
        {
          "@type": "AddOnMenuItem",
          "@id": "https://www.example.com/1089/addon/1/a",
          "name": "Shrimp",
          "hasMenuItemOptions": [
            {
              "@type": "MenuItemOption",
              "value": [
                {
                  "@type": "PropertyValue",
                  "name": "PIZZA_SIDE",
                  "value": "PIZZA_SIDE_LEFT" // Values are predefined for pizza side.
                },
                {
                  "@type": "PropertyValue",
                  "name": "APPLICABLE_ITEM_OPTION",
                  "value": "Small" // Value should be same as mentioned in item's options.
                }
              ],
              "offers": {
                "@type": "Offer",
                "sku": "offer-topping-shrimp-left-small",
                "price": "1.00",
                "priceCurrency": "USD"
              }
            },
            {
              "@type": "MenuItemOption",
              "value": [
                {
                  "@type": "PropertyValue",
                  "name": "PIZZA_SIDE",
                  "value": "PIZZA_SIDE_LEFT" // Values are predefined for pizza side.
                },
                {
                  "@type": "PropertyValue",
                  "name": "APPLICABLE_ITEM_OPTION",
                  "value": "Large" // Value should be same as mentioned in item's options.
                }
              ],

              "offers": {
                "@type": "Offer",
                "sku": "offer-topping-shrimp-left-large",
                "price": "2.00",
                "priceCurrency": "USD"
              }
            },
            {
              "@type": "MenuItemOption",
              "value": [
                {
                  "@type": "PropertyValue",
                  "name": "PIZZA_SIDE",
                  "value": "PIZZA_SIDE_WHOLE" // Values are predefined for pizza side.
                },
                {
                  "@type": "PropertyValue",
                  "name": "APPLICABLE_ITEM_OPTION",
                  "value": "Small" // Value should be same as mentioned in item's options.
                }
              ],

              "offers": {
                "@type": "Offer",
                "sku": "offer-topping-shrimp-whole-small",
                "price": "1.50",
                "priceCurrency": "USD"
              }
            },
            {
              "@type": "MenuItemOption",
              "value": [
                {
                  "@type": "PropertyValue",
                  "name": "PIZZA_SIDE",
                  "value": "PIZZA_SIDE_WHOLE" // Values are predefined for pizza side.
                },
                {
                  "@type": "PropertyValue",
                  "name": "APPLICABLE_ITEM_OPTION",
                  "value": "Large" // Value should be same as mentioned in item's options.
                }
              ],

              "offers": {
                "@type": "Offer",
                "sku": "offer-topping-shrimp-whole-large",
                "price": "2.50",
                "priceCurrency": "USD"
              }
            }
          ]
        }
      ]
    }
  ]
}

AddOnMenuSection

食物或飲料的子群組,做為選單項目的附加選單區。

下表列出 AddOnMenuSection 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「AddOnMenuSection」。
@id 網址 必要 菜單專區的專屬 ID。
name 文字 必要 可在使用者瀏覽選單時識別 AddOnMenuSection 的文字。
description 文字 選用 菜單專區說明。
eligibleQuantity QuantitativeValue 選用 指出允許做為這個選單專區外掛程式的項目數量。您可以使用這個欄位來限制加購內容的數量,例如披薩上可選擇的配料量下限和上限。
image 網址 選用 菜單專區的圖片。
hasMenuItem AddOnMenuItem 的陣列 必填* AddOnMenuSection 中的外掛程式選單項目
offers Offer 的陣列 選用

使用 Offer.availabilityStartsOffer.availabilityEnds 表示可使用這個 AddOnMenuSection 的時間範圍。

下方清單列出在 AddOnMenuSection 中使用哪些 Offer 屬性。

  • Offer.availabilityStarts (選用)
  • Offer.availabilityEnds (選用)
  • Offer.availableDay (選用)
  • Offer.validFrom (選用)
  • Offer.validThrough (選用)
hasMenuSection AddOnMenuSection 的陣列 必填* 外掛程式菜單的邏輯子群組 (例如晚餐、開胃菜或魚料理)。
defaultOption AddOnMenuItem 的陣列 選用

系統預設為 AddOnMenuSection 中的使用者預先選取的外掛程式選單項目。使用者可以變更最終選項。如未指定 defaultOption,系統不會預先選取 AddOnMenuItem

AddOnMenuItem 物件必須位於 AddOnMenuSectionhasMenuItem 中。

defaultOption 數量不得超過 AddOnMenuSectioneligibleQuantity 上限。

numberOfFreeAddOns 編號 選用 指出使用者可免費選取的加購內容數量。

以下範例包括 AddOnMenuSection 物件:

範例 1

{
  "@type": "AddOnMenuSection",
  "@id": "https://www.example.com/1089/addon/1",
  "name": "AddOnCheese",
  "hasMenuItem": [
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/a",
      "name": "Swiss",
      "offers": {
        "@type": "Offer",
        "sku": "offer-swiss",
        "price": "2.99",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/b",
      "name": "Mozarella",
      "offers": {
        "@type": "Offer",
        "sku": "offer-mozzarella",
        "price": "1.99",
        "priceCurrency": "USD"
      }
    }
  ]
}

範例 2

"menuAddOn": {
  "@type": "AddOnMenuSection",
  "name": "Cheese",
  "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection
  "eligibleQuantity":
    "@type": "QuantitativeValue",
    "minValue": 0,
    "maxValue": 2 // Maximum of 2 cheeses are allowed
  }
}

範例 3

「Cheese Sandwich」選單項目有一個「選擇起司」AddOnMenuSection,預設選取「Swiss」和「Mozzarella」。

{
  "@type": "AddOnMenuSection",
  "@id": "https://www.example.com/1089/addon/1",
  "name": "AddOnCheese",
  "defaultOption": [
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/a"
    },
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/b"
    }
  ],
  "hasMenuItem": [
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/a",
      "name": "Swiss",
      "offers": {
        "@type": "Offer",
        "sku": "offer-swiss",
        "price": "2.99",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/b",
      "name": "Mozzarella",
      "offers": {
        "@type": "Offer",
        "sku": "offer-mozzarella",
        "price": "1.99",
        "priceCurrency": "USD"
      }
    }
  ]
}

AdvanceServiceDeliveryHoursSpecification

代表使用者在出貨與外帶時,安排提前訂單配送與外帶的出貨時數。

通常,opens 的值小於 closes 的值。使用 openscloses 屬性時需符合下列規範:

  • opensclosesAdvanceServiceDeliveryHoursSpecification 的選用屬性,但我們強烈建議加入。
  • 時間必須以服務的當地時間為準。請勿在 openscloses 值中加入時區。系統會忽略指定的時區。
  • 如果未明確指定 openscloses,系統會假設消費者隨時提供提前訂購服務。
  • 如果 openscloses 相同,系統會假設無法取得提前排序。
  • 如果 opens 大於 closes,系統會將打烊時間解讀為隔天。舉例來說,如果營業時間設為 1 月 1 日下午 5 點,打烊時間為凌晨 2 點,系統就會將餐廳視為在 1 月 2 日凌晨 2 點打烊。
  • openscloses 參照未來的時段。closes 除外。舉例來說,如果 opens 是上午 10 點,closes 為下午 4 點,serviceTimeInterval 為 15 分鐘,則第一個時段會從上午 10 點開始,最後一個時段則是下午 3 點 45 分。

下表說明 AdvanceServiceDeliveryHoursSpecification 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「AdvanceServiceDeliveryHoursSpecification」。
validFrom DateTime 須符合條件

使用者提前訂單可以履行的開始日期例如「2017-05-01T00:00:00-07:00」。

如未設定這項屬性,系統會假設其每天都有效。validFromvalidThrough 屬性必須不存在或同時顯示。

如果這個類型在 Service 層級指定為 specialOpeningHoursSpecification,就必須提供 AdvanceServiceDeliveryHoursSpecification 中的 validFrom 屬性。

詳情請參閱 日期和時間格式

validThrough DateTime 選用

使用者提前訂單無法履行的結束日期。例如「2018-12-01T00:00:00-07:00」。

如未設定這項屬性,系統會假設其每天都有效。validFromvalidThrough 屬性必須不存在或同時顯示。

如果這個類型在 Service 層級指定為 specialOpeningHoursSpecification,就必須使用 AdvanceServiceDeliveryHoursSpecification 中的 validThrough 屬性。

validThrough 的時間有限。舉例來說,如果這個時間設為晚上 6 點,則時間最長為晚上 5:59:59。

詳情請參閱日期和時間格式

opens Time 選用

適用於外送或外帶時段。

使用者可以履行提前訂單的特定時間。例如上午 6 點 30 分會顯示為「T06:30:00」。

服務時間必須以當地時間指定。請勿在 opens 值中加入時區。如有指定時區,Google 會忽略這項資訊。

詳情請參閱日期和時間格式

closes Time 選用

適用於外送或外帶時段。

使用者提前無法履行訂單的特定時間。舉例來說,下午 9:00 會顯示為「T21:00:00」。closes> 是專屬值,因此將 serviceTimeInterval 設為晚上 9:00,代表最後一個可預約的時段是從晚上 8:45 開始。

時間必須指定以服務所在地時間為準。請勿在 closes 值中加入時區。如果指定時區,Google 會忽略這項資訊。

詳情請參閱日期和時間格式

dayOfWeek DayOfWeek 的陣列 選用

一週中的哪幾天可使用提前配送服務。有效值如下:

  • 「星期一」
  • 「星期二」
  • 「星期三」
  • 「星期四」
  • 「週五」
  • 「週六」
  • 「週日」

如果您沒有指定任何星期幾,則 AdvanceServiceDeliveryHoursSpecification 會套用至所有天數。

serviceTimeInterval Duration 必要

兩個連續服務時間之間的間隔。

舉例來說:如果 openscloses 是上午 8 點和晚上 8 點,而 serviceTimeInterval 為 15 分鐘,則使用者可以選擇執行要求時間:上午 8 點、上午 8 點 15 分、上午 8 點 30 分、上午 8 點 45 分,以及直到晚上 8 點。

必須以 ISO 8601 時間長度指定 Duration。例如:"P15M" 表示間隔 15 分鐘。

advanceBookingRequirement QuantitativeValue 必要

訂單完成之後,訂單處理時間的分鐘數。

QuantitativeValueminmax 值必須設為分鐘數, unitCode 則設為「MIN」。

舉例來說,如果預付訂單需要至少 60 分鐘才能履行,且 2 天內無法履行,則 min 值為 60,max 值為 2880。

以下範例顯示 AdvanceServiceDeliveryHoursSpecification 類型的用法:

範例 1

{
  "@type": "AdvanceServiceDeliveryHoursSpecification",
  "opens": "T10:00:00",  // Delivery between 10AM and 7:59:59PM
  "closes": "T20:00:00",
  "serviceTimeInterval": "PT15M", // in slots spaced 15 minutes apart (ISO8601)
  "advanceBookingRequirement": {
    "minValue": 60,   // The slot should be at least 60 mins away
    "maxValue": 8640, // but not more than 6 days away
    "unitCode": "MIN"
  }
}

AllergenDetails

如要使用此類型,請新增 gs1 結構定義: "@context": ["http://gs1.org/voc/", "http://schema.org"]

接著,將 FoodBeverageTobaccoProduct 新增至適當的 MenuItemMenuItemOption 類型。

下表說明 AllergenDetails 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律是「AllergenDetails」。
allergenType 文字 選用 每個 gs1:AllergenTypeCode 的過敏原類型。例如 http://gs1.org/voc/AllergenTypeCode-PEANUTS
allergenLevelOfContainmentCode 文字 選用 每個 gs1:LevelOfContainmentCode 的包含代碼。例如 http://gs1.org/voc/LevelOfContainmentCode-CONTAINShttp://gs1.org/voc/LevelOfContainmentCode-FREE_FROMhttp://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN

以下範例顯示 AllergenDetails 類型的用法:

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/6",
  "name": "Strawberry joghurt drink",
  "description": "A 0.5l bottle of strawberry joghurt drink.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-joghurt-drink",
    "price": "2.49",
    "priceCurrency": "USD"
  },
  "hasAllergen": [
    {
      "@type": "AllergenDetails",
      "allergenType": "http://gs1.org/voc/AllergenTypeCode-GLUTEN",
      "allergenLevelOfContainmentCode":
        "http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM"
    },
    {
      "@type": "AllergenDetails",
      "allergenType": "http://gs1.org/voc/AllergenTypeCode-LACTOSE",
      "allergenLevelOfContainmentCode":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    }
  ]
},

DeliveryChargeSpecification

下表說明 DeliveryChargeSpecification 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律為「DeliveryChargeSpecification」。
@id 網址 選用 運費規格的 ID。
price 編號 必要 遞送服務的總費用,這個值只能為數字。請使用 priceCurrency 屬性表示貨幣類型,而非貨幣符號。例如「6.00」,不含貨幣符號。
priceCurrency 文字 必要 包含 3 個字母的 ISO 4217 貨幣代碼。例如「USD」。
eligibleTransactionVolume PriceSpecification 選用 交易量,以金額單位計算,且這個運費規格有效。例如,表明最低購買量,或在特定訂單量超過特定數量的情況下,不額外收費。
eligibleQuantity QuantitativeValue 選用 外送費用有效的訂購數量測量單位和計量單位。例如,您可以藉此指定特定貨運費用僅適用於特定數量。
eligibleRegion GeoShapePlaceGeoCircle 陣列 選用 地點,或是適用優惠或配送費用規格的地理政治區域 GeoShape/GeoCircle。只有在運費視區域而異時,才使用這項屬性。
validFrom DateTime 選用 指定配送費用生效的日期和時間 (包括時區)。例如「2017-05-01T06:30:00-07:00」。詳情請參閱日期和時間格式
validThrough DateTime 選用 指定配送費用之後的日期和時間 (包括時區)。例如「2017-05-01T06:30:00-07:00」。validThrough 的時間不包含在內:例如,如果這個時間設為晚上 6 點,則時間上限為晚上 5:59:59。詳情請參閱日期和時間格式

以下範例顯示 DeliveryChargeSpecification 元素:

範例 1

"offers": {
  "@type":"Offer",
  "priceSpecification":[
    {
      "@type": "DeliveryChargeSpecification",
      "price": "5.0",
      "priceCurrency": "USD"
    }
  ]
}

範例 2

"priceSpecification": [
  {
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/defaultdeliveryfee/foo",
    "price": "10.0",
    "priceCurrency": "USD",
    "eligibleQuantity": {
      "@type": "QuantitativeValue",
      "minValue": 3  // Minimum of 3 items required for delivery
    }
  },
  {
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/deliveryfee/foo/1",
    "price": "20.0",
    "priceCurrency": "USD",
    "validFrom":"T18:00:00", // Valid from 6:00PM
    "validThrough":"T22:00:00", // Valid to 9:59:59PM
    "eligibleQuantity": {
      "@type": "QuantitativeValue",
      "minValue": 3  // Minimum of 3 items required for delivery
    }
  }
]

範例 3

"priceSpecification": [{
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/threebrotherstacos/deliveryfee/1",
    "price": "8.00", // Charges $8 for area5
    "priceCurrency": "USD",
    "eligibleTransactionVolume": {
      "@type": "PriceSpecification",
      "minPrice": "20.00",
      "priceCurrency": "USD"
    },
    "eligibleRegion": [ // area5
      {
        "@type": "GeoCircle",
        "geoMidpoint": {
          "@type": "GeoCoordinates",
          "latitude": "37.7392607",
          "longitude": "-122.3895522"
        },
        "geoRadius": "4505"
      }
    ]
  },
  {
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/threebrotherstacos/defaultdeliveryfee",
    "price": "6.00", // Charges $6 when delivered from Foo restaurant to area1, area2, area3 and area4 (Default charge)
    "priceCurrency": "USD",
    "eligibleTransactionVolume": {
      "@type": "PriceSpecification",
      "minPrice": "20.00", // Minimum order price for delivery is $20
      "priceCurrency": "USD"
    }
  }
]

除了 "@type": ["DeliveryChargeSpecification"] 以外,您也可以使用 UnitPriceSpecification 擴充物件:

"@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"]

這項擴充功能可提供額外兩個屬性,以百分比計算運費。

屬性 類型 必要性 說明
referenceQuantity QuantitativeValue 必要 適用特定價格的參考數量。例如,如果 referenceQuantity 的值為 10,且 unitCode 為「P1」,則代表訂單價值的 10%。目前僅支援 unitCode「P1」。
basePrice 編號 選用 referenceQuantity 以外的基本費用。例如,如果 referenceQuantity 為 10,unitCode 為「P1」,而 basePrice 為 5,則代表訂單價值 $5 + 10%。預設值為 0。

運費範例

Google 可讓您使用 Service 實體的 Offer.PriceSpecification,預先向使用者指定各種費用。

請注意,「訂單端對端」目前僅支援一個 DeliveryChargeSpecification。將所有類型的費用合併為單一 DeliveryChargeSpecification

請參閱服務動態饋給範例,瞭解如何根據區域、距離和訂單價值指定運費。

如果沒有手續費,則省略 Offer.PriceSpecification

  • 範例 1:運費是購物車小計的 5%
  • 範例 2:運費為 $5 美元
  • 範例 3:運費為 NT $150 元 + 10% 的購物車小計
  • 範例 4:運費為 $5 美元,行李費用為 $0.1 美元
  • 範例 5:運費為 5%,手續費為購物車小計的 2%
  • 範例 6:運費為每多 1 公里的 $5 美元,每多 1 公里的距離為 $1 美元

範例 1

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "5.00", // 5%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  }
]

範例 2

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification"],
    "priceCurrency": "USD",
    "price": "5.00"
  }
]

範例 3

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "10.00", // 10%
      "unitCode": "P1", // P1 == %
    },
    "priceCurrency": "USD",
    "basePrice": "5.00" // User always pays $5 in addition to 10%
  }
]

示例 4

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification"],
    "priceCurrency": "USD",
    "price": "5.10" //$5 + $0.1
  }

範例 5

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "7.00", // 5% + 2%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  },
]

範例 6

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"],
    "basePrice": 5.00, // User always pays $5
    "price": 1.00, // An additional $1.00 is added per 1km
    "priceCurrency": "USD",
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "unitCode": "MTR", // MTR == meter
      "value": "1000.0" // 1km
    }
  }
]

GeoCircle

下表說明 GeoCircle 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「GeoCircle」。
geoMidpoint GeoCoordinates 必要 表示 GeoCircle 中心的 GeoCoordinates
geoRadius 編號 必要 表示 GeoCircle 的近似半徑 (以公尺為單位)。

以下範例顯示 GeoCircle 元素:

範例

{
  "@type": "GeoCircle",
  "geoMidpoint": {
    "@type": "GeoCoordinates",
    "latitude": "37.7392607",
    "longitude": "-122.3895522"
  },
  "geoRadius": "4505"
}

GeoCoordinates

下表說明 GeoCoordinates 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律為「GeoCoordinates」(地理座標)。
latitude 編號 必要

緯度度數。值的範圍限制在 -90 到 90 (含頭尾)。如果指定的值小於 -90,就會設為 -90;如果該值大於 90,則會設為 90。

精確度至少要到小數點後 5 位。

longitude 編號 必要

經度度數。-180 到 180 之間的值會經過包裝,讓值位於範圍內。例如,值 -190 會轉換為 170。值 190 會轉換成 -170。這反映了經度環繞地球的程度。

精確度至少要到小數點後 5 位。

以下範例顯示 GeoCoordinates 元素:

範例

"geo": {
  "@type": "GeoCoordinates",
  "latitude": "35.7392607",
  "longitude": "-120.3895522"
}

GeoShape

下表說明 GeoShape 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律為「GeoShape」。
polygon 文字陣列 必要

由三個以上空格分隔點組成的多邊形或多重多邊形。建議設定相同的第一個和最後一點,但並非必要。

多邊形或多重多邊形中的每個點,都是由緯度點後面接著一個經度點來定義。您也必須按逆時針方向指定資料點。

在多數情況下,您只會使用一個多邊形。如果是更複雜的用途,請參閱送貨服務範圍說明文件。

以下範例顯示 GeoShape 元素:

範例 1

{
  "@type": "GeoShape", // area4
  // Specify latitude first (i.e., lat long lat long ...)
  "polygon": "37.806000 -122.425592 37.775849 -122.419043 37.795547 -122.394046 37.808747 -122.412619"
},

範例 2

{
  "@type": "GeoShape", // A service area with a hole.
  // Specify latitude first (i.e., lat long lat long ...)
  "polygon": [ “37.771535 -122.506881 37.764289 -122.506669 37.766497 -122.453058”,
               “37.791707 -122.447987 37.746676 -122.449433 37.736150 -122.505944 37.780924 -122.509729”]
},

範例 3

{
  "@type": "Service",
  "@id": "http://www.provider.com/service/1",
  "areaServed": [
    {
      "@type": "GeoShape",  // Richmond District delivery area.
      // Specify latitude first (i.e., lat long lat long ...)
      "polygon": "37.785847 -122.484851 37.772757 -122.483983 37.774442 -122.458563 37.786876 -122.459474"
    },
    {
      "@type": "GeoShape",  // Haight-Ashbury delivery area.
      // Specify latitude first (i.e., lat long lat long ...)
      "polygon": "37.774804 -122.454774 37.766224 -122.452881 37.769087 -122.436043 37.773087 -122.437417"
    }  ],
...
},

下表列出 Menu 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這個項目一律為「選單」。
@id 網址 必要 選單的專屬 ID。
name 文字 選用 可在使用者瀏覽選單時識別 Menu 的文字。
description 文字 選用 菜單說明。
disclaimer MenuDisclaimer 選用 菜單免責聲明。例如營養資訊揭露和過敏原揭露。
hasMenuSection MenuSection 的單一物件或陣列 選用 選單的邏輯子群組 (例如晚餐、開胃菜或魚料理)。
hasMenuItem MenuItem 的單一物件或陣列 選用 Menu 中包含的 MenuItem 物件,通常是 Menu 未以 MenuSections 細分的情況。
inLanguage 文字 選用 選單內容的語言,為 IETF BCP 47 標準的語言代碼。 例如「en-US」。

以下範例說明 Menu 類型的用法:

範例 1

{
  "@type": "Menu",
  "@id": "http://www.provider.com/somerestaurant/menu/1",
  "hasMenuSection": {
    "@type": "MenuSection",
    "@id": "http://www.provider.com/somerestaurant/menusection/1",
    "name": "Tacos",
    "description": "Tacos inspired by India cuisine.",
    "offers": {
      "@type": "Offer",
      "availabilityStarts": "T08:00:00", // Starts at 8:00AM
      "availabilityEnds": "T22:00:00" // Ends at 10:00PM. Available 8AM-9:59:59PM
    },
    "hasMenuItem": {
      "@type": "MenuItem",
      "@id": "http://www.provider.com/somerestaurant/menuitem/1",
      "name": "Aloo Gobi Taco",
      "description": "Mexico City-style street corn tortilla taco filled with a flavorful mixture of mildly south Indian spiced cauliflower, potato, tomato, onions and bell peppers.",
      "offers": {
        "@type": "Offer",
        "sku": "offer-aloo-gobi-taco",
        "price": "3.50",
        "priceCurrency": "USD"
      },
      "nutrition": {
        "@type": "NutritionInformation",
        "calories": "170 Cal",
        "fatContent": "3 g",
        "fiberContent": "2 g",
        "proteinContent": "4 g"
      },
      "suitableForDiet": "http://schema.org/GlutenFreeDiet"
    }
  },
  "inLanguage": "English"
}

範例 2

本例會以陣列顯示 hasMenuItem

{
  "@type": "Menu",
  "@id": "http://www.provider.com/somerestaurant/menu/1",
  "name": "Dine-In Menu",
  "description": "Menu for in-restaurant dining only.",
  "hasMenuSection": [
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/1",
      "name": "Main",
      "description": "Main course",
      "image": "http://www.provider.com/somerestaurant/main_dishes.jpg",
      "hasMenuItem": [
        {
          "@type": "MenuItem",
          "@id": "http://www.provider.com/somerestaurant/menuitem/1",
          "name": "Pizza",
          "description": "Pizza",
          "offers": {
            "@type": "Offer",
            "sku": "offer-pizza",
            "price": "7.49",
            "priceCurrency": "USD",
            "availabilityStarts": "T08:00:00", // Starts at 8:00AM
            "availabilityEnds": "T18:00:00" // Ends at 6:00PM, last order at 5:59:59PM
          }
        },
        {
          "@type": "MenuItem",
          "@id": "http://www.provider.com/somerestaurant/menuitem/2",
          "name": "Pasta",
          "description": "Pasta",
          "offers": [
            {
              "@type": "Offer",
              "sku": "offer-pasta-lunch",
              "price": "7.49",
              "priceCurrency": "USD",
              "availabilityStarts": "T08:00:00", // Starts at 8:00AM
              "availabilityEnds": "T18:00:00" // Ends at 6:00PM, last order at 5:59:59PM
            },
            {
              "@type": "Offer",
              "sku": "offer-pasta-dinner",
              "price": "10.49",
              "priceCurrency": "USD",
              "availabilityStarts": "T18:00:00", // Starts at 6:00PM
              "availabilityEnds": "T21:00:00" // Ends at 9:00PM, last order at 8:59:59PM
            }
          ]
        }
      ]
    },
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/2",
      "name": "Soups & Salads",
      "description": "Salads and a few choices of soup",
      "image": "https://www.provider.com/somerestaurant/soup_and_salad_dishes.jpg",
      "hasMenuItem": {
        "@type": "MenuItem",
        "@id": "http://www.provider.com/somerestaurant/menuitem/3",
        "name": "Pea Soup",
        "description": "Creamy pea soup topped with melted cheese and sourdough croutons.",
        "offers": {
          "@type": "Offer",
          "sku": "offer-pea-soup",
          "price": "3.49",
          "priceCurrency": "USD"
        },
        "suitableForDiet": "http://schema.org/GlutenFreeDiet"
      }
    }
  ]
}

範例 3

本例會以陣列顯示 hasMenuSection

{
  "@type": "Menu",
  "@id": "http://www.provider.com/somerestaurant/menu/1",
  "name": "Dine-In Menu",
  "description": "Menu for in-restaurant dining only.",
  "hasMenuSection": [
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/1",
      "name": "Dinner",
      "description": "Dinner dishes",
      "hasMenuSection": [
        {
          "@type": "MenuSection",
          "@id": "http://www.provider.com/somerestaurant/menusection/2",
          "name": "Starters",
          "description": "Appetizers and such",
          "image": "https://www.provider.com/somerestaurant/starter_dishes.jpg",
          "hasMenuItem": {
            "@type": "MenuItem",
            "@id": "http://www.provider.com/somerestaurant/menuitem/1",
            "name": "Potato Skins",
            "description": "Small serving of stuffed potato skins.",
            "offers": {
              "@type": "Offer",
              "sku": "offer-potato-skins",
              "price": "7.49",
              "priceCurrency": "USD"
            },
            "suitableForDiet": "http://schema.org/GlutenFreeDiet"
          }
        },
        {
          "@type": "MenuSection",
          "@id": "http://www.provider.com/somerestaurant/menusection/3",
          "name": "Soups & Salads",
          "description": "Salads and a few choices of soup",
          "image": "https://thisisarestaurant.com/soup_and_salad_dishes.jpg",
          "hasMenuItem": {
            "@type": "MenuItem",
            "@id": "http://www.provider.com/somerestaurant/menuitem/2",
            "name": "Pea Soup",
            "description": "Creamy pea soup topped with melted cheese and sourdough croutons.",
            "offers": {
              "@type": "Offer",
              "sku": "offer-pea-soup",
              "price": "3.49",
              "priceCurrency": "USD"
            },
            "suitableForDiet": "http://schema.org/GlutenFreeDiet"
          }
        },
        {
          "@type": "MenuSection",
          "@id": "http://www.provider.com/somerestaurant/menusection/4",
          "name": "Steak",
          "description": "Steak Dishes",
          "image": "https://steak.com/steak_dishes.jpg",
          "hasMenuItem": {
            "@type": "MenuItem",
            "@id": "http://www.provider.com/somerestaurant/menuitem/3",
            "name": "Sirloin",
            "description": "Sirloin steak dish.",
            "offers": {
              "@type": "Offer",
              "sku": "offer-sirloin-steak",
              "price": "15.49",
              "priceCurrency": "USD"
            },
            "suitableForDiet": "http://schema.org/GlutenFreeDiet"
          }
        }
      ]
    },
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/5",
      "name": "Desserts",
      "description": "Dessert dishes.",
      "image": "http://www.provider.com/somerestaurant/dessert_dishes.jpg",
      "hasMenuItem": {
        "@type": "MenuItem",
        "@id": "http://www.provider.com/somerestaurant/menuitem/4",
        "name": "Chocolate Pie",
        "description": "A slice of chocolate pie.",
        "offers": {
          "@type": "Offer",
          "sku": "offer-chocolate-pie",
          "price": "3.49",
          "priceCurrency": "USD"
        }
      }
    }
  ]
}

如需更多 Menu 實體的範例,請參閱餐廳與菜單動態饋給範例

下表列出 MenuDisclaimer 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「MenuDisclaimer」。
@id 網址 必要 選單免責事項的專屬 ID。
text 文字 必要 免責事項文字。例如,「成人每日平均攝取的量是 8700 千焦耳」。
url 網址 選用 網址指向提供免責事項詳細資料的網頁。

以下範例顯示 MenuDisclaimer 類型的用法:

範例

{
    "@type": "Menu",
    "@id": "menu_1",
    "disclaimer": {
        "@type": "MenuDisclaimer",
        "@id": "menu_1_disclaimer_1",
        "text": "The average adult daily energy intake is 8700 kJ",
        "url": "https://partner.domain.com/menu/provider/disclaimer/more-info.html"
    }
}

代表選單中項目的選單項目。下表列出 MenuItem 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「MenuItem」。
@id 網址 必要 選單項目的專屬 ID。
name 文字 必要 可在使用者瀏覽選單時識別 MenuItem 的文字。
description 文字 選用 菜單項目的說明。
image 網址 選用

選單項目的圖片。請遵循下列圖片規範:

  • 顯示比例 3:2
  • 解析度至少為 600x400 像素 (72 dpi)
  • 建議解析度 1400x960 像素 72 dpi
menuAddOn AddOnMenuSection 的陣列 選用 可在選單項目中以外掛程式形式新增的選單區塊項目。
offers Offer 的陣列 必填*

提供這項 MenuItem 的一或多項優惠。說明這個 MenuItem 的供應時機和價格。在特定時間內,只能提供一項優惠。如果價格/供應情形因時段而異,則可提供多項優惠。如果食物品項是基本屬性 (例如披薩的尺寸),請使用 menuItemOptionOffer.eligibleQuantity 的預設值是 0 且無上限。

下方清單列出 MenuItem 中使用的 Offer 屬性。

  • 必須採用Offer.sku
  • 必須採用Offer.price
  • 必須採用Offer.priceCurrency
  • Offer.availabilityStarts (選用)
  • Offer.availabilityEnds (選用)
  • Offer.availableDay (選用)
  • Offer.validFrom (選用)
  • Offer.validThrough (選用)
  • Offer.eligibleQuantity (選用)
  • Offer.inventoryLevel (選用)
hasMenuItemOptions MenuItemOption 的陣列 必要 此選單項目的基本選項/變化版本清單。請使用選項來指定項目可用的各種基本變化版本,例如小、中和大。
suitableForDiet RestrictedDiet 的陣列 選用 這道菜符合描述的飲食限制,例如「http://schema.org/GlutenFreeDiet」或「http://schema.org/VeganDiet」。這是一份列舉的可能值清單。
nutrition NutritionInformation 選用 餐點的營養資訊,最主要的卡路里資訊。
hasAllergen AllergenDetails 選用 gs1:AllergenDetails 對餐點的過敏原。 新增 gs1 結構定義,即可使用這個屬性:"@context": ["http://gs1.org/voc/", "http://schema.org"]。 此外,請將 FoodBeverageTobaccoProduct 加入 MenuItem 的類型中。
additive AdditiveDetails 陣列 選用 gs1:AdditiveDetails 菜的添加物。 此為列舉的可能值清單。如要使用這個屬性,請新增 gs1 結構定義:"@context": ["http://gs1.org/voc/", "http://schema.org"]。 此外,請將 FoodBeverageTobaccoProduct 加入 MenuItem 的類型中。
packaging PackagingDetails 選用 此 menuItem 的包裝與回收資訊根據 gs1:PackagingDetails。新增 gs1 結構定義,即可使用這個屬性:"@context": ["http://gs1.org/voc/", "http://schema.org"]。 此外,請將 FoodBeverageTobaccoProduct 加入 MenuItem 的類型中。

以下範例顯示 MenuItem 元素:

範例 1

"hasMenuItem": {
  "@type": "MenuItem",
  "@id": "http://www.provider.com/bar/menuitem/1",
  "name": "Potato Skins",
  "description": "Small serving of stuffed potato skins.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-potato-skins",
    "price": "7.49",
    "priceCurrency": "USD"
  },
  "suitableForDiet": "http://schema.org/GlutenFreeDiet"
}

範例 2

"hasMenuItem": [
  {
    "@type": "MenuItem",
    "@id": "https://www.example.com/1089/product/170067",
    "name": "Veg Grill Burrito",
    "offers": {
      "@type": "Offer",
      "sku": "offer-veg-grill-burrito",
      "price": "12.99",
      "priceCurrency": "USD"
    },
    "menuAddOn": {
      "@type": "AddOnMenuSection",
      "name": "Cheese",
      "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection
      "eligibleQuantity":
        "@type": "QuantitativeValue",
        "minValue": 0,
        "maxValue": 2 // Maximum of 2 cheeses are allowed
      }
    }
  },
  {
    "@type": "MenuItem",
    "@id": "https://www.example.com/1089/product/170018",
    "name": "Chicken Taco",
    "offers": {
      "@type": "Offer",
      "sku": "offer-chicken-taco",
      "price": "6.99",
      "priceCurrency": "USD"
    }
  }
]

範例 3

{
  "@type": "MenuItem",
  "@id": "https://www.example.com/1089/product/170067",
  "name": "Meat Combo",
  "hasMenuItemOptions": [
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "OPTION",
        "value": "Plate",
        "offers": {
          "@type": "Offer",
          "sku": "offer-meat-combo-plate",
          "price": "12.00",
          "priceCurrency": "USD"
        },
        "menuAddOn": [
          {
            "@type": "AddOnMenuSection",
            "name": "Toppings for Plate",
            "@id": "https://www.example.com/1089/addon/1",
            "eligibleQuantity": {
              "@type": "QuantitativeValue",
              "minValue": 0,
              "maxValue": 3
            },
            "hasMenuItem": [
              {
                "@type": "AddOnMenuItem",
                "@id": "https://www.example.com/1089/addon/1/a",
                "name": "Hummus",
                "offers": {
                  "@type": "Offer",
                  "sku": "offer-meat-combo-topping-hummus",
                  "price": "1.00",
                  "priceCurrency": "USD"
                }
              }
              // -- Other Items --
            ]
          }
        ]
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "OPTION",
        "value": "Sandwich"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-meat-combo-sandwich",
        "price": "10.00",
        "priceCurrency": "USD"
      },
      "menuAddOn": [
        {
          "@type": "AddOnMenuSection",
          "name": "Toppings for Sandwich",
          "@id": "https://www.example.com/1089/addon/1",
          "eligibleQuantity": {
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 2
          },
          "hasMenuItem": [
            {
              "@type": "AddOnMenuItem",
              "@id": "https://www.example.com/1089/addon/1/a",
              "name": "Hummus",
              "offers": {
                "@type": "Offer",
                "sku": "offer-meat-combo-topping-hummus",
                "price": "1.00",
                "priceCurrency": "USD"
              }
            }
            // -- Other Items --
          ]
        }
      ]
    }
  ]
}

示例 4

{
  "@type": "MenuItem",
  "@id": "https://www.example.com/1089/product/170067",
  "name": "Pepperoni Pizza",
  "hasMenuItemOptions": [
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Small"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-small",
        "price": "10.00",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Medium"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-medium",
        "price": "15.00",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Large"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-large",
        "price": "20.00",
        "priceCurrency": "USD"
      }
    }
  ]
}

範例 5

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/9",
  "name": "Ice Coffee",
  "offers": {
    "@type": "Offer",
    "sku": "offer-ice-coffee",
    "price": "3.99",
    "priceCurrency": "USD"
  },
  "nutrition": {
    "@type": "NutritionInformation",
    "description": "Contains preservatives and artificial flavor"
  },
  "hasAllergen": [
    {
      "@type": "AllergenDetails",
      "allergenType": "http://gs1.org/voc/AllergenTypeCode-LACTOSE",
      "allergenLevelOfContainmentCode":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    },
    {
      "@type": "AllergenDetails",
      "allergenType": "http://gs1.org/voc/AllergenTypeCode-PEANUTS",
      "allergenLevelOfContainmentCode":
        "http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN"
    }
  ],
  "additive": [
    {
      "@type": "AdditiveDetails",
      "additiveName": "caffeine",
      "additiveLevelOfContainment":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    }
  ],
  "packaging": {
    "@type": "PackagingDetails",
    "packagingRecyclingProcessType" :
      "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE",
    "hasReturnablePackageDeposit": {
      "@type": "ReturnablePackageDepositDetails",
      "returnablePackageDepositAmount": {
        "@type": "http://gs1.org/voc/PriceSpecification",
        "http://gs1.org/voc/price": "0.10",
        "http://gs1.org/voc/priceCurrency": "USD"
      }
    }
  }
}

如需 MenuItem 實體的更多範例,請參閱「餐廳和菜單動態饋給範例」。

用來代表使用者選取餐點或組合時需要做的選項。使用者必須選取一個選項,否則系統會將訂單視為無效。例如,選擇小、中或大等披薩時,

如需 MenuItemOption 的用途範例,請參閱使用 MenuItemOption 自訂內容指南。

下表列出 MenuItemOption 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律為「MenuItemOption」。
value PropertyValue 必要 PropertyValue,包含代表選項的名稱/值組合。
offers Offer 的陣列 必要

提供這項 MenuItemOption 的一或多項優惠。說明這個選單項目選項的供應時機和價格。 在特定時間內,只能有一項優惠。如果價格/供應情形會因一天的時間而異,則可提供許多有效優惠。 不要使用 Offer.eligibleQuantityMenuItemOption 彼此互斥,因此如果提供 Offer.eligibleQuantity,系統就會略過。

下方清單列出 MenuItemOption 中使用的 Offer 屬性。

  • 必須採用Offer.sku
  • 必須採用Offer.price
  • 必須採用Offer.priceCurrency
  • Offer.availabilityStarts (選用)
  • Offer.availabilityEnds (選用)
  • Offer.availableDay (選用)
  • Offer.validFrom (選用)
  • Offer.validThrough (選用)
  • Offer.eligibleQuantity (選用)
  • Offer.inventoryLevel (選用)
menuAddOn Array of AddOnMenuSection 選用 選單區中,允許新增為外掛程式的項目。只有在外掛程式專屬於特定選單項目選項時,才需要使用這個選項。否則,請使用 MenuItem.menuAddOn 屬性提供外掛程式。
suitableForDiet RestrictedDiet 的陣列 選用 表示此餐點符合所述飲食限制的飲食列舉清單,例如「http://schema.org/GlutenFreeDiet」或「http://schema.org/VeganDiet」。
nutrition NutritionInformation 選用 餐點的營養資訊,最主要的卡路里資訊。
hasAllergen AllergenDetails 選用 gs1:AllergenDetails 對餐點的過敏原。 新增 gs1 結構定義,即可使用這個屬性:"@context": ["http://gs1.org/voc/", "http://schema.org"]。 此外,請將 FoodBeverageTobaccoProduct 加入 MenuItemOption 的類型中。
additive AdditiveDetails 陣列 選用 gs1:AdditiveDetails 菜的添加品項。 此為列舉的可能值清單。如要使用這個屬性,請新增 gs1 結構定義:"@context": ["http://gs1.org/voc/", "http://schema.org"]。 此外,請將 FoodBeverageTobaccoProduct 加入 MenuItemOption 的類型中。
packaging PackagingDetails 選用 針對這個 menuItem 的封裝與回收資訊gs1:PackagingDetails 新增 gs1 結構定義,以使用這個屬性:"@context": ["http://gs1.org/voc/", "http://schema.org"]。 此外,請將 FoodBeverageTobaccoProduct 加入 MenuItemOption 的類型中。

以下範例顯示 MenuItemOption 元素:

範例 1

{
  "@type": "MenuItem",
  "@id": "https://www.example.com/1089/product/170067",
  "name": "Pepperoni Pizza",
  "hasMenuItemOptions": [
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Small"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-small",
        "price": "10.00",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Medium"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-medium",
        "price": "15.00",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Large"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-large",
        "price": "20.00",
        "priceCurrency": "USD"
      }
    }
  ]
}

範例 2

{
  "@type": "MenuItem",
  "@id": "https://www.example.com/1089/product/170067",
  "name": "Meat Combo",
  "hasMenuItemOptions": [
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "OPTION",
        "value": "Plate",
        "offers": {
          "@type": "Offer",
          "sku": "offer-meat-combo-plate",
          "price": "12.00",
          "priceCurrency": "USD"
        },
        "menuAddOn": [
          {
            "@type": "AddOnMenuSection",
            "name": "Toppings for Plate",
            "@id": "https://www.example.com/1089/addon/1",
            "eligibleQuantity": {
              "@type": "QuantitativeValue",
              "minValue": 0,
              "maxValue": 3
            },
            "hasMenuItem": [
              {
                "@type": "AddOnMenuItem",
                "@id": "https://www.example.com/1089/addon/1/a",
                "name": "Hummus",
                "offers": {
                  "@type": "Offer",
                  "sku": "offer-meat-combo-topping-hummus",
                  "price": "1.00",
                  "priceCurrency": "USD"
                }
              }
              // -- Other Items --
            ]
          }
        ]
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "OPTION",
        "value": "Sandwich"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-meat-combo-sandwich",
        "price": "10.00",
        "priceCurrency": "USD"
      },
      "menuAddOn": [
        {
          "@type": "AddOnMenuSection",
          "name": "Toppings for Sandwich",
          "@id": "https://www.example.com/1089/addon/1",
          "eligibleQuantity": {
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 2
          },
          "hasMenuItem": [
            {
              "@type": "AddOnMenuItem",
              "@id": "https://www.example.com/1089/addon/1/a",
              "name": "Hummus",
              "offers": {
                "@type": "Offer",
                "sku": "offer-meat-combo-topping-hummus",
                "price": "1.00",
                "priceCurrency": "USD"
              }
            }
            // -- Other Items --
          ]
        }
      ]
    }
  ]
}

選單專區,用來代表選單中的特定部分。下表列出 MenuSection 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「MenuSection」。
@id 網址 必要 菜單專區的專屬 ID。
name 文字 必要 可在使用者瀏覽選單時識別 MenuSection 的文字。
description 文字 選用 菜單專區說明。
hasMenuSection MenuSection 的陣列 選用 MenuSection 的邏輯子群組。舉例來說,晚餐菜單部分可以有多個子選單版面,例如「家禽」或「素食」。
hasMenuItem MenuItem 的陣列 選用 MenuSection 中包含的選單項目。
offers Offer 的陣列 選用

使用 Offer.availabilityStartsOffer.availabilityEnds 表示要提供這個 MenuSection 的時間範圍。請勿使用 Offer.eligibleQuantity

以下清單說明在 MenuSection 中使用哪些 Offer 屬性:

  • Offer.availabilityStarts (選用)
  • Offer.availabilityEnds (選用)
  • Offer.availableDay (選用)
  • Offer.validFrom (選用)
  • Offer.validThrough (選用)
image 網址 選用 菜單專區的圖片。

以下範例顯示 MenuSection 實體:

範例 1

{
  "@type": "MenuSection",
  "@id": "http://www.provider.com/bar/menusection/4",
  "name": "Steak",
  "description": "Steak Dishes",
  "image": "https://steak.com/steak_dishes.jpg",
  "hasMenuItem": {
    "@type": "MenuItem",
    "@id": "http://www.provider.com/bar/menuitem/3",
    "name": "Sirloin",
    "description": "Sirloin steak dish.",
    "offers": {
      "@type": "Offer",
      "sku": "offer-sirloin-steak",
      "price": "15.49",
      "priceCurrency": "USD"
    },
    "suitableForDiet": "http://schema.org/GlutenFreeDiet"
  }
}

範例 2

"hasMenuSection": [
  {
    "@type": "MenuSection",
    "@id": "https://www.example.com/1089/categorization/25114480",
    "name": "Main Items",
    "hasMenuItem": [
      {
        "@type": "MenuItem",
        "@id": "https://www.example.com/1089/product/170067",
        "name": "Veg Grill Burrito",
        "offers": {
          "@type": "Offer",
          "sku": "offer-veg-grill-burrito",
          "price": "12.99",
          "priceCurrency": "USD"
        },
        "menuAddOn": {
          "@type": "AddOnMenuSection",
          "name": "Cheese",
          "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection
          "eligibleQuantity":
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 2 // Maximum of 2 cheeses are allowed
          }
        }
      },
      {
        "@type": "MenuItem",
        "@id": "https://www.example.com/1089/product/170018",
        "name": "Chicken Taco",
        "offers": {
          "@type": "Offer",
          "sku": "offer-chicken-taco",
          "price": "6.99",
          "priceCurrency": "USD"
        }
      }
    ]
  },
  {
    "@type": "AddOnMenuSection",
    "@id": "https://www.example.com/1089/addon/1",
    "name": "AddOnCheese",
    "hasMenuItem": [
      {
        "@type": "AddOnMenuItem",
        "@id": "https://www.example.com/1089/addon/a",
        "name": "Swiss",
        "offers": {
          "@type": "Offer",
          "sku": "offer-swiss",
          "price": "2.99",
          "priceCurrency": "USD"
        }
      },
      {
        "@type": "AddOnMenuItem",
        "@id": "https://www.example.com/1089/addon/b",
        "name": "Mozarella",
        "offers": {
          "@type": "Offer",
          "sku": "offer-mozzarella",
          "price": "1.99",
          "priceCurrency": "USD"
        }
      }
    ]
  }
]

如需更多 MenuSection 實體的範例,請參閱餐廳與菜單動態饋給範例

NutritionInformation

下表說明 NutritionInformation 類型的屬性。測量單位會區分大小寫。例如「Cal」可以使用,但不接受「cal」

屬性 類型 必要性 說明
@type 文字 必要 值一律為「NutritionInformation」。
description 文字 選用 任意文字中的營養資訊。例如「包含預警」。
calories 文字 選用

卡路里、大卡或千焦耳的卡路里數,並使用以下格式:

number Cal_kcal_OR_kJ

例如「240 卡」。

carbohydrateContent 文字 選用

碳水化合物含量,通常為 g,並且採用下列格式:

number g_OR_mg

例如「7 g」。

cholesterolContent 文字 選用

膽固醇含量 (通常為 mg) 量,格式如下:

number g_OR_mg

例如「12 mg」。

fatContent 文字 選用

脂肪含量 (通常為 g 值),格式如下:

number g_OR_mg

例如「42 g」。

fiberContent 文字 選用

纖維的 g 或 mg 數量,格式如下:

number g_OR_mg
proteinContent 文字 選用

蛋白質的 g 或 mg 數量,格式如下:

number g_OR_mg
saturatedFatContent 文字 選用

飽和脂肪的 g 或 mg 數量,格式如下:

number g_OR_mg
servingSize 文字 選用 份量大小,以 mL、L、g 或 kg 為單位,以體積或質量表示。
sodiumContent 文字 選用

含鈉的 mg 或 g 數量,格式如下:

number g_OR_mg
sugarContent 文字 選用

含糖的 g 或 mg 值,格式如下:

number g_OR_mg
transFatContent 文字 選用

變形脂肪的 g 或 mg,格式如下:

number g_OR_mg
unsaturatedFatContent 文字 選用

不飽和脂肪量 (通常以 g 為單位) 使用下列格式:

number g_OR_mg

以下範例是 NutritionInformation 元素:

範例 1

"nutrition": {
  "@type": "NutritionInformation",
  "calories": "170 Cal",
  "fatContent": "3 g",
  "fiberContent": "2 g",
  "proteinContent": "4 g"
},

範例 2

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/7",
  "name": "Peach Ice Tea",
  "description": "A 0.5l bottle of peach ice tea.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-peach-ice-tea",
    "price": "2.49",
    "priceCurrency": "USD"
  },
  "nutrition": {
              "@type": "NutritionInformation",
              "description": "Contains preservatives and artificial flavor"
  }
},

合作提案

菜單品項優惠。下表說明 Offer 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 值一律為「優惠」。
sku 文字 須符合條件

優惠的專屬 ID。可以是 Offer 中不重複的任何文字值。sku 值會參照結帳系統,並以 lineitem 中的 offerId 的形式提交。

這項屬性僅適用於以下優惠類型:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
price 文字 須符合條件

提供商品的價格。例如「6.00」不含貨幣符號。

只有以下優惠類型才需要這項屬性:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

這個優惠類型未用於下列優惠類型:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
priceCurrency 文字 須符合條件

連結至 PriceSpecification 及其子類型時,價格或價格元件的幣別 (採用 3 個字母的 ISO 4217 格式)。

只有以下優惠類型才需要這項屬性:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

這個優惠類型未用於下列優惠類型:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
availabilityStarts DateTimeTime 選用 日期與時間。 舉例來說,如果鬆餅是在早上 7:00 供應,則這個欄位的值可能會如下所示:「2017-05-01T07:00:00-07:00」。詳情請參閱日期和時間格式
availabilityEnds DateTimeTime 選用 提供優惠的日期和時間或時間。此時間不會計。例如,如果鬆餅的供應結束時間是早上 10 點,則最後的鬆餅可以在上午 9:59:59 提供。這個欄位的值看起來會像這樣:「2017-05-01T10:00:00-07:00」。詳情請參閱日期和時間格式
availableDay DayOfWeek 陣列 選用

可購買這項商品星期幾。以下為有效值:

  • 「星期一」
  • 「星期二」
  • 「星期三」
  • 「星期四」
  • 「週五」
  • 「週六」
  • 「週日」

如果一週中的不同日期會有不同的供應情形,請使用多個 Offer 物件,如下方範例所示。

validFrom DateTime 選用

指定價格有效的日期與時間 (包括時區)。舉例來說,午餐時義大利麵是 $8 美元,晚餐時則為 $10 美元。詳情請參閱日期和時間格式

這項屬性可用於下列優惠類型:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • AddOnMenuSection.Offer
  • MenuSection.Offer

這項資源不適用於下列優惠類型:

  • Service.Offer
validThrough DateTime 選用

指定價格之後的日期與時間 (包括時區)。舉例來說,午餐時義大利麵是 $8 美元,晚餐時則為 $10 美元。validThrough 的時間不能重複:例如,如果這個時間設為晚上 6 點,則時間上限為晚上 5:59:59。詳情請參閱日期和時間格式

這項屬性可用於下列優惠類型:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • AddOnMenuSection.Offer
  • MenuSection.Offer

下列優惠類型未使用這項資源。

  • Service.Offer
eligibleQuantity QuantitativeValue 選用

系統允許這項商品的訂購數量。舉例來說,某間餐廳可能要求顧客必須訂購至少 10 份披薩。

此為選填值。預設沒有上限,但餐廳可以指定上限。最低限制只有在使用者選取項目時才會套用。

這項屬性可用於下列優惠類型:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

下列優惠類型未使用這項資源。

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
aggregateRating AggregateRating 選用

整體評分,根據項目評論集或評分計算而得。

這項屬性可用於下列優惠類型:

  • AddOnMenuItem.Offer
  • MenuItem.Offer

此屬性不用於以下類型。

  • AddOnMenuSection.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer
  • Service.Offer
inventoryLevel QuantitativeValue 選用

項目目前的概略庫存層級。

這項屬性可用於下列優惠類型:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer

這項資源不適用於下列優惠類型:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
priceSpecification DeliveryChargeSpecificationPaymentChargeSpecification 的陣列 選用

Service.Offer 中使用時,會指出配送價格的詳細資料。如果有多個 DeliveryChargeSpecification 物件適用,系統會套用最明確的物件。請使用互斥的 DeliveryChargeSpecification 物件來避免模稜兩可。

這項屬性可用於下列優惠類型:

  • Service.Offer

這項資源不適用於下列優惠類型:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • MenuSection.Offer
offeredBy Restaurant ID 陣列 選用

代表這個 Offer 供應的餐廳。

如未指定,所有餐廳都會提供這個 Offer

這項屬性可用於下列優惠類型:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer

這項資源不適用於下列優惠類型:

  • Service.Offer
applicableFulfillmentMethod 文字陣列 選用

代表執行 Offer 的服務類型。可能的值包括「DELIVERY」或「TAKEOUT」。

如未指定,無論是外送與外帶,此 Offer 就會完成。

這項屬性可用於下列優惠類型:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer

這項資源不適用於下列優惠類型:

  • Service.Offer
@id 網址 已淘汰 優惠的專屬 ID。自 2019 年 4 月 25 日起淘汰,請按照上述說明取代 sku

以下範例顯示 Offer 元素:

範例 1

下例是簡易的優惠:

{
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/139/offer",
  "price": "10",
  "priceCurrency": "USD"
}

範例 2

以下優惠範例顯示週末早上 8 點到 10 點的空房時間:

{
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/140/offer",
  "price": "10",
  "priceCurrency": "USD",
  "availabilityStarts": "T08:00:00-07:00",  // Only available from 8-9:59:59 AM
  "availabilityEnds": "T10:00:00-07:00",
  "availableDay": ["Saturday", "Sunday"]  // Only on weekends.
}

範例 3

以下範例顯示可於週一、週三和週五上午 9 至 10:59:59 提供服務,但星期二和星期四上午 8 點到 11 點 59 分 59 分:

{
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/140/offer",
  "price": "10",
  "priceCurrency": "USD",
  "availabilityStarts": "T09:00:00-07:00",
  "availabilityEnds": "T11:00:00-07:00",
  "availableDay": ["Monday", "Wednesday", "Friday"]
}, {
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/141/offer",
  "price": "10",
  "priceCurrency": "USD",
  "availabilityStarts": "T08:00:00-07:00",
  "availabilityEnds": "T12:00:00-07:00",
  "availableDay": ["Tuesday", "Thursday"]
}

示例 4

下例是選單項目適用的加購數量設定,讓使用者最多可以訂購該項目的 2 部分。

{
  "@type": "AddOnMenuItem",
  "@id": "https://www.example.com/1089/addon/a",
  "name": "Ranch",
  "offers": {
    "@type": "Offer",
    "@id": "https://www.example.com/1089/addon/a/offer",
    "price": "2.99",
    "priceCurrency": "USD"
    "eligibleQuantity": {
         "@type": "QuantitativeValue",
         "maxValue": 2
     }
  }
}

範例 5

以下範例顯示特定地點的外送優惠:

{
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/139/offer",
  "price": "10",
  "priceCurrency": "USD",
  "applicableFulfillmentMethods": ["DELIVERY"],
  "offeredBy": [
    {
      "@type": "Restaurant",
      "@id": "https://www.provider.com/location/1",
    }
  ]
}

OpeningHoursSpecification

定義訂購服務可用的時間。通常,opens 的值會小於 closes 的值。使用 openscloses 屬性時需符合下列規範:

  • openscloses 為選用屬性,但強烈建議你註明在可以使用排序時。定義可用時數的最佳做法,是加入包含具有 openscloses 屬性的 ServiceDeliveryHoursSpecificationdeliveryHours 陣列。如果想提供更多限度來預購,可以在 deliveryHours 中加入 AdvanceServiceDeliveryHoursSpecification 物件及其專屬的 openscloses 屬性。
  • 如果未明確指定 openscloses,系統會假設訂購服務全天候供應。
  • 時間必須以服務的當地時間為準。請勿在 openscloses 值中加入時區。如有指定時區,Google 會忽略這項資訊。
  • 如果 openscloses 相同,我們會假設餐廳營業 0 分鐘。
  • 如果 opens 大於 closes,系統會將打烊時間解讀為隔天。舉例來說,如果營業時間設為 1 月 1 日下午 5 點,打烊時間為凌晨 2 點,系統就會將餐廳解讀為 1 月 2 日凌晨 2 點。
  • closes 的時間有限。因此,如果這個訂購時段的開始和打烊時間分別設為上午 10 點和下午 4 點,則最後一筆訂單的時間為下午 3:59:59。

下表說明 OpeningHoursSpecification 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「OpeningHoursSpecification」。
@id 網址 選用 OpeningHoursSpecification 的 ID。
dayOfWeek DayOfWeek 陣列 選用

這些營業時間的有效日期。可接受的值為「星期一」、「星期二」、「星期三」、「星期四」、「星期五」、「星期六」和「星期日」。例如:

"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
]

如果您沒有指定任何星期幾,則 OpeningHoursSpecification 會套用至所有天數。

opens Time 選用

Restaurant 規格中使用時,這個屬性表示餐廳在當週指定日期的開幕時間。例如上午 6:30 寫成「T06:30:00」。

Service 規格中使用時,會指出使用者訂單可在哪個特定時段下單。線上系統上線的時間,可讓使用者下單。在線上系統的營業時間/結束營業時間中,您可以使用 deliveryHours 指定使用者何時能訂購特殊類型的外送餐點。

時間必須以服務的當地時間為準。請勿在 opens 值中加入時區。如果指定時區,Google 會忽略這項資訊。

詳情請參閱日期和時間格式

closes Time 選用

Service 規格中使用時,這個屬性表示使用者訂單無法下單的特定時段。這項屬性會指定線上系統的打烊時間,並允許使用者下單。在線上系統的營業時間/結束營業時間中,您可以使用 deliveryHours 指定使用者何時能訂購特殊類型的外送餐點。

時間必須以服務的當地時間為準。請勿在 closes 值中加入時區。如果指定時區,Google 會忽略這項資訊。

詳情請參閱日期和時間格式

validFrom DateTime 選用

用於 Restaurant 規格時,這個屬性表示 openscloses 為餐廳指定的營業時間有效日期。

舉例來說,如果提供的時間適用於 2017 年整年,請將 validFrom 設為「2017-01-01T00:00:00-07:00」,並將 validThrough 設為「2017-12-31T23:59:59-07:00」。

Service 規格中使用時,validFrom 表示使用者可以下單的開始日期。

如果您未在動態饋給中指定這項屬性,Google 會假設每天都有餐廳或服務。

除了日期以外,您也必須提供值的時間和時區部分。

時區請使用餐廳或服務的時區。

詳情請參閱日期和時間格式

validThrough DateTime 選用

Restaurant 中使用時,openscloses 指定的營業時間過後就會失效。

舉例來說,如果提供的時間適用於 2017 年整年,請將 validFrom 設為「2017-01-01T00:00:00-07:00」,並將 validThrough 設為「2017-12-31T23:59:59-07:00」。

Service 規格中使用時,validThrough 表示使用者訂單無法下單的結束日期。

如果您未在動態饋給中指定這項屬性,Google 會假設每天都有餐廳或服務。

除了日期以外,DateTime 中的時間和時區部分也是必要項目。

時區請使用餐廳或服務的時區。

validThrough 的時間有限。舉例來說,如果這個時間設為晚上 6 點,則時間最長為晚上 5:59:59。

詳情請參閱日期和時間格式

deliveryHours ServiceDeliveryHoursSpecification 陣列或 AdvanceServiceDeliveryHoursSpecification 陣列 須符合條件

運送或外帶時間規格。

除非餐廳停業 (意即 openscloses 已設定且彼此相等),否則此為必要參數。

  • ServiceDeliveryHoursSpecification:在營業時間/結束營業時間,您可以設定「開始營業」和「結束營業時間」,讓使用者能盡快下單。
  • AdvanceServiceDeliveryHoursSpecification:在營業時間/結束營業時間,您可以設定「營業中」和「結束營業」時段,讓使用者能提前下單。

以下範例顯示 OpeningHoursSpecification 元素:

範例 1

// Ordering times for Monday through Friday
{
  "@type": "OpeningHoursSpecification",
  "deliveryHours": [
    {
      "@type": "AdvanceServiceDeliveryHoursSpecification",
      "deliveryLeadTime": {
        "@type": "QuantitativeValue",
        "value": "60",
        "unitCode": "MIN"
      },
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "T12:00:00", // Advance ordering begins at noon
      "closes": "T23:59:59", // Advance ordering ends at midnight
      "validFrom": "2017-01-01T00:00:00-07:00",
      "validThrough": "2018-12-31T23:59:59-07:00"
    },
    {
      "@type": "ServiceDeliveryHoursSpecification",
      "deliveryLeadTime": {
        "@type": "QuantitativeValue",
        "value": "60",
        "unitCode": "MIN"
      },
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "T10:00:00", // ASAP ordering begins at 10AM
      "closes": "T14:00:00", // ASAP ordering ends at 2PM
      "validFrom": "2017-01-01T00:00:00-07:00",
      "validThrough": "2018-12-31T23:59:59-07:00"
    }
  ]
},

範例 2

// Ordering times for Saturday and Sunday
{
  "@type": "OpeningHoursSpecification",
  "deliveryHours": [
    {
      // In this case advance orders are unavailable on Saturday and Sunday
      "@type": "ServiceDeliveryHoursSpecification",
      "deliveryLeadTime": {
        "@type": "QuantitativeValue",
        "value": "60",
        "unitCode": "MIN"
      },
      "dayOfWeek": [
        "Saturday",
        "Sunday"
      ],
      "opens": "T12:00:00", // ASAP orders start at noon
      "closes": "T23:59:59", // ASAP orders end at midnight
      "validFrom": "2017-01-01T00:00:00-07:00",
      "validThrough": "2018-12-31T23:59:59-07:00"
    }
  ]
}

範例 3

"hoursAvailable": {
  "@type": "OpeningHoursSpecification",
  "validFrom": "2016-02-01T00:00:00-07:00",
  "validThrough": "2016-03-01T00:00:00-07:00",
  "opens": "T08:00:00",  // Ordering begins at 8:00AM and ends at 6:00PM.
                         // ASAP and and advance orders are restricted to this
                         // time frame since the user won't be able to place
                         // orders outside of this window.
  "closes": "T18:00:00",
  "deliveryHours": {
    "@type": "ServiceDeliveryHoursSpecification",
    "deliveryLeadTime": {
      "@type": "QuantitativeValue",
      "value": "60",
      "unitCode": "MIN"
    }
  }
},

示例 4

// List hours available for 2017 and 2018
"hoursAvailable": [
  {
    "@type": "OpeningHoursSpecification",
    // Array containing advance order hours for each day
    "deliveryHours": [
      {
        // Open 10:00AM to 9:29:59PM on Mondays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Monday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 9:29:59PM on Tuesdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Tuesday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 9:29:59PM on Wednesdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Wednesday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 9:29:59PM on Thursdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "dayOfWeek": [
          "Thursday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 11:29:59PM on Fridays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Friday"
        ],
        "opens": "T10:00:00",
        "closes": "T23:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 11:29:59PM on Saturdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Saturday"
        ],
        "opens": "T10:00:00",
        "closes": "T23:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 11:00AM to 6:59:59PM on Sundays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Sunday"
        ],
        "opens": "T11:00:00",
        "closes": "T19:00:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      }
    ]
  }
],

PackagingDetails

新增 gs1 結構定義,以便使用以下類型:"@context": ["http://gs1.org/voc/", "http://schema.org"]。 此外,請將 FoodBeverageTobaccoProduct 加入 MenuItemMenuItemOption 的類型中。

下表說明 PackagingDetails 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律為「PackagingDetails」。
packagingRecyclingProcessType 文字 選用 gs1:PackagingRecyclingProcessTypeCode 的包裝回收程序類型。例如 http://gs1.org/voc/PackagingRecyclingProcessTypeCode-RECYCLABLEhttp://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE
hasReturnablePackageDeposit ReturnablePackageDepositDetails 選用 每個 gs1:ReturnablePackageDepositDetails 的退貨包裹存款詳細資料。舉例來說,瓶子和庫存可能是可退回的包裹。

以下範例顯示 PackagingDetails 類型的用法:

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/5",
  "name": "Sparkling Water",
  "description": "A 0.5l bottle of sparking water.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-sparkling-water",
    "price": "1.49",
    "priceCurrency": "USD"
  },
  "packaging": {
    "@type": "PackagingDetails",
    "packagingRecyclingProcessType" :
      "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE",
    "hasReturnablePackageDeposit": {
      "@type": "ReturnablePackageDepositDetails",
      "returnablePackageDepositAmount": {
        "@type": "http://gs1.org/voc/PriceSpecification",
        "http://gs1.org/voc/price": "0.05",
        "http://gs1.org/voc/priceCurrency": "USD"
      }
    }
  }
},

PaymentChargeSpecification

下表說明 PaymentChargeSpecification 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律為「PaymentChargeSpecification」。
@id 網址 選用 PaymentChargeSpecification 的 ID。
price 編號 必要 收取的總金額。例如「6.00」,不含貨幣符號。
priceCurrency 文字 必要 價格的 ISO 4217 貨幣代碼 (由 3 個英文字母組成)。例如「USD」。
eligibleTransactionVolume PriceSpecification 選用 交易量,以金額單位表示,適用此付款收費規格的購買交易量,例如表示購買量下限。
eligibleQuantity QuantitativeValue 選用 可扣款的有效訂購數量。舉例來說,您可以使用這項屬性要求訂單中的項目數量下限。
validFrom DateTime 選用 指定付款收費生效的日期和時間 (包括時區)。例如「2017-05-01T07:00:00-07:00」。詳情請參閱日期和時間格式
validThrough DateTime 選用 指定付款費用無效的日期和時間 (包括時區)。例如「2017-05-01T07:30:00-07:00」。validThrough 的時間不包含在內:例如,如果這個時間設為晚上 6 點,則時間最長為晚上 5:59:59。詳情請參閱日期和時間格式

以下範例顯示 PaymentChargeSpecification 元素:

範例

"priceSpecification": [{
  "@type": "PaymentChargeSpecification",
  "@id": "http://www.provider.com/paymentCharge/bar",
  "priceCurrency": "USD",
  "price": "6.00", // Charges $6 for processing fee
  "eligibleQuantity": {
    "@type": "QuantitativeValue",
    "minValue": 2 // Minimum of two items required
  }
}]

除了 "@type": ["PaymentChargeSpecification"] 以外,您可以使用 UnitPriceSpecification ("@type": ["PaymentChargeSpecification", "UnitPriceSpecification"]) 擴充物件。這個擴充功能可提供額外兩個屬性,以百分比計算服務費。

資源 類型 必要性 說明
referenceQuantity QuantitativeValue 必要 適用特定價格的參考數量。例如,如果 referenceQuantity 的值為 10,且 unitCode 為「P1」,則代表訂單價值的 10%。目前僅支援 unitCode「P1」。
basePrice 編號 選用 referenceQuantity 以外的基本費用。例如,如果 referenceQuantity 為 10,unitCode 為「P1」,而 basePrice 為 5,則代表訂單價值 $5 + 10%。預設值為 0。

外帶費用示例

Google 可讓您使用 Service 實體的 Offer.PriceSpecification,預先向使用者指定各種費用。

請注意,我們目前僅支援一個 PaymentChargeSpecification。將所有類型的費用合併為單一 PaymentChargeSpecification

如果沒有手續費,則省略 Offer.PriceSpecification

  • 範例 1:服務費是購物車小計的 5%
  • 範例 2:服務費為 $5 美元
  • 範例 3:行李費用為 $0.1 美元,服務費為購物車小計的 5%
  • 範例 4:行李費用為 $0.1 美元,服務費為 $1 美元
  • 範例 5:服務費為 5%,必要小費為購物車小計的 10%

範例 1

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "5.00", // 5%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  }
]

範例 2

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification"],
    "priceCurrency": "USD",
    "price": "5.00"
  }
]

範例 3

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "5.00", // 5%
      "unitCode": "P1", // P1 == %
    },
    "priceCurrency": "USD",
    "basePrice": "0.10" // Bag fee $0.1
  }
]

示例 4

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification"],
    "priceCurrency": "USD",
    "price": "1.10" //$1 + $0.1
  }
]

範例 5

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "15.00", // 5% + 10%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  }
]

地點

下表說明 Place 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律為「地點」。
address PostalAddress 必要 地點的地址。

以下範例顯示 Place 元素:

範例

{
  "@type": "Place", // area2
  "address": {
    "@type": "PostalAddress",
    "postalCode": "94041",
    "addressCountry": "US"
  }
},

PostalAddress

下表說明 PostalAddress 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律為「PostalAddress」。
addressLocality 文字 必填* 縣市或鄉鎮。例如「San Francisco」。
addressRegion 文字 必填* 區域或州/省。例如「CA」。
postalCode 文字 必填* 郵遞區號。例如「94102」。
streetAddress 文字 選用 街道地址。例如「1600 Amphitheatre Pkwy」。
addressCountry 文字 必要 雙字母 ISO 3166-1 alpha-2 國家/地區代碼 。例如「US」。

傳送供應商可以列出這些屬性,指定提供服務的 Service.areaServed

Restaurant.address 中使用時,PostalAddress 中列出的所有屬性為必要屬性。

以下範例顯示 PostalAddress 元素:

範例

"address": {
  "@type": "PostalAddress",
  "streetAddress": "12345 Bar Avenue",
  "addressLocality": "San Francisco",
  "addressRegion": "CA",
  "postalCode": "94124",
  "addressCountry": "US"
},

PriceSpecification

下表說明 PriceSpecification 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「PriceSpecification」。
@id 網址 選用 PriceSpecification 的 ID。
minPrice 編號 選用 如果價格範圍是特定範圍,則最低價格。
maxPrice 編號 選用 如果價格是特定範圍,則最高的價格。
priceCurrency 文字 必要 價格的 ISO 4217 貨幣代碼 (由 3 個英文字母組成)。例如「USD」。
eligibleQuantity QuantitativeValue 選用 價格規格有效的訂購數量。舉例來說,價格可能是每英鎊 $2 美元,或以金額表示 2 項商品。

以下範例顯示 PriceSpecification 元素:

範例 1

"eligibleTransactionVolume": {
  "@type": "PriceSpecification",
  "minPrice": "20.00", // Minimum order price for delivery is $20
  "priceCurrency": "USD"
}

PropertyValue

用於說明 MenuItemOption 選項的屬性值組合。

下表列出 PropertyValue 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「PropertyValue」。
name 文字 必要

選項的名稱或類型。

以下是在 MenuItem 中使用的有效名稱:

  • 「SIZE」:MenuItem的大小。例如小、中或大。
  • 「OPTION」:除了尺寸外的任何變化,像是沙拉或三明治的餐點。如果無法區分「SIZE」和「OPTION」,請使用「OPTION」。

AddOnMenuItem 中使用的有效名稱:

  • 「APPLICABLE_ITEM_OPTION」:外掛程式選項僅適用於搭配 MenuItem 與個別「SIZE/OPTION」搭配使用的情況。
  • 「PIZZA_SIDE」:這個外掛程式獨有披薩,只對部分或全套披薩有效,例如左側、右側或整份披薩的蘑菇裝飾。
  • 「SIZE」:指定加購尺寸的選項 (例如用大薯條當做套餐的加購內容)。
  • 「OPTION」:除了尺寸外的任何變化,如果無法區分「SIZE」和「OPTION」,請使用「OPTION」。
value 文字 必要

選項的值。這些值可以是任何字串,並以現狀顯示。以下是有效的值:

  • 「PIZZA_SIDE」:對應的值必須為「PIZZA_SIDE_LEFT」、「PIZZA_SIDE_RIGHT」或「PIZZA_SIDE_WHOLE」來當做披薩。
  • 「APPLICABLE_ITEM_OPTION」:這個值應顯示在父項 MenuItem 的 menuItemOptions 的對應「OPTION/SIZE」選項中。

QuantitativeValue

下表說明 QuantitativeValue 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「QuantitativeValue」。
value 編號 選用 量化值或屬性值節點的值。
unitCode 文字或網址 選用

UN/CEFACT 通用程式碼或網址形式的測量單位。

UN/CEFACT 通用程式碼以外的代碼可於前面加上半形冒號。

maxValue 編號 選用 某些特徵或屬性的上限值。
minValue 編號 選用 某些特性或屬性的最小值。

以下範例說明 QuantitativeValue 類型的用法:

範例 1

"deliveryLeadTime": {
  "@type": "QuantitativeValue",
  "value": "60",
  "unitCode": "MIN"
}

範例 2

"menuAddOn": {
  "@type": "AddOnMenuSection",
  "name": "Cheese",
  "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection
  "eligibleQuantity":
    "@type": "QuantitativeValue",
    "minValue": 0,
    "maxValue": 2 // Maximum of 2 cheeses are allowed
  }
}

範例 3

"priceSpecification": [
  {
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/defaultdeliveryfee/foo",
    "price": "10.0",
    "priceCurrency": "USD",
    "eligibleQuantity": {
      "@type": "QuantitativeValue",
      "minValue": 3  // Minimum of 3 items required for delivery
    }
  },
  {
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/deliveryfee/foo/1",
    "price": "20.0",
    "priceCurrency": "USD",
    "validFrom":"T18:00:00", // Valid from 6:00PM
    "validThrough":"T22:00:00", // Valid to 9:59:59PM
    "eligibleQuantity": {
      "@type": "QuantitativeValue",
      "minValue": 3  // Minimum of 3 items required for delivery
    }
  }
]

餐廳

下表列出 Restaurant 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這個項目一律為「餐廳」。
@id 網址 必要 餐廳或外送服務供應商的專屬 ID。例如,「http://www.provider.com/326」,其中「326」是餐廳的專屬 ID。
name 文字 必要 可在訂購程序中識別 Restaurant 的文字。
url 網址 必要 您在網域中代表餐廳的網址。例如「http://www.provider.com/somerestaurant」。
sameAs 網址 選用 餐廳的官方網站。例如「http://www.somerestaurant.com」。
email 文字 選用 餐廳的聯絡電子郵件。
description 文字 選用 餐廳說明。
telephone 文字 必要

電話號碼,格式如下:

"[+][country_code][phone_#_with_area_code]"

例如「+16501234567」。

priceRange 文字 選用 提供各種定價方案,舉例來說,"$$" ($-Inexpensive, $$-中度、 $$$-Expensive, $$$$-Very Expensive).
logo URL Optional Logo of the restaurant in PNG, JPG, or GIF format. For example, "http://www.somerestaurant.com/logo.png".
image URL Optional Image of the restaurant.
servesCuisine Array of Text Optional Food types that are served at the restaurant. For example, ["sushi","Asian fusion"].
address PostalAddress Required* Address of the restaurant.
geo GeoCoordinates Optional* Geographic coordinates of the restaurant.
suitableForDiet Array of RestrictedDiet Optional Dietary restrictions this restaurant accommodates (like kosher, vegan, or gluten-free diets). It is an enumerated list.
aggregateRating AggregateRating Optional Overall rating, based on a collection of reviews or ratings of the restaurant.
additionalProperty Array of name value string pairs Optional

A restaurant imprint is a section of additional information about the restaurant, such as legal name, legal address, and registration number. This information can be formatted using "\n".

For example "additionalProperty": [{"name": "imprint", "value": "first row\nsecondrow\n"},]

The following examples show the usage of the Restaurant type:

Example 1

{
  "@type": "Restaurant",
  "@id": "http://www.provider.com/somerestaurant",
  "url": "www.provider.com/somerestaurant",
  "name": "Some Restaurant",
  "sameAs": "http://www.somerestaurant.com",
  "image": "http://www.somerestaurant.com/image-of-some-restaurant.jpg",
  "description": "This is the Some Restaurant located on 345 Spear St. San Francisco, 94105 CA. It serves Indian-Mexican fusion cuisine",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94105",
    "streetAddress": "345 Spear St",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "37.391115",
    "longitude": "-122.081099"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.4",
    "reviewCount": "89"
  },
  "priceRange": "$$",
  "telephone": "+16501234567", // 國家/地區代碼 (+1) 為必填
  "servesCuisine": [
    "印度與墨西哥融合"
  ]
},
  
  

範例 2

{
  "@type": "Restaurant",
  "@id": "http://www.example.com/threebrotherstacos",
  "name": "Three Brothers Tacos",
  "address": {
        "@type": "PostalAddress",
        "addressLocality": "Mountain View",
        "addressRegion": "CA",
        "postalCode": "94041",
        "streetAddress": "123 Foo St",
        "addressCountry": "US"
  },
  "additionalProperty": [
    {"name": "imprint", "value": "Three Brothers Tacos\n123 FooSt\nMountain View\nCA 94041, United States\nemail: contact@threebrotherstacos.com\n\nCommercial Register: 123456789"}
  ]
}

如需更多 Restaurant 實體的範例,請參閱餐廳與菜單動態饋給範例

ReturnablePackageDepositDetails

如要使用這個類型,請新增 gs1 內容:"@context":

["http://gs1.org/voc/", "http://schema.org"]

接著,將 FoodBeverageTobaccoProduct 新增至適當的 MenuItemMenuItemOption 類型。

下表說明 ReturnablePackageDepositDetails 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 這一律為「ReturnablePackageDepositDetails」。
returnablePackageDepositAmount gs1:PriceSpecification 選用 這項商品依據 gs1:PriceSpecification 的金額。例如,每消費 $0.25 美元。

以下範例顯示 ReturnablePackageDepositDetails 類型的用法:

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/5",
  "name": "Sparkling Water",
  "description": "A 0.5l bottle of sparking water.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-sparkling-water",
    "price": "1.49",
    "priceCurrency": "USD"
  },
  "packaging": {
    "@type": "PackagingDetails",
    "packagingRecyclingProcessType" :
      "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE",
    "hasReturnablePackageDeposit": {
      "@type": "ReturnablePackageDepositDetails",
      "returnablePackageDepositAmount": {
        "@type": "http://gs1.org/voc/PriceSpecification",
        "http://gs1.org/voc/price": "0.05",
        "http://gs1.org/voc/priceCurrency": "USD"
      }
    }
  }
},

服務

說明如何由外送機構將訂購端對端動作服務傳送至某個地理位置。

下表說明 Service 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要

動態饋給類型。

  • Service:請針對所有有效的服務動態饋給使用這種類型。
  • DisabledService:除非您因為發生未預期的事件而停用服務實體,而且不知道何時重新建立服務,否則才需要使用這種類型。
@id 網址 必要 執行要求的 ID。例如「http://www.provider.com/service/1」。
description 文字 選用 商品的說明。
serviceType 文字 必要 提供的服務類型。可能的值為「DELIVERY」或「TAKEOUT」。
provider Restaurant 必要 餐廳專屬 ID 的參照。例如「http://www.provider.com/somerestaurant」。
areaServed GeoShapePlaceGeoCircle 陣列 須符合條件 提供服務的地理區域。根據預設,此為選用欄位;如果 serviceType 為「DELIVERY」,則為必要欄位。
hoursAvailable OpeningHoursSpecification 的陣列 必要 這項服務的開放時間。
specialOpeningHoursSpecification OpeningHoursSpecificationServiceDeliveryHoursSpecificationAdvanceServiceDeliveryHoursSpecification 陣列 選用

覆寫較一般 OpeningHoursSpecification 或執行要求時間的時間。一般來說,您可以使用這個欄位來定義假日及其他類型的暫停營業或營業時間異動。

請使用 validFromvalidThrough 屬性定義特殊日期範圍。指定這些屬性時,必須提供時間和時區。

offers Offer 的陣列 須符合條件

特定餐廳的外送服務詳細資料。根據預設,此為選用欄位;如果 serviceType 為「DELIVERY」,則為必要欄位。

Offer.priceSpecification 是「服務」中的選用屬性。這裡未使用其他 Offer 屬性。

hasOfferCatalog [Menu、OfferCatalog] 必要

指定這項服務的選單。您可以為各項服務提供不同的選單,例如外帶、外送和外燴。

您必須為類型指定 MenuOfferCatalog。例如:

"hasOfferCatalog": {
"@type": ["Menu", "OfferCatalog"],
"@id": "https://www.provider.com/restaurant/menu/1"
}
additionalProperty 「{name, value}」的陣列 選用

選用的服務設定資訊。項目應為一個物件,且索引鍵 name 對應至選填欄位名稱。鍵 value 是欄位與內容相關的值。

如要進一步瞭解特定名稱和值,請參閱 ServingConfig 參考資料。

"additionalProperty": [{
  "name": "disableOrderInstructions",
  "value": false
}, {
  "name": "disableMenuItemSpecialInstructions",
  "value": false
}, {
  "name": "disableTipWidget",
  "value": false
}, {
  "name": "disablePromoWidget",
  "value": false
}, {
  "name": "menuItemSpecialInstructionsMaxLength",
  "value": 256
}, {
  "name": "orderInstructionsMaxLength",
  "value": 256
}]
potentialAction 網址 選用

此屬性含有外送/外帶服務的網址,在從端對端餐點訂購體驗遷移至重新導向流程時會使用這個網址。例如:"potentialAction": { "url": "https://fopatestagent.com/ordering/restaurant-1/delivery" }

以下範例顯示 Service 類型的用法:

範例

{
  "@type": "Service",
  "@id": "http://www.provider.com/service/1",
  "serviceType": "DELIVERY",
  "provider": {
    "@type": "Restaurant",
    "@id": "http://www.provider.com/threebrotherstacos"
  },
  "potentialAction": {
    "url": "https://foprovider.com/ordering/restaurant-1/delivery"
  },
  "hoursAvailable": [
    // Ordering times for Monday through Friday
    {
      "@type": "OpeningHoursSpecification",
      "deliveryHours": [
        {
          "@type": "AdvanceServiceDeliveryHoursSpecification",
          "deliveryLeadTime": {
            "@type": "QuantitativeValue",
            "value": "60",
            "unitCode": "MIN"
          },
          "dayOfWeek": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "opens": "T12:00:00", // Advance ordering begins at noon
          "closes": "T23:59:59", // Advance ordering ends at midnight
          "validFrom": "2017-01-01T00:00:00-07:00",
          "validThrough": "2018-12-31T23:59:59-07:00"
        },
        {
          "@type": "ServiceDeliveryHoursSpecification",
          "deliveryLeadTime": {
            "@type": "QuantitativeValue",
            "value": "60",
            "unitCode": "MIN"
          },
          "dayOfWeek": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "opens": "T10:00:00", // ASAP ordering begins at 10AM
          "closes": "T14:00:00", // ASAP ordering ends at 2PM
          "validFrom": "2017-01-01T00:00:00-07:00",
          "validThrough": "2018-12-31T23:59:59-07:00"
        }
      ]
    },
    // Ordering times for Saturday and Sunday
    {
      "@type": "OpeningHoursSpecification",
      "deliveryHours": [
        {
          // In this case advance orders are unavailable on Saturday and Sunday
          "@type": "ServiceDeliveryHoursSpecification",
          "deliveryLeadTime": {
            "@type": "QuantitativeValue",
            "value": "60",
            "unitCode": "MIN"
          },
          "dayOfWeek": [
            "Saturday",
            "Sunday"
          ],
          "opens": "T12:00:00", // ASAP orders start at noon
          "closes": "T23:59:59", // ASAP orders end at midnight
          "validFrom": "2017-01-01T00:00:00-07:00",
          "validThrough": "2018-12-31T23:59:59-07:00"
        }
      ]
    }
  ],
  "hasOfferCatalog": {
    "@type": ["Menu", "OfferCatalog"],
    "@id": "https://www.provider.com/menu/1"
  },
  "areaServed": [{
      "@type": "GeoCircle", // area1
      "geoMidpoint": {
        "@type": "GeoCoordinates",
        "latitude": "42.362757",
        "longitude": "-71.087109"
      },
      "geoRadius": "10000"
    },
    {
      "@type": "Place", // area2
      "address": {
        "@type": "PostalAddress",
        "postalCode": "94041",
        "addressCountry": "US"
      }
    },
    {
      "@type": "GeoShape", // area3
      // Specify latitude first (i.e., lat long lat long ...)
      "polygon": "37.418128 -122.098167 37.382755 -122.118968 37.368551 -122.047978 37.400949 -122.048106 37.418128 -122.098167"
    },
    {
      "@type": "GeoShape", // area4
      // Specify latitude first (i.e., lat long lat long ...)
      "polygon": "37.806000 -122.425592 37.775849 -122.419043 37.795547 -122.394046 37.808747 -122.412619"
    },
    {
      "@type": "GeoCircle", // area5
      "geoMidpoint": {
        "@type": "GeoCoordinates",
        "latitude": "37.7392607",
        "longitude": "-122.3895522"
      },
      "geoRadius": "4505"
    }
  ],
  "offers": {
    "@type": "Offer",
    "priceSpecification": [{
        "@type": "DeliveryChargeSpecification",
        "@id": "http://www.provider.com/threebrotherstacos/deliveryfee/1",
        "price": "8.00", // Charges $8 for area5
        "priceCurrency": "USD",
        "eligibleTransactionVolume": {
          "@type": "PriceSpecification",
          "minPrice": "20.00",
          "priceCurrency": "USD"
        },
        "eligibleRegion": [ // area5
          {
            "@type": "GeoCircle",
            "geoMidpoint": {
              "@type": "GeoCoordinates",
              "latitude": "37.7392607",
              "longitude": "-122.3895522"
            },
            "geoRadius": "4505"
          }
        ]
      },
      {
        "@type": "DeliveryChargeSpecification",
        "@id": "http://www.provider.com/threebrotherstacos/defaultdeliveryfee",
        "price": "6.00", // Charges $6 when delivered from Foo restaurant to area1, area2, area3 and area4 (Default charge)
        "priceCurrency": "USD",
        "eligibleTransactionVolume": {
          "@type": "PriceSpecification",
          "minPrice": "20.00", // Minimum order price for delivery is $20
          "priceCurrency": "USD"
        }
      }
    ]
  }
},

如需更多服務實體的範例,請參閱服務動態饋給範例

ServiceDeliveryHoursSpecification

代表使用者排定盡快送貨和外帶的出貨時間。

通常,opens 的值小於 closes 的值。使用 openscloses 屬性時需符合下列規範:

  • opensclosesServiceDeliveryHoursSpecification 的選用屬性,但我們強烈建議加入。
  • 時間必須以服務的當地時間為準。請勿在 openscloses 值中加入時區。如果指定時區,Google 就會忽略時區資訊。
  • 如果未明確指定 openscloses,我們會假設 ASAP 訂單隨時都可供訂購。
  • 如果 openscloses 相同,我們會假設無法使用 ASAP 訂購。
  • 如果 opens 大於 closes,系統會將打烊時間解讀為隔天。舉例來說,如果營業時間設為 1 月 1 日下午 5 點,打烊時間為凌晨 2 點,系統就會將餐廳解讀為 1 月 2 日凌晨 2 點。

下表說明 ServiceDeliveryHoursSpecification 類型的屬性:

屬性 類型 必要性 說明
@type 文字 必要 一律為「ServiceDeliveryHoursSpecification」。
validFrom DateTime 選用

使用者能盡快履行訂單的日期與時間 (包括時區)。例如「2017-05-01T07:00:00-07:00」。如未設定這項屬性,系統會假設屬性每天都有效。

詳情請參閱日期和時間格式

validThrough DateTime 選用

使用者在該日期及時間 (包括時區) 之後,系統無法履行「SAP」訂單。例如「2017-05-01T07:00:00-07:00」。如未設定這項屬性,系統會假設屬性每天都有效。

validThrough 的時間有限。舉例來說,如果這個時間設為晚上 6 點,則時間最長為晚上 5:59:59。

詳情請參閱日期和時間格式

opens Time 選用

到貨服務的使用者,也就是他們必須盡快完成訂單的出貨時間。例如「T10:30:00」。

時間必須以服務的當地時間為準。請勿在 opens 值中加入時區。如果指定時區,Google 會忽略這項資訊。

詳情請參閱日期和時間格式

closes Time 選用

使用者 ASAP 訂單的運送時間服務不再提供。例如「T23:59:59」。

closes 的時間有限。因此,如果您將這個 ServiceDeliveryHoursSpecification 的開始/結束營業時間設為上午 10 點和下午 4 點,則最後一筆訂單的時間為下午 3:59:59。

時間必須以服務的當地時間為準。請勿在 closes 值中加入時區。如果指定時區,Google 會忽略這項資訊。

詳情請參閱日期和時間格式

dayOfWeek DayOfWeek 的陣列 選用

使用者 ASAP 訂單可使用這項服務的星期幾。 以下為有效值:

  • 「星期一」
  • 「星期二」
  • 「星期三」
  • 「星期四」
  • 「週五」
  • 「週六」
  • 「週日」

如果您沒有指定任何星期幾,則 ServiceDeliveryHoursSpecification 會套用至所有天數。

deliveryLeadTime QuantitativeValue 選用 下單後的預估送達時間 (以分鐘為單位)。強烈建議您設定這個屬性。將 QuantitativeValuevalue 欄位設為分鐘數,並將 unitCode 設為「MIN」。

以下範例顯示 ServiceDeliveryHoursSpecification 元素:

範例 1

{
  "@type": "ServiceDeliveryHoursSpecification",
  "opens": "T08:00:00",
  "closes": "T17:00:00",
  "deliveryLeadTime": {
    "@type": "QuantitativeValue",
    "value": "60", // If no exact deliveryLeadTime, put a maximum time
    "unitCode": "MIN"
  }
},

範例 2

{
  "@type": "ServiceDeliveryHoursSpecification",
  "opens": "T08:00:00",
  "closes": "T17:00:00",
  "deliveryLeadTime": {
    "@type": "QuantitativeValue",
    "minValue": "30",
    "maxValue": "50",
    "unitCode": "MIN"
  }
}
    

列舉

RestrictedDiet

RestrictedDiet 類型具有下列可能的值:

  • http://schema.org/DiabeticDiet
  • http://schema.org/GlutenFreeDiet
  • http://schema.org/HalalDiet
  • http://schema.org/HinduDiet
  • http://schema.org/KosherDiet
  • http://schema.org/LowCalorieDiet
  • http://schema.org/LowFatDiet
  • http://schema.org/LowLactoseDiet
  • http://schema.org/LowSaltDiet
  • http://schema.org/VeganDiet
  • http://schema.org/VegetarianDiet