Restaurant / Menu Schema Generator
This free tool generates JSON-LD structured data for restaurants and their menus using Schema.org's Restaurant and Menu types. Enter your restaurant details, menu sections, dishes, prices, dietary labels, and nutritional information, and the generator builds a complete nested schema block that connects your business to its food. Help hungry searchers find your restaurant, browse your menu, and decide what to order before they even visit your site.
Generated Restaurant Schema (JSON-LD)
What Is Restaurant Schema?
Restaurant schema describes a food service establishment using Schema.org's Restaurant type, a specific subtype of FoodEstablishment, which itself is a subtype of LocalBusiness. The layered inheritance matters because each level adds properties specific to that business category. LocalBusiness provides the address, hours, and contact details. FoodEstablishment adds cuisine type, whether reservations are accepted, and star rating. Restaurant adds nothing further in terms of unique properties but signals to search engines that this is specifically a sit-down restaurant rather than a bar, cafe, or fast food joint.
The real power of restaurant schema comes from combining the Restaurant entity with a Menu entity that lists the actual food and drinks available. A Restaurant without a Menu is a business listing. A Restaurant with a structured Menu becomes a browsable catalog of dishes, prices, and dietary information that search engines can parse, display, and use to match your restaurant against specific food queries.
When someone searches "pad thai near me" or "restaurants with vegan options downtown," Google's systems need to know which restaurants serve pad thai and which ones accommodate vegans. A Restaurant schema block with a nested Menu containing a MenuItem for "Pad Thai" with a price and a suitableForDiet property marking it as VeganDiet gives Google that information in exactly the format it can process. Without the schema, Google has to scrape and interpret your menu page, which it does with varying success depending on how your menu is formatted.
Why Does Menu Schema Matter for Local SEO?
Restaurant searches are among the most commercially valuable local queries. People searching for restaurants are typically ready to eat within hours, making the conversion path from search to seated customer one of the shortest in all of local SEO. Menu schema positions your restaurant to capture these high-intent searches at the most specific level.
- Dish-level discoverability. Most restaurant SEO focuses on the business name and cuisine type. Menu schema pushes discoverability down to individual dishes. A restaurant with structured menu data can surface for "chicken tikka masala [city]" even if the page never uses that phrase in its visible text outside the menu listing. The schema turns every dish on your menu into a potential search match.
- Dietary and allergy filtering. The number of people searching for restaurants by dietary restriction grows every year. "Gluten free restaurants," "keto friendly restaurants," "halal restaurants near me." Menu schema with suitableForDiet properties on individual items lets Google identify your restaurant as compatible with specific diets at the item level, not just the restaurant level. A steakhouse that marks three menu items as GlutenFreeDiet can surface for gluten-free queries even though the restaurant isn't a gluten-free restaurant.
- Price transparency. Menu items with structured pricing help Google answer price-related queries and filter results by budget. A searcher looking for "affordable sushi [city]" benefits when Google can compare actual menu prices across restaurants rather than guessing based on the price range indicator ($, $$, $$$) alone.
- Google Maps and Business Profile enrichment. Google pulls menu data from multiple sources to display in Maps and Business Profile listings. Structured menu data on your website gives Google a first-party source that's more authoritative than third-party scrapers. When your schema matches your Google Business Profile data, the consistency strengthens both signals.
- Voice search and assistant integration. "Hey Google, find a restaurant near me that has lobster bisque" is a query that requires dish-level knowledge. Voice assistants parse structured data more reliably than unstructured web pages. Menu schema positions your restaurant for the growing share of food searches that happen through voice.
What Properties Does the Generator Include?
The generator builds a Restaurant entity with nested Menu, MenuSection, and MenuItem entities, covering every property Google recognizes for food service establishments.
Restaurant properties:
- name. The restaurant's name as it appears on signage, Google Business Profile, and reservations. Consistency with your GBP listing is critical.
- address. A PostalAddress entity with street, city, state, postal code, and country. This is the physical location that ties your restaurant to geographic search results.
- telephone. The reservation or main phone number. Use the format consistent with your GBP listing and other directory citations.
- openingHoursSpecification. Hours for each day of the week, including different hours for brunch, lunch, dinner, and late night if applicable.
- servesCuisine. The cuisine types your restaurant offers. This property accepts multiple values: "Italian," "Seafood," "Farm to Table." Use the terms diners would search for, not internal kitchen classifications.
- priceRange. The dollar sign scale ($, $$, $$$, $$$$) that indicates the general price level. This shows up in search listings and Maps results as a quick affordability indicator.
- acceptsReservations. A boolean indicating whether the restaurant takes reservations.
- image. Photos of the restaurant, ideally the exterior, the dining room, and signature dishes.
- geo. Latitude and longitude coordinates for precise map placement.
Menu and MenuItem properties:
- MenuSection. A grouping within the menu: "Appetizers," "Entrees," "Desserts," "Cocktails." Each section contains an array of MenuItems.
- MenuItem name. The dish name as it appears on the menu.
- MenuItem description. A brief description of the dish: ingredients, preparation method, or flavor profile.
- offers. An Offer entity containing the price and priceCurrency (ISO code like "USD").
- suitableForDiet. Dietary classifications: GlutenFreeDiet, VeganDiet, VegetarianDiet, DiabeticDiet, HalalDiet, HinduDiet, KosherDiet, LowCalorieDiet, LowFatDiet, LowLactoseDiet, LowSaltDiet.
- nutrition. A NutritionInformation entity with calorie count for health-focused restaurants.
- image. A photo of the specific dish for visual search results.
How Detailed Should My Menu Schema Be?
The level of detail depends on your restaurant's size, menu complexity, and how much you're willing to maintain.
- Minimum viable implementation. Restaurant entity with address, hours, cuisine type, price range, and a menu URL pointing to your menu page. No inline menu items. This gives Google the business listing data and a pointer to the menu without the maintenance burden of structured menu items. Suitable for restaurants that change their menu frequently or don't have the resources to keep schema synchronized with a dynamic menu.
- Standard implementation. Restaurant entity plus an inline Menu with sections and items that include names, descriptions, and prices. No dietary labels or nutritional data. This covers the majority of the discovery benefit because search engines can see your dishes and prices. Suitable for restaurants with stable menus that change seasonally rather than daily.
- Comprehensive implementation. Full inline Menu with every dish, descriptions, prices, dietary labels, nutritional information, dish photos, and add-on options. This is the maximum data investment and produces the strongest search visibility for dish-level, diet-specific, and price-filtered queries. Suitable for chain restaurants with standardized menus, health-focused restaurants where nutritional data is a selling point, and any restaurant willing to invest in keeping the data current.
The freshness problem. Restaurant menus change. Seasonal items rotate. Prices update. Daily specials exist for a day. The schema must reflect the current menu, or it produces a worse outcome than no schema at all. A structured menu listing a dish at $18 when it's actually $24, or advertising a seasonal item that's been off the menu for six months, erodes trust with both customers and search engines. Choose the detail level you can actually maintain.
How Does This Integrate with Google Business Profile?
Your website's Restaurant schema and your Google Business Profile listing serve overlapping purposes from different angles, and consistency between them is the most important factor in local SEO for restaurants.
- Data Google cross-references. Google compares your schema data against your GBP data for name, address, phone number, hours, cuisine type, price range, and menu information. Matches reinforce both signals. Mismatches create uncertainty that can hurt your local ranking.
- Menu data specifically. Google allows menu uploads directly through GBP, and many restaurants use third-party services that feed menu data to Google. Your website's menu schema is another data input that Google evaluates alongside these sources. When all sources agree on your menu items and prices, Google's confidence in the data is highest.
- Photos. Photos in your schema should match or complement photos in your GBP listing. Different photos across sources are fine and actually helpful because they give Google more visual content.
- Hours and special hours. Restaurant hours in schema should match GBP hours exactly. Holiday hours, seasonal hour changes, and temporary closures need to be updated in both places simultaneously.
- Reservations. If your GBP listing includes a reservation link, the acceptsReservations property in your schema should point to the same booking system.
What About Food Delivery and Takeout?
The pandemic permanently expanded how restaurants think about service modes, and schema can describe all of them.
- Offers with delivery and takeout availability. The Offer entities on your MenuItems can include properties for availableDeliveryMethod, indicating whether items are available for dine-in, takeout, or delivery. Not every menu item may be available for delivery, and the schema can reflect item-level availability differences.
- Third-party delivery integration. If your restaurant is available through DoorDash, Uber Eats, Grubhub, or other delivery platforms, you can include potentialAction properties with OrderAction types that link to ordering pages.
- Direct ordering URLs. For restaurants with their own online ordering system, include a URL for the ordering page in the schema. This creates a structured path from search to order that competes with the third-party platforms for click-through.
- Service mode in hours. If your kitchen stops taking dine-in orders at 9 PM but accepts delivery orders until 11 PM, separate openingHoursSpecification entries for each service mode communicate these differences.
Can I Use This for Non-Restaurant Food Businesses?
The generator supports the broader FoodEstablishment hierarchy, not just the Restaurant subtype.
- CafeOrCoffeeShop. For coffee shops, tea houses, and casual cafes. The menu might focus on beverages, pastries, and light food rather than full entrees.
- BarOrPub. For bars, pubs, breweries, and cocktail lounges. The menu emphasizes drinks, with food as secondary.
- FastFoodRestaurant. For quick-service restaurants, fast casual concepts, and takeout-focused businesses.
- Bakery. For bakeries, patisseries, and dessert shops.
- IceCreamShop, Winery, Brewery, Distillery. Each has its own Schema.org subtype under FoodEstablishment.
Choose the most specific subtype that matches your business. A craft cocktail bar should use BarOrPub, not Restaurant. A fast-casual burrito chain should use FastFoodRestaurant, not Restaurant. The specificity helps Google categorize your business correctly for type-filtered searches like "bars near me" versus "restaurants near me."
Common Restaurant Schema Mistakes to Avoid
- Listing menu items without prices. A MenuItem without a price is a missed opportunity. Price is one of the most searched and filtered dimensions for restaurant selection. If your prices are on the physical menu, they should be in the schema.
- Using servesCuisine values that nobody searches for. "New American" and "Pacific Rim Fusion" are cuisine descriptions that appear on restaurant review sites but aren't what diners type into Google. Use the terms people search: "American," "Asian Fusion," "Seafood," "Italian."
- Not marking dietary suitability on qualifying items. If your menu has vegetarian, vegan, or gluten-free dishes, the suitableForDiet property on those items is one of your strongest competitive advantages in search.
- Outdated hours, especially for holidays. Nothing damages a restaurant's relationship with a potential customer faster than showing up to a closed restaurant.
- Duplicating GBP menu data with contradictory schema. Your website schema says the burger is $16. Your GBP listing says $14. Your delivery platform says $18. Three different prices tells Google that at least two of them are wrong.
- Including the entire menu in schema for a restaurant with a daily-changing menu. A farm-to-table restaurant that changes its menu every day cannot maintain accurate static schema. For these businesses, the minimum viable implementation with a menu URL and no inline items is the correct approach.
- Omitting the Restaurant type in favor of generic LocalBusiness. Using LocalBusiness instead of Restaurant loses every food-specific property and search feature. Always use the most specific applicable subtype in the FoodEstablishment hierarchy.
Related Tools
Let's Grow Your Business
Want some free consulting? Let’s hop on a call and talk about what we can do to help.