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.
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.
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.
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
| 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 |
| 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 |
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"
}
}
]
}
}
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"
}
]
}
}
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").
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.
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"
}
}
]
}
}
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 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 |
OfferCatalog ohne hasOfferCatalog-Verknüpfung zu einem LocalBusiness oder einer Organization ist wirkungslos. Es muss immer als Property eines anderen Objekts eingebunden werden.
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.
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.
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.
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.
<head> einbinden: Füge das JSON-LD als <script type="application/ld+json"> in den HTML-Kopf ein.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 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.
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.
Analysiere deine Website kostenlos mit Shift07 — strukturierte Daten, Meta-Tags, Ladezeit und mehr.
Kostenlose SEO-Analyse starten