Schema.org für Restaurants: Menu, OpeningHours und Reservierungen
SEO 6 Min. Lesezeit

Schema.org für Restaurants: Menu, OpeningHours und Reservierungen

Vollständige JSON-LD Implementierung für Restaurantwebsites: Restaurant-Typ, MenuSection, AcceptsReservations, OpeningHoursSpecification mit realen Codebeispielen und häufigen Fehlern.

Arnold Wender

Arnold Wender

Webdesigner & Geschaeftsfuehrer

Inhaltsverzeichnis

Restaurantwebsites haben eine der stärksten Möglichkeiten für Rich Snippets in Google: Öffnungszeiten im Knowledge Panel, Bewertungssterne, Reservierungsbutton und Preisniveau — alles direkt in den Suchergebnissen. Die Voraussetzung: korrekt implementiertes Schema.org.

Dieser Artikel zeigt vollständige JSON-LD-Implementierungen mit praxistauglichen Beispielen.

Warum Schema.org für Restaurants besonders wertvoll ist

Google nutzt strukturierte Daten von Restaurantwebsites für mehrere Features:

  • Knowledge Panel mit Öffnungszeiten, Adresse und Telefon
  • Bewertungssterne in den organischen Ergebnissen (wenn aggregateRating vorhanden)
  • Reservierungsbutton (wenn hasMenu und acceptsReservations gesetzt)
  • Rich Cards in der Google-Suche und Google Maps

Laut schema.org/Restaurant erbt der Typ von FoodEstablishment → LocalBusiness → Organization.

Vollständige Restaurant-Implementierung

Basis-Schema für eine Restaurantwebsite

{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "@id": "https://mein-restaurant.de/#restaurant",
  "name": "Restaurant Zur goldenen Gabel",
  "url": "https://mein-restaurant.de",
  "telephone": "+4934168712345",
  "email": "info@mein-restaurant.de",
  "description": "Traditionelle sächsische Küche im Herzen von Leipzig. Saisonale Gerichte, lokale Zutaten, freundliche Atmosphäre.",
  "image": "https://mein-restaurant.de/images/restaurant-aussen.jpg",
  "priceRange": "€€",
  "currenciesAccepted": "EUR",
  "paymentAccepted": "Bargeld, Kreditkarte, EC-Karte",
  "servesCuisine": ["Sächsische Küche", "Deutsche Küche"],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Augustusplatz 5",
    "addressLocality": "Leipzig",
    "addressRegion": "Sachsen",
    "postalCode": "04109",
    "addressCountry": "DE"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "51.3396",
    "longitude": "12.3713"
  },
  "hasMap": "https://maps.app.goo.gl/XXXXX",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Tuesday", "Wednesday", "Thursday"],
      "opens": "11:30",
      "closes": "22:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Friday", "Saturday"],
      "opens": "11:30",
      "closes": "23:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Sunday"],
      "opens": "12:00",
      "closes": "21:00"
    }
  ],
  "acceptsReservations": "True",
  "reservationUrl": "https://mein-restaurant.de/reservierung/",
  "hasMenu": "https://mein-restaurant.de/speisekarte/",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "83",
    "bestRating": "5",
    "worstRating": "1"
  }
}

Hinweis zu acceptsReservations: Der Wert kann "True", "False" oder eine URL zur Reservierungsseite sein. Google verwendet acceptsReservations: "True" zusammen mit reservationUrl für den Reservierungsbutton im Knowledge Panel.

Öffnungszeiten-Besonderheiten

Sonderöffnungszeiten (Feiertage)

{
  "@type": "OpeningHoursSpecification",
  "dayOfWeek": "PublicHolidays",
  "opens": "12:00",
  "closes": "18:00"
}

Für spezifische Sondertermine (Weihnachten, Silvester) mit validFrom/validThrough:

{
  "@type": "OpeningHoursSpecification",
  "opens": "18:00",
  "closes": "01:00",
  "validFrom": "2026-12-31",
  "validThrough": "2026-12-31"
}

Mittagspause

Wenn das Restaurant nur zu Mittag und Abend geöffnet ist, werden zwei OpeningHoursSpecification-Einträge für denselben Tag benötigt:

[
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "11:30",
    "closes": "14:30"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "17:30",
    "closes": "22:00"
  }
]

Schema.org erlaubt eine strukturierte Speisekartenbeschreibung direkt in den Daten. Sinnvoll wenn:

  • Gerichte mit Preisen in strukturierten Daten erscheinen sollen
  • Google die Speisekarte für Rich Cards nutzen soll
{
  "@context": "https://schema.org",
  "@type": "Menu",
  "@id": "https://mein-restaurant.de/speisekarte/#menu",
  "name": "Mittagskarte",
  "url": "https://mein-restaurant.de/speisekarte/",
  "hasMenuSection": [
    {
      "@type": "MenuSection",
      "name": "Vorspeisen",
      "hasMenuItem": [
        {
          "@type": "MenuItem",
          "name": "Sächsischer Linseneintopf",
          "description": "Traditioneller Eintopf mit Linsen, Räucherspeck und Gemüse.",
          "offers": {
            "@type": "Offer",
            "price": "8.50",
            "priceCurrency": "EUR"
          }
        }
      ]
    },
    {
      "@type": "MenuSection",
      "name": "Hauptgerichte",
      "hasMenuItem": [
        {
          "@type": "MenuItem",
          "name": "Sauerbraten mit Rotkohl",
          "description": "Rinderbraten in Sauerbraten-Marinade, mit Rotkohl und Thüringer Klößen.",
          "offers": {
            "@type": "Offer",
            "price": "19.80",
            "priceCurrency": "EUR"
          },
          "suitableForDiet": "https://schema.org/GlutenFreeDiet"
        }
      ]
    }
  ]
}

PAngV-Hinweis: In Deutschland müssen Preise auf Websites grundsätzlich den Endpreis inkl. Mehrwertsteuer angeben. Der Preis im Schema.org-Markup sollte dem auf der Speisekarte angezeigten Preis entsprechen.

Implementierung in einer Restaurantwebsite

Astro-Integration

In einem Astro-Projekt wird das Schema.org-JSON in den <head> injiziert:

---
const restaurantSchema = {
  "@context": "https://schema.org",
  "@type": "Restaurant",
  // ... vollständiges Schema
};
---

<script type="application/ld+json" set:html={JSON.stringify(restaurantSchema)} />

WordPress-Integration via Rank Math

Für WordPress-Projekte mit Rank Math Pro:

  1. Rank Math → Lokales SEO → Standorte
  2. Typ: Restaurant
  3. Speisekarte-URL eintragen
  4. Öffnungszeiten konfigurieren

Rank Math generiert das JSON-LD automatisch. Für MenuSection-Daten ist ein Custom-Schema nötig (Rank Math Pro → Schema → Benutzerdefiniert).

Häufige Fehler bei Restaurant-Schema.org

1. Falsche Preis-Range-Angabe

priceRange akzeptiert nur das Dollarsymbol als Konvention: "€", "€€", "€€€", "€€€€". Nicht "günstig" oder "15-30 EUR".

2. aggregateRating manuell statt aus echten Daten

Google erkennt und penalisiert manipulierte Bewertungsdaten. Nur echte, nachweisbare Bewertungen eintragen. Die Anzahl in reviewCount muss mit der tatsächlichen Bewertungsanzahl übereinstimmen.

3. Doppelte aggregateRating

Pro Seite darf nur eine aggregateRating-Instanz existieren. Wenn das Restaurant-Schema auf der Homepage und ein Testimonials-Widget jeweils aggregateRating ausgeben, meldet die Google Search Console einen Fehler.

4. Reservierungsbutton erscheint nicht

Voraussetzung: acceptsReservations muss "True" (als String) sein — nicht als Boolean true. Zudem muss reservationUrl eine direkte URL zur Reservierungsseite sein.

Validierung

Strukturierte Daten immer mit dem Rich Results Test von Google prüfen. Er zeigt:

  • Ob das Schema korrekt erkannt wird
  • Welche Rich Result Features infrage kommen
  • Spezifische Fehler und Warnungen

Interne Verlinkung für Restaurants

Für eine optimale Seitenarchitektur einer Restaurantwebsite:

  • Startseite: Restaurant-Schema, Link zur Speisekarte und Reservierung
  • Speisekarte: Menu-Schema mit MenuSection
  • Über uns: Person-Schema für Koch/Inhaber

Wir entwickeln Websites für Restaurants und Gastronomie in ganz Sachsen — mit vollständigem, validiertem Schema.org und lokalem SEO. Für weitere Informationen zu strukturierten Daten: unser Schema-Generator-Tool erstellt fertige JSON-LD-Blöcke für Ihr Unternehmen.

Fazit

Schema.org für Restaurants ist eine der wirkungsvollsten SEO-Maßnahmen für Gastronomiebetriebe: Knowledge Panel mit Öffnungszeiten, Reservierungsbutton und Bewertungssterne erhöhen die Klickrate direkt. Die Implementierung ist technisch überschaubar — die häufigsten Fehler liegen in inkonsistenten Daten und fehlender Validierung.

Arnold Wender, SEO-Experte

Webdesigner & Geschaeftsfuehrer

Arnold Wender ist Gruender und Inhaber von Wender Media. Er entwickelt seit 2007 professionelle Websites fuer Unternehmen in Sachsen und Sachsen-Anhalt.

Profil anzeigen