XooCode(){

MenuItem

MenuItem is an Intangible for an individual item on a food or drink menu. It adds 4 direct properties:

  • menuAddOn (MenuItem or MenuSection): optional add-ons (a side, an upgrade).
  • nutrition (NutritionInformation): calories and macro/micronutrients per serving.
  • offers (Offer or Demand): price with currency.
  • suitableForDiet (RestrictedDiet): vegan, gluten-free, etc.

MenuItem is where restaurant structured data gets its mileage: every item with a price and a diet signal is filterable by Google and by AI menu assistants.

Full example of schema.org/MenuItem json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/MenuItem
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "MenuItem",
  "name": "Pan-seared Pocono trout",
  "description": "Whole rainbow trout from the Pocono watershed, pan-seared with brown-butter almondine. Served with roasted fingerling potatoes and seasonal green beans.",
  "image": "https://dunmoregrill.example/images/trout.jpg",
  "offers": { "@type": "Offer", "price": "26.00", "priceCurrency": "USD" },
  "suitableForDiet": ["https://schema.org/GlutenFreeDiet", "https://schema.org/LowCalorieDiet"],
  "nutrition": { "@type": "NutritionInformation", "servingSize": "1 plate (380 g)", "calories": "520 calories", "proteinContent": "42 g", "fatContent": "18 g" },
  "menuAddOn": [
    { "@type": "MenuItem", "name": "Add a side salad", "offers": { "@type": "Offer", "price": "6.00", "priceCurrency": "USD" } },
    { "@type": "MenuItem", "name": "Upgrade to truffle potatoes", "offers": { "@type": "Offer", "price": "4.00", "priceCurrency": "USD" } }
  ]
}
</script>

Minimal valid version

The smallest markup that still produces a valid MenuItem entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/MenuItem (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "MenuItem",
  "name": "Pan-seared Pocono trout",
  "offers": { "@type": "Offer", "price": "26.00", "priceCurrency": "USD" }
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

  • Restaurant menu (via containing Menu)primary
    Google docs

Common MenuItem mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Price as a plain text field

    Wrong
    MenuItem with no offers, price in description
    Right
    offers with typed Offer, price, and priceCurrency

    Menu carousels filter and display by structured price; prose prices are invisible to that filter.

  2. 02

    Missing suitableForDiet

    Wrong
    Vegan or gluten-free dishes without the diet signal
    Right
    suitableForDiet with the enum URL

    Diet filters are the top menu-search tool; without the signal, the dish is invisible to users who need it.

About the example data

The pan-seared Pocono trout at The Dunmore Grill.

Comments

Loading comments...

Leave a comment