Blog Lokal-SEO

OpeningHoursSpecification Schema Markup: Öffnungszeiten für Google richtig einbinden

Wenn potenzielle Kunden auf Google nach deinem Unternehmen suchen, wollen sie sofort wissen: Ist die Praxis jetzt geöffnet? Wann macht das Restaurant auf? OpeningHoursSpecification Schema Markup liefert Google diese Informationen strukturiert - und erhöht deine Sichtbarkeit im lokalen Search massiv.

von Shift07 Team · 20. April 2026 · 13 Min. Lesezeit
OpeningHoursSpecification Schema Markup für lokale Unternehmen

Für wen ist dieser Artikel? Für alle, die ein lokales Unternehmen betreiben oder SEO für Kunden mit physischen Standorten machen: Zahnarztpraxen, Restaurants, Handwerksbetriebe, Einzelhändler, Fitnessstudios, Kosmetikstudios - überall wo Öffnungszeiten eine Rolle spielen. Außerdem relevant für alle, die das LocalBusiness Schema bereits nutzen und es jetzt um präzise Öffnungszeiten erweitern möchten.

Was ist OpeningHoursSpecification?

OpeningHoursSpecification ist ein Schema.org-Typ, der detaillierte Öffnungszeiten für Unternehmen und Orte beschreibt. Im Gegensatz zum vereinfachten openingHours-Property (das nur einfache Zeitangaben wie "Mo-Fr 09:00-18:00" unterstützt) ermöglicht OpeningHoursSpecification:

Google nutzt diese Daten, um in den lokalen Suchergebnissen und im Knowledge Panel anzuzeigen, ob ein Unternehmen aktuell geöffnet oder geschlossen ist - eine Information, die direkt die Klickrate beeinflusst.

Warum OpeningHoursSpecification für lokales SEO entscheidend ist

In der lokalen Suche konkurrierst du nicht nur über Keywords, sondern über Relevanz im Moment der Suche. Wenn jemand um 17:45 Uhr sucht "Zahnarzt in der Nähe geöffnet", zeigt Google bevorzugt Praxen, die jetzt noch offen sind - und das erkennt Google durch strukturierte Öffnungszeiten-Daten.

Laut einer Analyse von BrightLocal sehen über 70% der Nutzer die Öffnungszeiten als entscheidend für ihre Auswahl eines lokalen Unternehmens. Fehlende oder falsche Öffnungszeiten in Google My Business oder auf der Website kosten nachweislich Besucher und Conversions.

Unser Google My Business Optimierungs-Guide zeigt, wie du Öffnungszeiten dort pflegst - dieser Artikel erklärt, wie du dasselbe auf deiner Website per Schema Markup abbildest, für optimale Sichtbarkeit in allen Google-Oberflächen.

Properties von OpeningHoursSpecification im Überblick

Property Typ Pflicht? Beschreibung
dayOfWeek DayOfWeek Empfohlen Wochentag (Monday, Tuesday, ..., Sunday)
opens Time (HH:MM) Empfohlen Öffnungszeit im 24h-Format
closes Time (HH:MM) Empfohlen Schließzeit im 24h-Format
validFrom Date (ISO 8601) Optional Beginn der Gültigkeit (für Sonderzeiten)
validThrough Date (ISO 8601) Optional Ende der Gültigkeit (für Sonderzeiten)

Wochentag-Werte: Korrekte Schreibweise

Google erfordert exakt diese Werte für dayOfWeek:

Deutsch Schema.org-Wert Kurzform (veraltet)
Montag https://schema.org/Monday oder Monday Mo
Dienstag Tuesday Tu
Mittwoch Wednesday We
Donnerstag Thursday Th
Freitag Friday Fr
Samstag Saturday Sa
Sonntag Sunday Su

Tipp: Du kannst sowohl den vollständigen URI (https://schema.org/Monday) als auch den Kurzwert (Monday) verwenden - beide werden von Google akzeptiert.

Vollständiges JSON-LD-Beispiel: Zahnarztpraxis

Eine Zahnarztpraxis mit unterschiedlichen Öffnungszeiten pro Wochentag und Mittagspause am Freitag:

{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "name": "Zahnarztpraxis Dr. Müller",
  "url": "https://zahnarzt-mueller-berlin.de",
  "telephone": "+49 30 12345678",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Hauptstraße 42",
    "addressLocality": "Berlin",
    "postalCode": "10115",
    "addressCountry": "DE"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
      "opens": "08:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Friday",
      "opens": "08:00",
      "closes": "13:00"
    }
  ]
}

Shortcut: Wenn mehrere Tage dieselben Öffnungszeiten haben, kannst du sie als Array angeben: "dayOfWeek": ["Monday", "Tuesday", "Wednesday"]. Das spart Code und ist vollständig valide.

Mittagspause abbilden: Zwei Öffnungsperioden pro Tag

Viele Handwerksbetriebe, Arztpraxen und Behörden haben eine Mittagspause. Dafür einfach zwei OpeningHoursSpecification-Einträge für denselben Wochentag erstellen:

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "08:00",
    "closes": "12:00"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
    "opens": "14:00",
    "closes": "18:00"
  }
]

Freitag öffnet in diesem Beispiel nur vormittags (08:00–12:00), nachmittags ist geschlossen.

Restaurant-Beispiel mit Wochenend-Öffnungszeiten

{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Ristorante Bella Italia",
  "url": "https://bella-italia-hamburg.de",
  "telephone": "+49 40 9876543",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Colonnaden 15",
    "addressLocality": "Hamburg",
    "postalCode": "20354",
    "addressCountry": "DE"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Tuesday", "Wednesday", "Thursday"],
      "opens": "11:30",
      "closes": "22:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Friday", "Saturday"],
      "opens": "11:30",
      "closes": "23:30"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Sunday",
      "opens": "12:00",
      "closes": "21:00"
    }
  ]
}

Montag ist Ruhetag - er taucht im Schema einfach nicht auf. Google interpretiert fehlende Tage als geschlossen.

Sonderöffnungszeiten für Feiertage und Urlaub

Mit validFrom und validThrough kannst du zeitlich begrenzte Öffnungszeiten definieren. Das ist ideal für:

Beispiel: Urlaubsschließung im August

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "09:00",
    "closes": "18:00"
  },
  {
    "@type": "OpeningHoursSpecification",
    "validFrom": "2026-08-01",
    "validThrough": "2026-08-21",
    "opens": "00:00",
    "closes": "00:00"
  }
]

Geschlossen signalisieren: Wenn opens und closes beide auf "00:00" gesetzt sind (und kein dayOfWeek angegeben ist), interpretiert Google das als "im gesamten Zeitraum geschlossen". Das Weglassen des dayOfWeek-Feldes bedeutet: gilt für alle Tage im angegebenen Zeitraum.

Beispiel: Weihnachten - verkürzte Öffnungszeiten

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "validFrom": "2026-12-24",
    "validThrough": "2026-12-24",
    "dayOfWeek": "Thursday",
    "opens": "09:00",
    "closes": "12:00"
  },
  {
    "@type": "OpeningHoursSpecification",
    "validFrom": "2026-12-25",
    "validThrough": "2026-12-26",
    "opens": "00:00",
    "closes": "00:00"
  }
]

24-Stunden-Betrieb abbilden

Für Unternehmen, die rund um die Uhr geöffnet sind (z.B. Tankstellen, Notaufnahmen):

{
  "@type": "OpeningHoursSpecification",
  "dayOfWeek": [
    "Monday", "Tuesday", "Wednesday", "Thursday",
    "Friday", "Saturday", "Sunday"
  ],
  "opens": "00:00",
  "closes": "23:59"
}

Alternativ: "closes": "00:00" (Mitternacht) - beide Varianten werden akzeptiert, aber "23:59" ist eindeutiger.

OpeningHoursSpecification in LocalBusiness einbinden

OpeningHoursSpecification wird als Property innerhalb des LocalBusiness-Schemas verwendet - nie als eigenständiges Schema. Das bedeutet: Du brauchst immer einen übergeordneten Typ wie LocalBusiness, Restaurant, Dentist, AutoRepair usw.

Vollständiges LocalBusiness-Beispiel für einen Friseur

{
  "@context": "https://schema.org",
  "@type": "HairSalon",
  "name": "Salon Schöner Schnitt",
  "url": "https://salon-schoener-schnitt.de",
  "telephone": "+49 211 555 1234",
  "image": "https://salon-schoener-schnitt.de/images/salon.jpg",
  "priceRange": "€€",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Königsallee 88",
    "addressLocality": "Düsseldorf",
    "postalCode": "40215",
    "addressCountry": "DE"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "51.2217",
    "longitude": "6.7762"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Tuesday", "Wednesday", "Friday"],
      "opens": "09:00",
      "closes": "19:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Thursday",
      "opens": "11:00",
      "closes": "20:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "08:00",
      "closes": "16:00"
    }
  ],
  "sameAs": [
    "https://www.google.com/maps/place/...",
    "https://www.instagram.com/salon_schoener_schnitt"
  ]
}

Beachte: Montag und Sonntag sind in diesem Beispiel Ruhetage. Sie erscheinen nicht im Schema - Google zeigt sie dann als geschlossen an.

Häufige Fehler und wie du sie vermeidest

Fehler 1: 12-Stunden-Format statt 24-Stunden-Format

Falsch: "opens": "9:00 AM" - Schema.org erfordert HH:MM im 24-Stunden-Format.
Richtig: "opens": "09:00"

Fehler 2: Öffnungszeiten nur im alten openingHours-Format

Das veraltete openingHours-Format ("Mo-Fr 09:00-18:00") funktioniert noch, aber OpeningHoursSpecification ist deutlich präziser und unterstützt Sonderzeiten. Nutze stattdessen immer OpeningHoursSpecification.

// VERALTET: openingHours-String
"openingHours": ["Mo-Fr 09:00-18:00", "Sa 10:00-14:00"]

// BESSER: OpeningHoursSpecification
"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "09:00",
    "closes": "18:00"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Saturday",
    "opens": "10:00",
    "closes": "14:00"
  }
]

Fehler 3: Öffnungszeiten ohne übergeordnetes LocalBusiness-Schema

OpeningHoursSpecification als eigenständiges Schema auf einer Seite ist ungültig. Es muss immer innerhalb eines LocalBusiness-Typs eingebettet sein. Das LocalBusiness Schema Generator Tool von Shift07 erzeugt automatisch das korrekte übergeordnete Schema mit Öffnungszeiten.

Fehler 4: Zeitzonen im opens/closes-Feld

Die Zeiten in opens und closes sind immer als Lokalzeit des Unternehmens zu verstehen - ohne Zeitzonenangabe. Google ermittelt die Zeitzone automatisch aus der address oder den geo-Koordinaten.

// FALSCH: Zeitzone im Zeitwert
"opens": "09:00+02:00"

// RICHTIG: Nur Uhrzeit, Zeitzone aus Adresse
"opens": "09:00"

OpeningHoursSpecification mit Google My Business synchronisieren

Eine häufige Frage: Reicht es, Öffnungszeiten in Google My Business (GMB) einzupflegen? Die Antwort: GMB-Daten und Website-Schema sind komplementär, nicht redundant. Google nutzt beide Quellen und kombiniert sie.

Mehr zu Google My Business erklärt unser GMB-Optimierungs-Leitfaden. Zum Thema NAP-Konsistenz (Name, Adresse, Telefon) haben wir einen separaten Artikel: NAP-Konsistenz für lokales SEO.

Schema-Markup testen: So validierst du OpeningHoursSpecification

Das Testen von Öffnungszeiten-Schema hat eine Besonderheit: Du siehst die Auswirkung erst in den SERPs oder im Knowledge Panel, nicht im Rich Results Test (da OpeningHoursSpecification kein eigenständiges Rich Result, sondern ein LocalBusiness-Signal ist).

Drei Validierungsschritte:

  1. Schema.org-Validator: validator.schema.org - prüft ob das JSON-LD syntaktisch korrekt ist und alle Pflichtfelder vorhanden sind
  2. Google Rich Results Test: search.google.com/test/rich-results - prüft ob das LocalBusiness-Schema erkannt wird (Öffnungszeiten werden dabei mit validiert)
  3. Google Search Console: Unter "Verbesserungen" → "Unternehmen" (falls vorhanden) - zeigt Erkennungsfehler auf deiner Website

Für schnelle Tests direkt im Browser eignet sich unser JSON-LD Structured Data Validator - du kannst dort das Markup direkt prüfen.

Branchen-spezifische Tipps

Arztpraxen und Zahnarztpraxen

Nutze Dentist oder MedicalClinic als @type. Definiere Sprechzeiten präzise - Mittagspause und abweichende Tage sind hier die Regel, nicht die Ausnahme. Patienten suchen oft dringend und wollen sofort wissen, ob die Praxis erreichbar ist.

Restaurants und Cafés

Nutze Restaurant, CafeOrCoffeeShop oder FoodEstablishment. Beachte: Küchenschluss (Bestellannahme) und tatsächliche Schließung können unterschiedlich sein. Wenn du Küchenschluss abbilden willst, nutze Schließzeit = Küchenschluss und ergänze es im Text.

Handwerksbetriebe

Nutze HomeAndConstructionBusiness oder einen spezifischeren Untertyp. Viele Handwerker haben keine regulären Bürozeiten - hier kann das Weglassen der Öffnungszeiten oder "nach Vereinbarung" besser sein als falsche Zeiten. Scheibe lieber nichts als etwas Falsches: Google bestraft inkonsistente Daten.

Checkliste: OpeningHoursSpecification korrekt implementieren

Checkliste:

Fazit

OpeningHoursSpecification ist eines der direktesten SEO-Signale für lokale Unternehmen: Es zeigt Google exakt, wann du erreichbar bist - und Google zeigt das den Nutzern direkt in den Suchergebnissen. Gerade bei mobilen "in der Nähe"-Suchen ist der Unterschied zwischen "Jetzt geöffnet" und "Geschlossen" oft entscheidend für den Klick.

Die Implementierung ist technisch überschaubar. Der häufigste Fehler ist nicht das falsche Format, sondern Inkonsistenz: Wenn Website-Schema, GMB-Eintrag und tatsächliche Öffnungszeiten auseinanderlaufen, leidet die Vertrauenswürdigkeit bei Google.

Kombiniere OpeningHoursSpecification mit einem vollständigen LocalBusiness Schema, NAP-Konsistenz und einem gepflegten Google My Business-Eintrag - das ist das Fundament für starkes lokales SEO.

Möchtest du wissen, welche Schema-Fehler deine Website aktuell hat? Die kostenlose Shift07-Analyse zeigt dir alle technischen SEO-Probleme auf einen Blick.