Für Online-Shops ist Product Schema Markup einer der wichtigsten SEO-Hebel überhaupt. Mit dem richtigen Schema.org-Code kannst du Preis, Bewertungen, Verfügbarkeit und sogar Versandinformationen direkt in den Google-Suchergebnissen anzeigen lassen — als sogenannte Product Rich Snippets. Das macht deine Produktseiten im SERP sofort sichtbarer und erhöht die Klickrate messbar.
In diesem Artikel erfährst du, welche Felder Google für Product Rich Snippets auswertet, wie du ein vollständiges und gültiges JSON-LD-Schema schreibst, und welche Fehler dich von den Rich Snippets ausschließen können.
Was ist Product Schema Markup?
Product Schema Markup ist eine Form von strukturierten Daten, die dem Google-Crawler mitteilt: "Diese Seite beschreibt ein konkretes Produkt." Auf Basis dieser Informationen kann Google ein Product Rich Snippet generieren, das im Suchergebnis Bewertungssterne, Preis und Verfügbarkeit anzeigt — alles noch bevor der Nutzer klickt.
Das ist besonders wertvoll, weil Nutzer im Online-Handel sehr preissensibel sind. Wer den Preis direkt im Suchergebnis sieht, klickt häufiger — oder filtert unpassende Angebote aus, was die Absprungrate auf der Seite reduziert. Beides ist gut für dein SEO-Signal.
Google Product Rich Snippets: Was wird angezeigt?
Google zeigt je nach Datenlage verschiedene Elemente im Product Rich Snippet an:
- Bewertungssterne — Durchschnittsbewertung (1-5 Sterne) und Anzahl der Bewertungen
- Preis — Aktueller Preis mit Währung (z.B. 49,99 €)
- Verfügbarkeit — "Auf Lager", "Nicht verfügbar", "Vorbestellung möglich"
- Versandkosten — kostenloser Versand oder Preis (seit 2023)
- Rückgabe — Rückgabebedingungen (seit 2023)
Für das Google Shopping-Tab gibt es zusätzliche Anforderungen — dafür ist in der Regel der Google Merchant Center-Feed relevanter als das Schema Markup auf der Produktseite. Trotzdem verstärken beide sich gegenseitig.
Pflicht- und empfohlene Felder im Überblick
Pflichtfelder (ohne diese kein Rich Snippet)
- name — Produktname
- Mindestens eines von: review, aggregateRating oder offers
Das klingt wenig — aber Google ist bei Product Schema streng: Wenn du Bewertungssterne anzeigen willst, braucht du ein valides aggregateRating-Objekt. Wenn du den Preis anzeigen willst, braucht du ein valides offers-Objekt. Ohne diese Felder erscheint kein Rich Snippet.
Empfohlene Felder
- description — Produktbeschreibung
- image — Produktbild (min. 160px, empfohlen: quadratisch oder 16:9)
- brand — Marke des Produkts
- sku — Artikelnummer / SKU
- gtin13 / gtin8 / mpn — Globale Produktkennung (EAN, ISBN, MPN)
- url — URL der Produktseite
Vollständiges Beispiel: Einfaches Produkt mit Bewertungen
Hier ist ein vollständiges JSON-LD-Schema für ein einfaches Produkt mit Preis und Kundenbewertungen:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Ergonomischer Bürostuhl ProComfort 3000",
"description": "Hochwertig verarbeiteter Bürostuhl mit verstellbarer Lordosenstütze, Armlehnen und Kopfstütze. Geeignet für bis zu 8 Stunden Sitzen pro Tag.",
"image": [
"https://example.de/images/burostuhl-front.jpg",
"https://example.de/images/burostuhl-seite.jpg",
"https://example.de/images/burostuhl-detail.jpg"
],
"brand": {
"@type": "Brand",
"name": "ErgoSit GmbH"
},
"sku": "PC3000-BLK",
"gtin13": "4012345678901",
"mpn": "PC-3000",
"url": "https://example.de/produkte/burostuhl-procomfort-3000",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "143",
"bestRating": "5",
"worstRating": "1"
},
"offers": {
"@type": "Offer",
"url": "https://example.de/produkte/burostuhl-procomfort-3000",
"priceCurrency": "EUR",
"price": "389.00",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"seller": {
"@type": "Organization",
"name": "ErgoShop Online GmbH"
}
}
}
</script>
Preisangaben korrekt formulieren
Das offers-Objekt ist das Herzstück des Product Schema. Google liest hier Preis, Währung, Verfügbarkeit und Zustand aus. Achte auf diese Details:
Preis immer als Dezimalzahl
Der Preis muss als Dezimalzahl ohne Währungssymbol angegeben werden. Trennzeichen ist der Punkt, nicht das Komma:
"price": "49.99" ✅ korrekt
"price": "49,99" ❌ falsch
"price": "49,99 €" ❌ falsch
"price": 49.99 ✅ korrekt (Zahl ohne Anführungszeichen auch möglich)
priceValidUntil angeben
Das Feld priceValidUntil gibt an, bis wann der Preis gültig ist. Google bevorzugt Angebote mit diesem Feld — ohne Datum kann das Snippet schnell als "veraltet" eingestuft werden. Formatiere das Datum als ISO-8601-Datum: 2026-12-31.
Verfügbarkeit korrekt setzen
Für das availability-Feld gibt es folgende gültige Werte:
https://schema.org/InStock— Auf Lagerhttps://schema.org/OutOfStock— Nicht verfügbarhttps://schema.org/PreOrder— Vorbestellunghttps://schema.org/BackOrder— Nachbestellung möglichhttps://schema.org/Discontinued— Produkt eingestellthttps://schema.org/LimitedAvailability— Nur wenige vorrätighttps://schema.org/OnlineOnly— Nur online erhältlich
itemCondition: Neu oder gebraucht?
Für Marktplätze oder Händler mit gebrauchten Waren ist das itemCondition-Feld wichtig:
https://schema.org/NewCondition— Neuhttps://schema.org/UsedCondition— Gebrauchthttps://schema.org/RefurbishedCondition— Generalüberholthttps://schema.org/DamagedCondition— Beschädigt
Mehrere Angebote (verschiedene Händler oder Varianten)
Wenn ein Produkt von mehreren Händlern angeboten wird oder verschiedene Varianten (Farben, Größen) hat, kannst du mehrere Offer-Objekte als Array angeben. Google wertet alle aus und kann die günstigsten oder relevantesten Preise anzeigen:
"offers": [
{
"@type": "Offer",
"priceCurrency": "EUR",
"price": "389.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"name": "Farbe: Schwarz"
},
{
"@type": "Offer",
"priceCurrency": "EUR",
"price": "399.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"name": "Farbe: Grau"
},
{
"@type": "Offer",
"priceCurrency": "EUR",
"price": "289.00",
"availability": "https://schema.org/LimitedAvailability",
"itemCondition": "https://schema.org/UsedCondition",
"name": "Gebraucht — guter Zustand"
}
]
Bewertungen und AggregateRating richtig einbinden
Bewertungssterne sind das sichtbarste Element in einem Product Rich Snippet. Das aggregateRating-Objekt fasst alle Nutzerbewertungen zusammen:
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "143",
"bestRating": "5",
"worstRating": "1"
}
Wichtige Hinweise zu Bewertungen:
- reviewCount vs. ratingCount:
reviewCountzählt Textbewertungen,ratingCountzählt alle Bewertungen (auch ohne Text). Wenn du beides hast, nutze beide Felder. - Keine erfundenen Bewertungen: Bewertungen müssen echt sein und von Nutzern stammen. Erfundene Sternebewertungen verstoßen gegen Googles Spam-Richtlinien und können zur Abstrafung führen.
- Keine Eigenbewertungen: Du darfst deine eigenen Produkte nicht selbst bewerten und das als
aggregateRatingausweisen.
Wenn du individuelle Bewertungen (nicht nur die Zusammenfassung) einbinden willst, kannst du diese als review-Array angeben:
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"name": "Perfekter Bürostuhl für lange Arbeitstage",
"author": {
"@type": "Person",
"name": "Michael S."
},
"datePublished": "2026-02-14",
"reviewBody": "Seit drei Monaten im Einsatz und mein Rücken hat sich deutlich erholt. Sehr zu empfehlen!"
}
]
Versand und Rückgabe: Die neuen Felder seit 2023
Google hat das Product Schema 2023 um wichtige E-Commerce-Felder erweitert. Wer Versandkosten und Rückgabebedingungen direkt in den Suchergebnissen anzeigen will, kann diese nun mit Schema Markup hinterlegen:
Versandkosten (shippingDetails)
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "EUR"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "DE"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 1,
"maxValue": 3,
"unitCode": "DAY"
}
}
}
Rückgabebedingungen (hasMerchantReturnPolicy)
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "DE",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
Für returnPolicyCategory gibt es diese Werte:
MerchantReturnFiniteReturnWindow— Rückgabe innerhalb einer bestimmten Frist (dannmerchantReturnDaysangeben)MerchantReturnUnlimitedWindow— Unbegrenzte RückgabemöglichkeitMerchantReturnNotPermitted— Keine Rückgabe möglich
Produktvarianten und Produktgruppen
Viele Online-Shops haben Produkte mit Varianten (z.B. T-Shirt in verschiedenen Größen und Farben). Hier empfehlen sich zwei Ansätze:
Ansatz 1: ProductGroup
Du kannst den Typ ProductGroup verwenden, der mehrere Varianten als hasVariant-Array zusammenfasst. Das ist ideal für Elternseiten, die alle Varianten eines Produkts listen:
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Basic T-Shirt — Shift07 Edition",
"description": "Qualitativ hochwertiges T-Shirt aus 100% Bio-Baumwolle.",
"url": "https://example.de/shirts/basic-tshirt",
"brand": { "@type": "Brand", "name": "Shift07 Merch" },
"productGroupID": "BASIC-TSHIRT",
"variesBy": ["https://schema.org/color", "https://schema.org/size"],
"hasVariant": [
{
"@type": "Product",
"name": "Basic T-Shirt — Weiß, M",
"sku": "TSHIRT-WHT-M",
"color": "Weiß",
"size": "M",
"offers": {
"@type": "Offer",
"price": "24.99",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Basic T-Shirt — Schwarz, XL",
"sku": "TSHIRT-BLK-XL",
"color": "Schwarz",
"size": "XL",
"offers": {
"@type": "Offer",
"price": "24.99",
"priceCurrency": "EUR",
"availability": "https://schema.org/LimitedAvailability"
}
}
]
}
Ansatz 2: Eigenes Schema pro Variantenseite
Wenn jede Variante eine eigene URL hat, schreibe für jede Variantenseite ein separates Product-Schema. Das ist einfacher zu pflegen und wird von Google zuverlässiger verarbeitet.
Typische Fehler bei Product Schema Markup
Diese Fehler verhindern das Erscheinen von Product Rich Snippets am häufigsten:
- Preis stimmt nicht mit der Seite überein — Das ist der kritischste Verstoß. Wenn das Schema 49,99 € angibt, die Seite aber 59,99 € zeigt, bestraft Google das sofort.
- Falsch formatierter Preis — Komma statt Punkt, oder Währungssymbol im Preis.
- aggregateRating ohne reviewCount oder ratingCount — Google braucht eine Angabe, wie viele Bewertungen die Durchschnittsbewertung stützen.
- ratingValue außerhalb von bestRating/worstRating — Wenn
bestRating: 5undratingValue: 4.8, dann mussworstRating: 1auch gesetzt sein. - Kein Bild angegeben — Product Rich Snippets erscheinen häufiger und prominenter, wenn ein Bild im Schema hinterlegt ist.
- priceValidUntil in der Vergangenheit — Wenn das Datum abgelaufen ist, ignoriert Google das Preisfeld.
- Bewertungen auf Kategorie- oder Listenpreisseiten — Aggregierte Bewertungen dürfen nur auf einzelnen Produktseiten stehen, nicht auf Seiten die viele Produkte listen.
Product Schema und Google Merchant Center
Product Schema Markup auf der Website und der Google Merchant Center-Feed sind zwei verschiedene Dinge, die sich aber ergänzen. Das Schema Markup beeinflusst die organischen Suchergebnisse (die regulären Google-Ergebnisse). Der Merchant Center-Feed steuert die Shopping-Anzeigen und Shopping-Tab-Einträge.
Wenn du beide pflegst und die Daten konsistent hält, vertraut Google deinen Produktdaten deutlich mehr — das kann sich positiv auf die Sichtbarkeit in beiden Bereichen auswirken. Achte darauf, dass Preise, Produktnamen und Verfügbarkeiten in beiden Quellen identisch sind.
Product Schema validieren
Bevor du Product Schema live schaltest, validiere es unbedingt:
- Google Rich Results Test — Zeigt an, ob ein Product Rich Snippet generiert wird und welche Felder erkannt wurden. Nutze unseren JSON-LD Validator für eine schnelle Browser-Prüfung.
- Schema Markup Validator (validator.schema.org) — Prüft die Konformität mit Schema.org-Standard.
- Google Search Console → Verbesserungen → Produkte — Zeigt Fehler bei bereits indizierten Produktseiten an.
Vollständige Product Schema Checkliste
Nutze diese Checkliste für jede neue Produktseite in deinem Shop:
- ✅
namestimmt exakt mit dem Produktnamen auf der Seite überein - ✅
imagemit mindestens einer hochwertigen Produktabbildung - ✅
offersmit korrektem Preis (Punkt als Dezimaltrennzeichen), Währung und Verfügbarkeit - ✅
priceValidUntilmit zukünftigem Datum - ✅
availabilitystimmt mit dem tatsächlichen Lagerbestand überein - ✅
itemConditionangegeben (neu/gebraucht) - ✅
aggregateRatingmit echten Kundenbewertungen (wenn vorhanden) - ✅
brandmit Herstellername - ✅
skuund/odergtin13/mpn - ✅ Schema-Daten stimmen zu 100% mit sichtbarem Seiteninhalt überein
- ✅ Validierung mit Google Rich Results Test bestanden
- ✅ Google Search Console auf Fehler prüfen (nach Indexierung)
Product Schema Markup ist einer der wenigen SEO-Hebel, der im E-Commerce einen direkten und messbaren Effekt auf die Klickrate hat. Die Implementierung ist einmalig — und die Sichtbarkeit zahlt sich langfristig aus.
Weitere Schema-Markup-Guides findest du in unserer Reihe: Event Schema Markup, FAQPage Schema, Article Schema und LocalBusiness Schema. Validiere dein Schema mit unserem kostenlosen JSON-LD Validator oder erstelle es von Grund auf mit dem Review Schema Generator.