v1 商品目录架构

食品目录 Feed 基于 schema.org DataFeed 实体。食品目录 Feed 包含餐厅语言区域详细信息(例如餐厅地址、菜单和营业地点),以及餐厅的服务详细信息(例如送餐费、送餐区域和下文中指定的其他项目)。

DataFeed 包含一组元素,每个元素都表示一个使用 schema.org 词汇表示的项。您可以使用 DataFeed 类型以 JSON-LD 格式发布所有结构化数据。

如需了解如何使用此规范构建 Feed,请参阅商品目录集成概览

DateTime 和时间格式

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 不需要提供该字段。
  • 时间必须以相应餐厅或服务的当地时间指定。

信封

任何食品目录 Feed 的起始代码都应包含“封装容器”部分。

“封装容器”是每个 Feed 的顶级结构,必须是具有以下属性的 DataFeed

属性 类型 必要性 说明
@context 网址 必填 使用的上下文;通常为“http://schema.googleapis.com”。
@type 文本 必填 此值始终为“DataFeed”。
dateModified DateTime 必填

数据 Feed 的上次修改 DateTime,采用 ISO 8601 格式。

此 Feed 中商品的修改日期和时间(采用 ISO_OFFSET_DATE_TIME 格式)。如果没有此字段,则假定更新时间为 Google 服务器收到推送消息(或抓取发生)的时间。

如果您同时使用推送和抓取,我们强烈建议您实现此操作。此时间戳应指定时区和毫秒级精度;例如“2016-12-28T06:30:00:123-07:00”。

在批量 Feed 中,实体版本控制是通过 Feed 封装容器中的 dateModified 字段确定的。

dataFeedElement MenuRestaurantService 的数组 必填 此 Feed 中的一个或多个项。如需了解详情,请参阅下文。

以下示例展示了信封:

示例

{
  "@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 网址 必填 插件菜单项的唯一标识符。
name 文本 必填 用户浏览菜单时用于标识 AddOnMenuItem 的文本。
description 文本 可选 插件菜单项的说明。
image 网址 可选

符合以下准则的插件菜单项图片:

  • 宽高比为 3:2
  • >
  • 分辨率至少为 600x400 像素,72 dpi
  • >
  • 建议的分辨率为 1400x960 像素,72 dpi
offers Offer 的数组 必填*

提供此 AddOnMenuItem 的一项或多项优惠。

说明此 AddOnMenuItem 的推出时间和价格。 在特定时间段内,只有一项优惠有效。如果价格或空房情况可能会因时间而异,您可以设置多个有效的房价。如果附加项或商品因基本属性或附加项商品本身的变体(例如作为附加项的小薯条、中薯条和大薯条)而有所不同,请使用 hasMenuItemOption 属性。

Offer.eligibleQuantity 的默认值为 0(最小值),1(最大值)。

AddOnMenuItem 中使用了以下 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 的数组 可选 菜肴符合所述的饮食限制(例如“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 网址 必填 菜单部分的唯一标识符。
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

AddOnMenuSectionhasMenuItem 中必须存在 AddOnMenuItem 对象。

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

“芝士三明治”菜单项包含“奶酪选项”AddOnMenuSection,默认情况下,系统会预选“瑞士奶酪”和“马苏里拉奶酪”。

{
  "@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 属性:

  • openscloses 属性对 AdvanceServiceDeliveryHoursSpecification 来说是可选的,但我们强烈建议您添加这些属性。
  • 时间必须以服务的当地时间指定。请勿在 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> 是排他的,因此如果将其设为晚上 9:00,而 serviceTimeInterval 为 15 分钟,则表示最后一个可用时间空档的开始时间为晚上 8:45。

服务时间必须以当地时间指定。请勿在 closes 值中添加时区。如果指定了时区,Google 会忽略此信息。

如需了解详情,请参阅日期时间和时间格式

dayOfWeek DayOfWeek 的数组 可选

可提前指定配送时间的星期几。有效值包括:

  • “Monday”
  • “Tuesday”
  • “Wednesday”
  • “Thursday”
  • “Friday”
  • “Saturday”
  • “Sunday”

如果您未指定任何日期,则 AdvanceServiceDeliveryHoursSpecification 会应用于所有日期。

serviceTimeInterval Duration 必填

两次连续服务时间之间的间隔。

例如:如果 openscloses 分别为上午 8 点和晚上 8 点,serviceTimeInterval 为 15 分钟,则用户可以选择上午 8 点、上午 8:15、上午 8:30、上午 8:45 等时间,一直到晚上 8 点。

Duration 必须指定为 ISO 8601 时长。例如:"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 网址 可选 配送费规范的标识符。
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 允许您使用服务实体的 Offer.PriceSpecification 向用户预先指定各种费用。

请注意,端到端订购目前仅支持一个 DeliveryChargeSpecification。将所有类型的费用合并到单个 DeliveryChargeSpecification 中。

如需了解如何根据区域、距离和订单金额指定运费,请参阅服务 Feed 示例

如果没有费用,则省略 Offer.PriceSpecification

  • 示例 1:运费为购物车总金额的 5%
  • 示例 2:配送费为 5 美元
  • 示例 3:运费为 5 美元 + 购物车小计的 10%
  • 示例 4:运费为 5 美元,购物袋费为 0.1 美元
  • 示例 5:运费为 5%,便利费为购物车小计的 2%
  • 示例 6:运费为 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 文本 必填 此值始终为“Menu”。
@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 实体的示例,请参阅餐厅和菜单 Feed 示例

下表列出了 MenuDisclaimer 类型的属性:

属性 类型 必要性 说明
@type 文本 必填 此值始终为“MenuDisclaimer”。
@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 网址 必填 菜单项的唯一标识符。
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 实体的示例,请参阅餐厅和菜单 Feed 示例

用于表示用户在选择菜肴或套餐时需要做出的选择的选项。用户必须选择一个选项,否则订单会被视为无效。例如,在披萨的情况下,选择小、中或大。

如需查看 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 网址 必填 菜单部分的唯一标识符。
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 实体的示例,请参阅餐厅和菜单 Feed 示例

NutritionInformation

下表介绍了 NutritionInformation 类型的属性。度量单位区分大小写。例如,“Cal”是可接受的,但“cal”不可接受。

属性 类型 必要性 说明
@type 文本 必填 此属性始终为“NutritionInformation”。
description 文本 可选 营养信息(采用自由文本格式)。例如“含防腐剂”。
calories 文本 可选

卡路里数(以 Cal、kcal 或 kJ 为单位),使用以下格式:

number Cal_kcal_OR_kJ

例如,“240 卡路里”。

carbohydrateContent 文本 可选

碳水化合物的量,通常以克为单位,采用以下格式:

number g_OR_mg

例如“7 克”。

cholesterolContent 文本 可选

胆固醇含量(通常以毫克为单位),采用以下格式:

number g_OR_mg

例如“12 mg”。

fatContent 文本 可选

脂肪含量(通常以克为单位),采用以下格式:

number g_OR_mg

例如“42 克”。

fiberContent 文本 可选

纤维的克数或毫克数,采用以下格式:

number g_OR_mg
proteinContent 文本 可选

蛋白质的克数或毫克数,采用以下格式:

number g_OR_mg
saturatedFatContent 文本 可选

饱和脂肪的克数或毫克数,采用以下格式:

number g_OR_mg
servingSize 文本 可选 食用份量(以体积或质量的数量表示),单位为毫升 (mL)、升 (L)、克 (g) 或千克 (kg)。
sodiumContent 文本 可选

钠的毫克数或克数,采用以下格式:

number g_OR_mg
sugarContent 文本 可选

糖的克数或毫克数,采用以下格式:

number g_OR_mg
transFatContent 文本 可选

反式脂肪的克数或毫克数,采用以下格式:

number g_OR_mg
unsaturatedFatContent 文本 可选

不饱和脂肪的量,通常以克为单位,采用以下格式:

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 文本 必填 此值始终为“Offer”。
sku 文本 基于条件

商品的唯一标识符。可以是 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 数组 可选

此商品提供的周几。有效值包括:

  • “Monday”
  • “Tuesday”
  • “Wednesday”
  • “Thursday”
  • “Friday”
  • “Saturday”
  • “Sunday”

如果您在每周不同天有不同的空闲时间,请使用多个 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 DeliveryChargeSpecification 的数组或 PaymentChargeSpecification 的数组 可选

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 网址 已弃用 商品的唯一标识符。自 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 属性是可选的,但强烈建议使用这些属性来指明何时可以订购。定义营业时间的最佳实践是添加一个 deliveryHours 数组,其中包含具有 openscloses 属性的 ServiceDeliveryHoursSpecification。然后,如果您想提供更有限的预订时间范围,可以在 deliveryHours 中添加具有自己的 openscloses 属性的 AdvanceServiceDeliveryHoursSpecification 对象。
  • 如果未明确指定 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 的标识符。
dayOfWeek DayOfWeek 数组 可选

这些营业时间适用的一周中的日期。可接受的值包括“Monday”“Tuesday”“Wednesday”“Thursday”“Friday”“Saturday”和“Sunday”。例如:

"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 表示用户可以下单的开始日期。

如果您的 Feed 中未指定此属性,Google 会假定餐厅或服务每天营业。

除了日期之外,值的时间和时区部分也是必需的。

对于时区,请使用餐厅或服务的时区。

如需了解详情,请参阅日期时间和时间格式

validThrough DateTime 可选

Restaurant 中使用时,表示 openscloses 指定的营业时间在该日期之后无效。

例如,如果指定的时段适用于 2017 年全年,您可以将 validFrom 设置为“2017-01-01T00:00:00-07:00”,并将 validThrough 设置为“2017-12-31T23:59:59-07:00”。

Service 规范中使用时,validThrough 表示用户无法再下单的结束日期。

如果您的 Feed 中未指定此属性,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 的标识符。
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 允许您使用服务实体的 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 必填 地点的地址。

以下示例展示了地点元素:

示例

{
  "@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 文本 必填 由 2 个字母组成的 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 的标识符。
minPrice 数字 可选 如果价格是范围,则为最低价格。
maxPrice 数字 可选 如果价格是范围,则为最高价格。
priceCurrency 文本 必填 价格的 ISO 4217 货币代码,由 3 个字母组成。例如,“USD”。
eligibleQuantity QuantitativeValue 可选 价格规范适用的订购数量。 例如,价格可能是每磅 2 美元,或 2 件商品 1 美元。

以下示例展示了 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”:此选项适用于在具有相应“SIZE/OPTION”的 MenuItem 中使用时才适用。
  • “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 Text 或 URL 可选

计量单位(作为 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 网址 必填 餐厅或送餐服务提供商的唯一标识符。例如,“http://www.provider.com/326”,其中“326”是相应餐厅的唯一标识符。
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, $$-Moderate, $$$-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", // Country code (+1) is required
  "servesCuisine": [
    "Indian-Mexican Fusion"
  ]
},
  
  

示例 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 实体的示例,请参阅餐厅和菜单 Feed 示例

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 文本 必填

Feed 类型。

  • Service:对于所有有效的服务 Feed,请使用此类型。
  • DisabledService:仅当您因意外事件而必须停用服务实体,并且不知道服务何时会重新建立时,才使用此类型。
@id 网址 必填 履单服务的标识符。例如,“http://www.provider.com/service/1”。
description 文本 可选 商品的说明。
serviceType 文本 必填 提供的服务类型。可能的值为“DELIVERY”或“TAKEOUT”。
provider Restaurant 必填 对餐厅唯一标识符的引用。例如,“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"
        }
      }
    ]
  }
},

如需查看更多服务实体示例,请参阅服务 Feed 示例

ServiceDeliveryHoursSpecification

表示用户可用于安排外卖和外带订单的 ASAP 服务时间。

通常,opens 的值小于 closes 的值。以下准则适用于使用 openscloses 属性:

  • openscloses 属性对 ServiceDeliveryHoursSpecification 而言是可选的,但我们强烈建议您添加这些属性。
  • 时间必须以服务的当地时间指定。请勿在 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 可选

用户的“尽快送达”订单无法在该日期和时间(包括时区)之后送达。例如,“2017-05-01T07:00:00-07:00”。如果未设置此属性,则假定其每天都有效。

validThrough 的时间不含此时间。例如,如果将该时间设置为下午 6 点,则该时间的有效期为下午 5:59:59。

如需了解详情,请参阅日期时间和时间格式

opens Time 可选

开始为用户的“尽快送达”订单提供配送服务的时间。例如“T10:30:00”。

时间必须以服务的当地时间指定。请勿在 opens 值中添加时区。如果指定了时区,Google 会忽略此信息。

如需了解详情,请参阅日期时间和时间格式

closes Time 可选

用户的“尽快送达”订单的送货时间不再提供。例如“T23:59:59”。

closes 的时间不含此时间。因此,如果您将此 ServiceDeliveryHoursSpecification 的开启/关闭时间设置为上午 10 点和下午 4 点,则最后一个订单将是下午 3:59:59。

时间必须以服务的当地时间指定。请勿在 closes 值中添加时区。如果指定了时区,Google 会忽略此信息。

如需了解详情,请参阅日期时间和时间格式

dayOfWeek DayOfWeek 的数组 可选

此服务适用于用户的“尽快送达”订单的一周工作日。 以下是有效值:

  • “Monday”
  • “Tuesday”
  • “Wednesday”
  • “Thursday”
  • “Friday”
  • “Saturday”
  • “Sunday”

如果您未指定任何日期,则 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