✓ TestedWorks with CSV, Excel, Google Sheets → JSON-LD Schema
By dataclean.to team · 2026-02-05
Restaurant databases organize menus into sections like appetizers, entrees, desserts, and beverages. Menu schema provides hierarchical structure for menu organization with sections and items. Structured menu data enables rich restaurant results in search and dining platforms.
The Problem
Restaurant menu data lacks consistent hierarchical structure and mixes menu sections with item-level details. Menu versions for different times (breakfast, lunch, dinner) or locations may be combined without clear boundaries. Without Menu schema markup, search engines cannot display organized menu structures or enable filtering by meal type or dietary preferences in restaurant search features. Schema.org Menu
How to Fix It
1
Identify Menu Structure and Type
Parse menu hierarchy including main menu, sections, and items. Identify menu type (food, drinks, wine list) and service period (all-day, breakfast, lunch, dinner). Extract last updated date for freshness.
2
Organize Menu Sections
Group items into logical sections (appetizers, salads, entrees, sides, desserts, beverages). Create MenuSection objects with names, descriptions, and hasMenuItem relationships for contained items.
3
Link Menu Items
Reference individual MenuItem schema objects for each dish. Maintain section organization while providing item-level detail including prices, descriptions, and dietary information.
4
Handle Multiple Menu Versions
Create separate Menu schemas for distinct service periods or locations rather than combining all items. Use inLanguage property for multi-language menus and identifier for version tracking.
5
Generate Menu Schema JSON-LD
Output Menu schema with name and hasMenuSection or hasMenuItem properties. Include optional description, inLanguage, and provider (restaurant Organization) for complete menu context.
Frequently Asked Questions
Should I create one Menu schema or separate schemas for lunch and dinner menus?
Create separate Menu schemas for distinct service periods if they have significantly different offerings. Use clear names like "Lunch Menu" and "Dinner Menu" to differentiate. Link both to the restaurant's LocalBusiness schema via hasMenu property.
How do I represent menu sections and subsections in schema?
Use MenuSection objects for top-level categories (Appetizers, Entrees). MenuSection can nest using hasMenuSection for subcategories (Entrees > Seafood, Entrees > Pasta). Keep nesting shallow (2-3 levels maximum) for clarity.
Can a menu item appear in multiple sections of a Menu schema?
Yes, the same MenuItem object can be referenced from multiple MenuSections. This is common for items that fit multiple categories or appear on multiple menus (e.g., a salad on both lunch and dinner menus).
Example: Input → Output
name
cuisine
address
phone
hours
La Bella Italia
Italian
456 Oak Ave Chicago
(312) 555-0100
Mon-Sun 11am-10pm
la bella italia
italian
456 oak ave
chicago il
(312)555-0100
daily 11-22
Red rows show common data quality issues. dataclean.to normalizes and generates JSON-LD automatically.