Restaurant schema markup: describing your restaurant to search engines
Updated October 20, 2026
Restaurant schema markup is structured data on your website that tells search engines, in a fixed format, what your restaurant is: its name, address, phone, cuisine, menu, prices and where to order. It is usually written as JSON-LD using the schema.org vocabulary, where a restaurant is the type Restaurant, a kind of local business. Customers don't see it; search engines and AI assistants read it.
In short
- Type:
Restaurant(schema.org: a FoodEstablishment, which is a LocalBusiness). - Google requires
nameandaddressfor a local business, and recommendsservesCuisine,menu,telephone,geo,priceRangeand opening hours. - Don't add star ratings from your own site's reviews; Google treats those as self-serving for a local business.
- On Menuthere every storefront gets Restaurant, Menu and OrderAction markup from what you entered, on every plan.
The properties that matter
| Property | What it says | Google (local business) |
|---|---|---|
name | The restaurant's name | Required |
address | The physical location | Required |
telephone | The main number for customers | Recommended |
geo | Latitude and longitude | Recommended |
servesCuisine | The type of cuisine | Recommended |
menu / hasMenu | A link to the menu, or the menu itself | Recommended (menu) |
openingHoursSpecification | When you're open | Recommended |
priceRange | A relative price range, under 100 characters | Recommended |
acceptsReservations | Whether you take bookings | schema.org property |
potentialAction (OrderAction) | Where to order online | schema.org property |
Google says to "use the most specific LocalBusiness sub-type possible," and gives Restaurant as an example.
A trimmed example
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Example Taqueria",
"url": "https://order.example.com/",
"telephone": "+1-555-0100",
"servesCuisine": "Mexican",
"address": { "@type": "PostalAddress", "streetAddress": "12 Main St", "addressLocality": "Austin", "addressCountry": "US" },
"geo": { "@type": "GeoCoordinates", "latitude": 30.2672, "longitude": -97.7431 },
"hasMenu": {
"@type": "Menu",
"hasMenuSection": [{
"@type": "MenuSection",
"name": "Tacos",
"hasMenuItem": [{
"@type": "MenuItem",
"name": "Carnitas taco",
"offers": { "@type": "Offer", "price": 4.5, "priceCurrency": "USD", "availability": "https://schema.org/InStock" }
}]
}]
},
"potentialAction": { "@type": "OrderAction", "target": { "@type": "EntryPoint", "urlTemplate": "https://order.example.com/" } }
}(An invented restaurant, shortened for reading.)
Do's and don'ts
| Do | Don't |
|---|---|
| Mark up only what the page shows | Add dishes, prices or hours that aren't on the page |
| Keep prices in sync with the menu | Leave old prices in the markup |
Use one Restaurant per location, with its own address | Put several branches in one block |
| Test with Google's Rich Results Test | Add aggregateRating from reviews collected on your own site |
Schema markup helps search engines understand a page; it doesn't guarantee a rich result or a ranking. See restaurant SEO and AEO for restaurants.
How Menuthere handles schema markup
- Built for every storefront. Search engines get a
Restaurantwith your name, URL and, when you've entered them, telephone, address, map pin (geo), cuisine and description. - Your menu as structured data. A
MenuwithMenuSections in your order and up to 120 visible dishes asMenuItems, each with its description, photo and anOfferwith the price in your currency, one offer per size for sized dishes. Out-of-stock dishes are markedOutOfStock. - Dish facts. Calories you entered become
NutritionInformation; a halal mark becomesHalalDiet. (Allergens appear on the readable page search engines get, not in the markup.) - An order link. Stores that take orders get an
OrderActionpointing at the ordering page. - What it leaves out on purpose: no
aggregateRating(reviews collected on your own page don't qualify), nopriceRangeand no opening hours, because they aren't stored as such. - A readable page too. Search engines and AI crawlers also get a plain version of your store with every visible dish and price, and a title and description written from your store details, editable from Lite. See how Google sees your store.
What it doesn't do: you can't edit the markup by hand or add your own properties. Opening hours aren't in the markup.
Get a storefront that describes your restaurant and menu to search engines, with no code.
Related terms
- Major food allergens: what to show on each dish.
- First-party data: your own tracking on your own page.
FAQs
What is restaurant schema markup?
It is structured data, usually JSON-LD using schema.org, that describes a restaurant's name, address, phone, cuisine, menu, prices and ordering link in a fixed format search engines can read. Visitors don't see it.
What schema type should a restaurant use?
Use Restaurant, which schema.org defines as a FoodEstablishment and a kind of LocalBusiness. Google recommends using the most specific LocalBusiness sub-type, and gives Restaurant as an example.
What does Google require in restaurant structured data?
For a local business, Google requires the name and address, and recommends properties such as servesCuisine, menu, telephone, geo, priceRange and opening hours.
Can I add star ratings to my restaurant's schema?
Not from reviews collected on your own site. Google treats those as self-serving for a local business, so they don't qualify for review stars. Menuthere leaves ratings out of its markup for this reason.
Does Menuthere add schema markup to my store?
Yes, on every plan. Each storefront gets Restaurant markup with your details, a Menu with up to 120 dishes and their prices, calories and halal marks where entered, and an OrderAction when the store takes orders.
Sources (4)
- Google Search Central, Local business (LocalBusiness) structured data ("Use the most specific LocalBusiness sub-type possible", Restaurant as an example; required address, name; recommended servesCuisine, menu, priceRange under 100 characters, telephone, openingHoursSpecification, geo), last updated 8 Sep 2026: https://developers.google.com/search/docs/appearance/structured-data/local-business (accessed 20 Oct 2026)
- schema.org, Restaurant (Restaurant → FoodEstablishment → LocalBusiness; acceptsReservations, hasMenu, servesCuisine), schema.org V30.1 (16 Sep 2026): https://schema.org/Restaurant (accessed 20 Oct 2026)
- Menuthere help: How Google sees your store, updated 20 Oct 2026 (plain crawler page with every visible dish, prices, allergens, calories and halal mark; structured data; no star ratings; titles and descriptions): https://menuthere.com/docs/online-store/how-google-sees-your-store (accessed 20 Oct 2026)
- Menuthere help: SEO and tracking (custom title and description from Lite): https://menuthere.com/docs/online-store/seo-and-tracking (accessed 20 Oct 2026)