Produktseiten und strukturierte Daten für Shops
Kurz gesagt
Für eine Produktseite reicht Product-Markup nach schema.org mit dem Feld name und mindestens einem der Felder review, aggregateRating oder offers; ein Offer trägt den Preis als Zahl über price oder alternativ über eine priceSpecification mit verschachteltem price; die Währung steht dann in priceSpecification.priceCurrency, sonst in priceCurrency. Für Product-Snippets ist die Währung empfohlen, für Merchant Listings Pflicht. Sollen die Produkte direkt über die Seite kaufbar sein und als Merchant Listing erscheinen, kommen image und ein Preis über null hinzu. Alle Angaben müssen sichtbar auf der Seite stehen; Teilnahmeberechtigung heißt nicht, dass Google das angereicherte Ergebnis auch anzeigt. Stand der Googledokumentation: 8. September 2026.
Das Wichtigste
- Google verlangt für Product-Snippets name plus mindestens eines der Felder review, aggregateRating oder offers.
- Ein Offer trägt den Preis als Zahl über price oder alternativ über eine priceSpecification mit verschachteltem price; die Währung gehört in priceCurrency oder, bei Preis über die priceSpecification, in priceSpecification.priceCurrency. Für Product-Snippets ist die Währung empfohlen, für Merchant Listings Pflicht.
- Merchant Listings verlangen zusätzlich image und einen aktiven Preis über null.
- Unterstützte Formate sind JSON-LD (von Google empfohlen), Microdata und RDFa.
- Nicht sichtbarer Seiteninhalt darf nicht ausgezeichnet werden; das Markup muss den Seiteninhalt korrekt wiedergeben.
- Google garantiert nach den allgemeinen Richtlinien nicht, dass ein korrekt ausgezeichnetes Produkt auch als angereichertes Ergebnis erscheint.
Strukturierte Daten für Produkte sind Zeilen im Quelltext einer Produktseite, die Name, Preis, Verfügbarkeit und Bewertungen maschinenlesbar machen. Google unterscheidet zwei Ergebnisse: den Product-Snippet, der einen Texttreffer mit Preis und Bewertung anreichert, und das Merchant Listing für Seiten, auf denen Kundinnen und Kunden direkt kaufen. Diese Anleitung führt von den Pflichtfeldern über ein Markup-Beispiel bis zur Prüfung in der Search Console. Einordnung in die gesamte Suchmaschinenarbeit liefert SEO für Onlineshops: Grundlagen und Prioritäten.
Was Sie vorab brauchen
- Zugang zu der Vorlage, aus der Ihre Produktseiten erzeugt werden, im Shopsystem oder im Theme
- je Produkt: Name, Preis, Währung, Lieferbarkeit, Bildadresse, Marke und, soweit vorhanden, Artikelnummern (GTIN/EAN, MPN, SKU)
- Klarheit, ob die Seite einen direkten Kauf ermöglicht oder das Produkt nur präsentiert
- Zugang zum Rich Results Test von Google und zur Search Console Ihrer Domain
Schritt für Schritt: Product-Markup einbauen
Schritt 1: Festlegen, welches Ergebnis Sie erreichen wollen
Google unterscheidet Product-Snippets von Merchant Listings. Der Product-Snippet ist ein Textergebnis mit Produktangaben wie Preis, Verfügbarkeit und Bewertung; er setzt laut Dokumentation name und zusätzlich mindestens eines der Felder review, aggregateRating oder offers voraus. Das Merchant Listing zeigt Händlerangebote für Produkte, die über die Seite gekauft werden können; es verlangt name, image und ein Offer mit aktivem Preis über null. Wer die Pflichtangaben für Merchant Listings setzt, erfüllt damit nach Googles Angabe in der Regel auch die Voraussetzungen für den Product-Snippet. Das Markup bleibt dabei dasselbe schema.org-Vokabular um den Typ Product mit einem verschachtelten Typ Offer; der Unterschied liegt in den geforderten Feldern.
Schritt 2: Pflicht- und Empfehlungsfelder zusammenstellen
Die Tabelle fasst die Feldlisten aus der Googledokumentation zusammen, Stand 8. September 2026.
| Feld | Typ | Product-Snippet | Merchant Listing |
|---|---|---|---|
| name | Text | Pflicht | Pflicht |
| image | Bild-URL | nicht gefordert | Pflicht |
| review, aggregateRating oder offers | verschachtelte Typen | mindestens eines der drei | offers (als Offer, nicht AggregateOffer) |
| price (im Offer) | Zahl | Pflicht im Offer, als Zahl über price oder priceSpecification.price | Pflicht, Preis über null, als Zahl über price oder priceSpecification.price |
| priceSpecification (im Offer) | PriceSpecification beziehungsweise UnitPriceSpecification | alternativ, mit verschachteltem price | alternativ, mit verschachteltem price und priceCurrency |
| priceCurrency beziehungsweise priceSpecification.priceCurrency (im Offer) | Text | empfohlen | Pflicht |
| availability | Aufzählung | empfohlen | empfohlen |
| aggregateRating | AggregateRating | empfohlen | empfohlen |
| description | Text | nicht gefordert | ausdrücklich empfohlen |
| brand.name, gtin, mpn, sku, itemCondition | Text, Aufzählung | nicht gefordert | empfohlen |
Diese Angaben aus der Dokumentation gehören dazu. Den Preis trägt das Offer als Zahl über price; alternativ kann er in einer priceSpecification verschachtelt stehen, die im Product-Snippet vom Typ PriceSpecification und im Merchant Listing vom Typ UnitPriceSpecification ist. Setzt man beide Angaben ein, verwendet Google den Wert aus offers.price und ignoriert die priceSpecification. Wird der Preis über die priceSpecification übergeben, gehört beim Merchant Listing auch die Währung in das Preisobjekt, als priceSpecification.priceCurrency; andernfalls steht priceCurrency direkt im Offer. priceValidUntil trägt ein Datum im ISO-8601-Format; liegt es in der Vergangenheit, zeigt Google das Snippet unter Umständen nicht an. Ein AggregateOffer mit lowPrice und priceCurrency steht für ein Produkt mit mehreren Anbietern, nicht für Varianten. priceCurrency ist für Product-Snippets zurzeit empfohlen und für Merchant Listings Pflicht; Google rät, es immer anzugeben.
Schritt 3: Das Markup-Beispiel anpassen
Das folgende JSON-LD-Beispiel zeigt eine Produktseite mit Kaufmöglichkeit; alle Werte sind erfunden und durch Ihre Daten zu ersetzen. Die Pflichtfelder für beide Ergebnisse sind name, image und ein Offer mit Preis und Währung; den Preis tragen Sie als Zahl über price ein oder alternativ über eine priceSpecification mit verschachteltem price; die Währung steht dann in priceSpecification.priceCurrency, bei Preis über price direkt im Offer in priceCurrency, weil Merchant Listings sie verlangen. Die übrigen Felder sind die von Google empfohlenen Ergänzungen.
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Trinkflasche Edelstahl 750 ml",
"image": [
"https://beispiel-shop.example/bilder/flasche-1x1.jpg",
"https://beispiel-shop.example/bilder/flasche-16x9.jpg"
],
"description": "Isolierflasche aus Edelstahl mit Schraubdeckel, 750 Milliliter, spülmaschinenfest.",
"sku": "TF-750-ED",
"gtin13": "4000000000017",
"brand": {
"@type": "Brand",
"name": "Beispielmarke"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.6,
"reviewCount": 128
},
"offers": {
"@type": "Offer",
"url": "https://beispiel-shop.example/produkt/trinkflasche-750/",
"price": 24.9,
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"priceValidUntil": "2026-12-31"
}
}
Drei Stellen verdienen Sorgfalt. gtin13 und sku gehören nur in das Markup, wenn Ihr Produkt sie wirklich trägt; Google verlangt für GTINs die reine Ziffernform. availability nimmt genau einen Wert aus der Dokumentationsliste an, zum Beispiel InStock oder OutOfStock. Das aggregateRating gibt nur aus, was Ihre Seite auch tatsächlich als Bewertung zeigt. Rezensionen oder Bewertungen, die nicht von tatsächlichen Nutzern stammen, können nach den allgemeinen Richtlinien zu einer manuellen Maßnahme führen; gefälschte Bewertungen nennt sie als Beispiel für irreführende Inhalte, die nicht ausgezeichnet werden dürfen.
Schritt 4: Das Markup in die Produktseite einbauen
Tragen Sie das Script-Element mit dem JSON-LD in die Vorlage ein, aus der alle Produktseiten erzeugt werden, so dass jede Seite ihre eigenen Werte erhält. Die allgemeinen Richtlinien von Google verlangen, dass das Markup auf der Seite steht, die es beschreibt; bei duplizierten Seiten empfehlen sie, dieselben strukturierten Daten auf alle Duplikate zu setzen, nicht nur auf die kanonische Seite. Nicht sichtbarer Seiteninhalt darf nicht ausgezeichnet werden; der Seitentext muss dieselben Angaben zeigen wie das Markup.
Schritt 5: Das Ergebnis testen
Prüfen Sie zunächst einzelne Seiten im Rich Results Test von Google. Kritische Fehler beheben Sie, bevor Sie ausliefern; Warnungen, zum Beispiel ein Offer ohne review oder aggregateRating, sind laut Dokumentation nicht teilnahmeblockierend. Danach prüfen Sie mit dem URL-Prüftool in der Search Console, wie Google die Seite sieht, und stellen sicher, dass robots.txt, noindex oder Zugangsbeschränkungen die Seite nicht blockieren. Für eine erneute Durchsuchung können Sie das Recrawlen anstoßen oder eine Sitemap einreichen.
Schritt 6: Die Entwicklung in der Search Console beobachten
Nach der Indexierung zeigt der Rich-Result-Statusbericht in der Search Console, wie viele Seiten gültige Produktdaten tragen und wo Fehler auftreten. Google weist in der Dokumentation darauf hin, dass die Durchsuchung mehrere Tage dauern kann. Die Erfüllung der Pflichtfelder macht eine Seite nur teilnahmeberechtigt; nach den allgemeinen Richtlinien garantiert Google nicht, dass ein im Rich Results Test fehlerfreies Markup auch als angereichertes Ergebnis erscheint. Kontrollzeitpunkte sind nach der ersten Auslieferung, nach jedem Template-Wechsel und in periodischen Abständen. Einzelheiten zum Crawling und zur Indexierung behandelt Technisches SEO für Shops: Crawling und Indexierung prüfen.
Wenn etwas nicht klappt
| Symptom | Ursache | Lösung |
|---|---|---|
| Test meldet fehlendes Pflichtfeld | name oder eines der drei Alternativfelder review, aggregateRating, offers fehlt | fehlendes Feld ergänzen |
| Test meldet einen Fehler am Offer | der Preis über price oder priceSpecification.price fehlt; beim Merchant Listing zusätzlich, weil dort die Währung fehlt (priceCurrency oder priceSpecification.priceCurrency) oder der Preis bei null liegt | Preis setzen und, beim Merchant Listing, Währung ergänzen, Preis über null prüfen |
| Merchant Listing erscheint nicht | image fehlt oder im Offer steht ein AggregateOffer statt eines Offer | Bild-URL ergänzen, einzelnes Offer verwenden |
| Snippet zeigt den Preis nicht | priceValidUntil liegt in der Vergangenheit | Datum auf den aktuellen Aktionszeitraum setzen |
| Markup ist gültig, es erscheint aber kein angereichertes Ergebnis | Indexierung läuft noch, das Markup beschreibt nicht sichtbare Seiteninhalte, oder Google zeigt trotz teilnahmeberechtigtem Markup kein angereichertes Ergebnis an | einige Tage abwarten, Sichtbarkeit der Angaben im Seitentext prüfen; Teilnahmeberechtigung und tatsächliche Anzeige auseinanderhalten, eine Anzeige ist nicht garantiert |
Wann Sie Hilfe holen sollten
Wenn das Markup trotz gültigen Tests nicht ankommt, prüfen Sie zuerst, ob Ihre Vorlage die Werte aus dem Shopsystem überhaupt an alle Produktseiten übergibt; leere Felder im Quelltext zeigen das unmittelbar. Bei generiertem Markup durch JavaScript hilft die Googledokumentation zum Erzeugen strukturierte Daten mit JavaScript weiter. Für die Integration in ein konkretes Shopsystem ist der Support des Anbieters der richtige Ansprechpartner. Bewertungen selbst aufzubauen und auszugeben ist ein eigener Schritt; dazu behandelt Kundenbewertungen sammeln und anzeigen den Ablauf, und Bewertungssterne in der Suche: Markup richtig einsetzen zeigt das zugehörige Review-Markup.