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
aggregateRatingvorhanden) - Reservierungsbutton (wenn
hasMenuundacceptsReservationsgesetzt) - 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"
}
]
Menu mit MenuSection
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:
- Rank Math → Lokales SEO → Standorte
- Typ: Restaurant
- Speisekarte-URL eintragen
- Ö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.