Shift07

OfferCatalog Schema Markup: Leistungsverzeichnis für Google strukturieren

21. April 2026 · Thümmler AI GmbH · Schema Markup · Cluster 16
OfferCatalog Schema Markup für Leistungsverzeichnis

Wer bietet was an? Diese simple Frage stellen potenzielle Kunden bei Google täglich millionenfach. Mit OfferCatalog Schema Markup kannst du Google genau diese Antwort geben — strukturiert, maschinenlesbar und direkt verknüpft mit deinem Unternehmensprofil. In diesem Artikel lernst du, wie du OfferCatalog korrekt implementierst, welche Properties es gibt und in welchen Szenarien du damit echten SEO-Mehrwert erzeugst.

Was ist OfferCatalog?
OfferCatalog ist ein Schema.org-Typ, der eine Sammlung von Angeboten — also Dienstleistungen, Produkte oder Kurse — strukturiert beschreibt. Er wird über die Property hasOfferCatalog an andere Entitäten wie LocalBusiness, Organization oder Service angehängt.

Was ist OfferCatalog und warum ist es relevant?

Schema.org definiert OfferCatalog als einen speziellen Subtyp von ItemList — eine geordnete oder ungeordnete Liste von Angeboten. Im Kontext von lokalem SEO und strukturierten Daten ist es besonders wertvoll, weil es Google ermöglicht zu verstehen, welche spezifischen Leistungen ein Unternehmen anbietet.

Stell dir vor, du bist eine Physiotherapiepraxis. Deine Website nennt zwar "Physiotherapie", aber Google versteht nicht automatisch, ob du Manualtherapie, Krankengymnastik, Sportphysiotherapie oder alle drei anbietest. Mit OfferCatalog kannst du genau das explizit strukturieren.

Wo wirkt OfferCatalog in der Praxis?

Die OfferCatalog-Struktur im Überblick

OfferCatalog ist kein eigenständiges Schema — es ist immer Teil einer übergeordneten Entität und wird über die Property hasOfferCatalog eingebunden. Die Hierarchie sieht typischerweise so aus:

LocalBusiness / Organization / Service
  └── hasOfferCatalog → OfferCatalog
        └── itemListElement → Offer
              ├── name
              ├── description
              ├── price
              └── priceCurrency

Properties von OfferCatalog

Property Typ Pflicht Beschreibung
@type Text Ja Muss "OfferCatalog" sein
name Text Empfohlen Name des Katalogs, z.B. "Unsere Leistungen"
description Text Optional Kurzbeschreibung des Leistungsbereichs
itemListElement Offer[] Empfohlen Liste der einzelnen Angebote (Offer-Objekte)
numberOfItems Integer Optional Gesamtanzahl der Einträge in der Liste

Properties eines Offer-Objekts (innerhalb des Katalogs)

Property Typ Beschreibung
@type Text Muss "Offer" sein
name Text Name der Dienstleistung oder des Produkts
description Text Detaillierte Beschreibung
price Number Preis (wenn bekannt/festgelegt)
priceCurrency Text ISO 4217-Währungscode, z.B. "EUR"
url URL Link zur Detailseite des Angebots
availability URL z.B. "https://schema.org/InStock"
itemOffered Service/Product Verweis auf Service- oder Produkt-Objekt

Implementierungsbeispiele nach Branchen

Beispiel 1: Physiotherapiepraxis

Ein klassischer Anwendungsfall: Eine Praxis bietet mehrere Therapieformen an und möchte, dass Google (und potenzielle Patienten) genau weiß, was angeboten wird.

{
  "@context": "https://schema.org",
  "@type": "MedicalBusiness",
  "name": "Physiotherapie am Marktplatz",
  "url": "https://physio-beispiel.de",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Marktplatz 5",
    "addressLocality": "Stuttgart",
    "postalCode": "70173",
    "addressCountry": "DE"
  },
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Unsere Therapieleistungen",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Manualtherapie",
          "description": "Gezielte Mobilisation und Manipulation der Gelenke zur Schmerzreduktion"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Krankengymnastik",
          "description": "Krankengymnastische Übungsbehandlung nach ärztlicher Verordnung"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Sportphysiotherapie",
          "description": "Behandlung und Rehabilitation von Sportverletzungen"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Massagetherapie",
          "description": "Klassische und tiefengewebliche Massagen zur Muskelentspannung"
        }
      }
    ]
  }
}

Beispiel 2: Handwerksbetrieb mit Preisangaben

Handwerksbetriebe können mit OfferCatalog ihre Dienstleistungen strukturieren und — sofern Festpreise existieren — sogar Preise angeben. Das erhöht die Klickrate, weil Nutzer bereits in der Suche einen Preishinweis sehen können.

{
  "@context": "https://schema.org",
  "@type": "HomeAndConstructionBusiness",
  "name": "Maler Müller GmbH",
  "url": "https://maler-mueller-beispiel.de",
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Malerleistungen",
    "itemListElement": [
      {
        "@type": "Offer",
        "name": "Innenraumgestaltung",
        "description": "Streichen und Tapezieren von Wohnräumen, inkl. Untergrundvorbereitung",
        "price": "18.00",
        "priceCurrency": "EUR",
        "description": "Preis pro Quadratmeter, inkl. Material"
      },
      {
        "@type": "Offer",
        "name": "Fassadenanstrich",
        "description": "Außenanstrich mit wetterfesten Farben, 10 Jahre Garantie auf Materialfehler",
        "url": "https://maler-mueller-beispiel.de/leistungen/fassade"
      },
      {
        "@type": "Offer",
        "name": "Fliesenlegen",
        "description": "Verlegen von Wand- und Bodenfliesen in Bad, Küche und Wohnbereich",
        "price": "45.00",
        "priceCurrency": "EUR"
      }
    ]
  }
}
Profi-Tipp: Preise nur angeben wenn korrekt
Falsche oder veraltete Preisangaben im Schema Markup schaden deiner Glaubwürdigkeit bei Google. Verwende price nur, wenn der Preis tatsächlich feststeht. Für variable Preise nutze stattdessen description mit einer Erklärung ("ab X Euro", "Preis auf Anfrage").

Beispiel 3: Restaurant mit Speisekategorien

Restaurants können OfferCatalog nutzen, um Speisekategorien zu strukturieren. Das ist besonders sinnvoll in Kombination mit dem FoodEstablishment-Typ.

{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Trattoria Bella Vista",
  "url": "https://bella-vista-beispiel.de",
  "servesCuisine": ["Italienisch", "Mediterran"],
  "hasOfferCatalog": [
    {
      "@type": "OfferCatalog",
      "name": "Vorspeisen",
      "itemListElement": [
        {
          "@type": "Offer",
          "name": "Bruschetta al Pomodoro",
          "description": "Geröstetes Weißbrot mit frischen Tomaten, Knoblauch und Basilikum",
          "price": "6.50",
          "priceCurrency": "EUR"
        },
        {
          "@type": "Offer",
          "name": "Caprese",
          "description": "Büffelmozzarella mit Tomaten und frischem Basilikum",
          "price": "8.90",
          "priceCurrency": "EUR"
        }
      ]
    },
    {
      "@type": "OfferCatalog",
      "name": "Pasta",
      "itemListElement": [
        {
          "@type": "Offer",
          "name": "Spaghetti Carbonara",
          "description": "Spaghetti mit Guanciale, Pecorino, Ei und schwarzem Pfeffer",
          "price": "14.50",
          "priceCurrency": "EUR"
        }
      ]
    }
  ]
}

Beachte: Für Restaurants ist mehrfaches OfferCatalog möglich — pro Speisekategorie ein eigenes Catalog-Objekt. Das hasOfferCatalog-Property akzeptiert auch ein Array.

OfferCatalog in ein vollständiges LocalBusiness-Schema einbetten

In der Praxis steht OfferCatalog nie allein — es ist Teil eines umfassenden LocalBusiness Schema Markups. Hier ein vollständiges Beispiel für einen Steuerberater:

{
  "@context": "https://schema.org",
  "@type": "AccountingService",
  "name": "Steuerberatung Hoffmann",
  "url": "https://steuerberatung-hoffmann-beispiel.de",
  "telephone": "+49 30 1234567",
  "email": "info@steuerberatung-hoffmann-beispiel.de",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Unter den Linden 10",
    "addressLocality": "Berlin",
    "postalCode": "10117",
    "addressCountry": "DE"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
      "opens": "08:30",
      "closes": "17:30"
    }
  ],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Steuerberatungsleistungen",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Einkommensteuererklärung",
          "description": "Erstellung und Einreichung der jährlichen Einkommensteuererklärung für Privatpersonen"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Körperschaftsteuererklärung",
          "description": "Steuerliche Beratung und Erklärung für GmbH, UG und AG"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Buchführung",
          "description": "Laufende Buchführung und Jahresabschluss für kleine und mittlere Unternehmen"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Lohnbuchhaltung",
          "description": "Erstellung von Gehaltsabrechnungen und Meldungen an Sozialversicherungsträger"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Steuerliche Beratung bei Unternehmensverkauf",
          "description": "Beratung bei Share Deals und Asset Deals, steuerliche Optimierung beim Unternehmensverkauf"
        }
      }
    ]
  }
}

Mehrere OfferCatalogs für verschiedene Leistungsbereiche

Unternehmen mit mehreren klar getrennten Leistungsbereichen — z.B. eine Werbeagentur mit den Bereichen SEO, Social Media und Webdesign — können mehrere OfferCatalog-Objekte verwenden. hasOfferCatalog akzeptiert sowohl ein einzelnes Objekt als auch ein Array:

"hasOfferCatalog": [
  {
    "@type": "OfferCatalog",
    "name": "SEO-Leistungen",
    "itemListElement": [
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Technisches SEO Audit" } },
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "OnPage-Optimierung" } }
    ]
  },
  {
    "@type": "OfferCatalog",
    "name": "Social Media",
    "itemListElement": [
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Community Management" } },
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Paid Social Kampagnen" } }
    ]
  },
  {
    "@type": "OfferCatalog",
    "name": "Webdesign",
    "itemListElement": [
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "WordPress-Entwicklung" } },
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "UX/UI Design" } }
    ]
  }
]

OfferCatalog vs. Alternativen: Wann welches Schema?

OfferCatalog ist nicht immer die beste Wahl. Hier eine Übersicht, wann du welches Schema bevorzugen solltest:

Schema-Typ Einsatzszenario Besonderheit
OfferCatalog Dienstleistungslisten bei Unternehmen Teil von LocalBusiness/Organization; kein eigenständiges Rich Result
Product Einzelne physische Produkte im Shop Eigenständiges Rich Result mit Preis, Bewertung, Verfügbarkeit
Service Einzelne Dienstleistung mit Detailseite Kann eigenständig verwendet werden, nicht nur im Katalog
ItemList Allgemeine Listen (z.B. Top-10-Listen) Übertyp von OfferCatalog; für Content-Seiten geeignet
Menu Restaurant-Speisekarten Spezieller Subtyp; besser für Restaurants als OfferCatalog
Wichtig: Kein eigenständiges Rich Result
OfferCatalog erzeugt keine eigenständigen Rich Results wie FAQ oder How-To. Es verbessert das semantische Verständnis von Google und kann indirekt das Knowledge Panel und die Relevanz für Suchanfragen beeinflussen — ist aber kein direktes "Rich Snippet"-Format.

Häufige Fehler bei der OfferCatalog-Implementierung

1. Fehlende Verbindung zur übergeordneten Entität

OfferCatalog ohne hasOfferCatalog-Verknüpfung zu einem LocalBusiness oder einer Organization ist wirkungslos. Es muss immer als Property eines anderen Objekts eingebunden werden.

2. Zu generische Angebotsnamen

Angebotsnamen wie "Service 1" oder "Leistung A" bringen keinen SEO-Mehrwert. Nutze die konkreten, keyword-relevanten Bezeichnungen, die deine Kunden auch bei Google eingeben würden.

3. Veraltete Preisangaben

Wenn Preise im Schema Markup nicht mit den Preisen auf der Website übereinstimmen, kann Google dies als Fehlinformation werten. Verzichte im Zweifel auf Preisangaben oder aktualisiere sie regelmäßig.

4. Angebote ohne Beschreibung

Ein Offer-Objekt mit nur einem name ist zwar valide, aber kaum nützlich. Ergänze immer eine description, die den Nutzen und die Besonderheit des Angebots beschreibt.

5. OfferCatalog für Produkte im E-Commerce

Für Online-Shops ist Product mit Offer das richtige Schema — nicht OfferCatalog. OfferCatalog ist primär für Dienstleistungsunternehmen gedacht, die kein direktes E-Commerce-System betreiben.

Schritt-für-Schritt: OfferCatalog implementieren

  1. Leistungen dokumentieren: Liste alle Dienstleistungen oder Produkte auf, die du anbieten möchtest. Nutze dabei die Begriffe, die deine Kunden verwenden.
  2. Kategorien bilden: Gruppiere ähnliche Leistungen zu Katalogen (z.B. "Behandlungen", "Kurse", "Pakete").
  3. JSON-LD erstellen: Schreibe das OfferCatalog-Schema in das LocalBusiness- oder Organization-Schema ein.
  4. In den <head> einbinden: Füge das JSON-LD als <script type="application/ld+json"> in den HTML-Kopf ein.
  5. Validieren: Prüfe das Schema mit dem JSON-LD Validator auf Fehler.
  6. Auf Konsistenz prüfen: Stelle sicher, dass alle genannten Leistungen auch auf der Website beschrieben werden.
Schema-Generator nutzen:
Du möchtest OfferCatalog-Markup ohne manuelles Tippen erstellen? Der Schema-Markup-Generator für lokale Unternehmen von Shift07 hilft dir dabei, ein vollständiges LocalBusiness-Schema inklusive Öffnungszeiten, Kontaktdaten und Leistungsverzeichnis zu generieren.

OfferCatalog testen und überwachen

Nach der Implementierung solltest du das Schema testen:

Konkrete Signale, die auf eine erfolgreiche Implementierung hindeuten: Wenn dein Business im Knowledge Panel erscheint und Google dort spezifische Leistungen auflistet, hat das Markup gewirkt. Das kann mehrere Wochen dauern, da Google die Daten zunächst validieren muss.

OfferCatalog als Teil deiner Schema-Markup-Strategie

OfferCatalog ist am wirkungsvollsten, wenn es in Kombination mit anderen Schema-Typen verwendet wird. Die sinnvollste Kombinationsstrategie:

Diese Kombination ergibt ein vollständiges semantisches Profil, das Google alle nötigen Informationen liefert, um dein Unternehmen korrekt zu verstehen und in relevanten Suchergebnissen zu platzieren. Eine ausführliche Anleitung zu strukturierten Daten als Gesamtstrategie findest du in unserem Artikel über Structured Data für SEO.

Zusammenfassung

OfferCatalog Schema Markup ist ein unterschätztes, aber effektives Werkzeug um Google zu erklären, was dein Unternehmen konkret anbietet. Es erzeugt zwar kein direktes Rich Snippet, verbessert aber das semantische Verständnis, stärkt lokale Relevanz-Signale und kann zu besserer Sichtbarkeit im Knowledge Panel führen.

Die Implementierung ist unkompliziert: OfferCatalog wird als hasOfferCatalog-Property in dein bestehendes LocalBusiness- oder Organization-Schema eingebettet. Jede Dienstleistung wird als Offer-Objekt mit Name, Beschreibung und optionalem Preis beschrieben.

Wer in Deutschland mit einem lokalen Unternehmen konkurriert, sollte OfferCatalog als festen Bestandteil seines technischen SEO-Setups betrachten — insbesondere in kombination mit dem LocalBusiness Schema Generator, der dir die manuelle Implementierung erheblich erleichtert.

Deine Website hat SEO-Probleme?

Analysiere deine Website kostenlos mit Shift07 — strukturierte Daten, Meta-Tags, Ladezeit und mehr.

Kostenlose SEO-Analyse starten