Restaurant Schema Markup: Menu & Reservations Guide

Local SEO for Restaurants • Updated

Restaurant Schema Markup: Menu, Reservations & LocalBusiness

Written by Hospitality On The Map

Quick answer: Schema markup helps search engines understand your restaurant’s details. Implement Restaurant, Menu → MenuSection → MenuItem, AggregateRating, and a ReserveAction (potentialAction). Validate in Google’s tools and deploy uniquely on every location page.

New to the series? Start at the hub: Local SEO for Restaurants in 2025. For profile optimisation, see Google Business Profile for Restaurants, and for multi‑branch structure, read Multi‑Location Restaurant SEO.

Why schema matters for hospitality

Key points
  • Clarity: Make your NAP, hours, geo, menus and booking routes unambiguous.
  • Coverage: Give search engines structured hooks for dishes, dietary tags and offers.
  • Consistency: Each location page describes that venue only—no mixed addresses or phones.

Schema doesn’t replace great content, but it helps search engines and AI Overviews interpret your pages correctly—especially for menus, reservations and local signals.

Core Restaurant JSON‑LD (copy‑paste)

Place one Restaurant object per location page. Use unique @id values, link to your HTML menu page, and include accurate geo coordinates.

{
"@context": "https://schema.org",
"@type": "Restaurant",
"@id": "https://example.com/locations/edinburgh/#restaurant",
"name": "Brand Edinburgh",
"url": "https://example.com/locations/edinburgh/",
"image": "https://example.com/images/edinburgh/hero.jpg",
"telephone": "+44 131 000 0000",
"priceRange": "££",
"servesCuisine": ["Italian","Pizza"],
"address": {
  "@type": "PostalAddress",
  "streetAddress": "1 George St",
  "addressLocality": "Edinburgh",
  "postalCode": "EH2 2XX",
  "addressCountry": "GB"
},
"geo": {
  "@type": "GeoCoordinates",
  "latitude": 55.953, "longitude": -3.188
},
"openingHoursSpecification": [{
  "@type":"OpeningHoursSpecification",
  "dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],
  "opens":"12:00","closes":"22:00"
},{
  "@type":"OpeningHoursSpecification",
  "dayOfWeek":["Saturday","Sunday"],
  "opens":"11:00","closes":"23:00"
}],
"menu": "https://example.com/locations/edinburgh/menu/",
"acceptsReservations": true,
"sameAs": [
  "https://www.instagram.com/brand/",
  "https://www.facebook.com/brand/",
  "https://g.page/brand-edinburgh"
],
"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.5",
  "reviewCount": "842"
}
}

Note: Google may not display review stars for local businesses’ own pages, but keeping aggregateRating helps clarity and future‑proofing.

Reservations & ordering markup

Add a ReserveAction as a potentialAction so search engines understand how to book; add OrderAction if you offer takeaway/delivery.

{
"@context":"https://schema.org",
"@type":"Restaurant",
"@id":"https://example.com/locations/edinburgh/#restaurant",
"potentialAction": [{
  "@type":"ReserveAction",
  "target":{
    "@type":"EntryPoint",
    "urlTemplate":"https://book.brand.com/edinburgh?utm_source=organic&utm_medium=website"
  },
  "result":{"@type":"FoodEstablishmentReservation","name":"Table reservation"}
},{
  "@type":"OrderAction",
  "target":{
    "@type":"EntryPoint",
    "urlTemplate":"https://order.brand.com/edinburgh?utm_source=organic&utm_medium=website"
  }
}]
}

Multi‑location deployment

Per‑venue pages

  • One Restaurant object per location page with unique @id, NAP, geo, hours, menus and reservation links.
  • Link each GBP to its matching page (with UTMs) and vice‑versa.

Brand structure

  • Optionally add an Organization object on the homepage.
  • Use a consistent /locations/ structure and city & location pages to organise venues.

For page speed and UX patterns that help indexing, see Restaurant Website SEO & UX. For acquisition, pair this with Local Link Building and Reviews & Reputation SEO.

Validation & monitoring

  • Validate JSON‑LD (no errors/warnings) before publishing.
  • Monitor Search Console for structured‑data trends and crawl issues.
  • Keep hours, menus, and reservation links in sync with GBP.

Common mistakes to avoid

  • Duplicating the same @id across multiple venues.
  • Mixing two addresses/phones in one Restaurant entity.
  • Using only a PDF for menus (add an HTML menu page).
  • Forgetting to update schema when hours or booking links change.

FAQs

Do I need both Menu schema and a menu URL?

Use the menu URL at minimum; add Menu → MenuSection → MenuItem if you want richer structure.

Where should I put Organization schema?

On the homepage. Keep Restaurant entities on location pages to avoid mixing details.

Can I mark up delivery partners?

Link out normally. Use an OrderAction pointing to your first‑party ordering page if available.

Want bullet‑proof schema on every location page?

We implement Restaurant, Menu and reservation markup that’s clean, validated and maintained across your venues.

Request a free Postcode Coverage Report

Authored by Hospitality On The Map • Part of our Local SEO for Restaurants series.

Daniel Turner