E-COMMERCE SEO 5 min leestijd

Product Schema

Schema.org markup specifiek voor producten die rich snippets met prijs en beschikbaarheid oplevert.

Bas Vermeer
Bas Vermeer SEO/AEO Specialist

Product schema is een type Schema.org — bibliotheekterm structured data — bibliotheekterm waarmee je productinformatie markeert: naam, beschrijving, prijs, beschikbaarheid, beoordelingen en afbeeldingen. Dit stelt zoekmachines in staat om rich snippets — bibliotheekterm te tonen in zoekresultaten.

Wat levert het op?

Correct geïmplementeerd product schema kan leiden tot rich results met sterbeoordelingen, prijs, beschikbaarheidsstatus en merchant-naam direct in de SERP — bibliotheekterm. Dit verhoogt de CTR significant vergeleken met gewone tekstresultaten.

Product schema en AI-shopping

AI-assistenten en shopping-features van zoekmachines gebruiken product schema om productaanbevelingen te genereren. Zonder structured data mis je een groeiend kanaal voor productzichtbaarheid. Google Merchant Center — bibliotheekterm integreert ook steeds meer met AI-gestuurde shopping-ervaringen.

Compleet Product JSON-LD codevoorbeeld

Hieronder een volledig Product schema met alle aanbevolen velden. Dit voorbeeld valideert in Google's Rich Results Test en bevat de meestvoorkomende eigenschappen die Google ondersteunt.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Nike Air Max 90 Hardloopschoenen",
  "description": "De Nike Air Max 90 combineert iconisch design met modern comfort. Zichtbare Air-demping in de hiel en duurzaam rubber op de buitenzool.",
  "image": [
    "https://www.example.nl/images/nike-air-max-90-1.jpg",
    "https://www.example.nl/images/nike-air-max-90-2.jpg",
    "https://www.example.nl/images/nike-air-max-90-3.jpg"
  ],
  "sku": "NAM90-WHT-42",
  "mpn": "CW7483-100",
  "gtin13": "1234567890123",
  "brand": {
    "@type": "Brand",
    "name": "Nike"
  },
  "color": "Wit/Zwart",
  "material": "Mesh, synthetisch leer",
  "offers": {
    "@type": "Offer",
    "url": "https://www.example.nl/nike-air-max-90",
    "priceCurrency": "EUR",
    "price": "139.99",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "name": "Example Sportshop"
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": "0.00",
        "currency": "EUR"
      },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": {
          "@type": "QuantitativeValue",
          "minValue": 0,
          "maxValue": 1,
          "unitCode": "DAY"
        },
        "transitTime": {
          "@type": "QuantitativeValue",
          "minValue": 1,
          "maxValue": 2,
          "unitCode": "DAY"
        }
      },
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "NL"
      }
    },
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "NL",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30,
      "returnMethod": "https://schema.org/ReturnByMail",
      "returnFees": "https://schema.org/FreeReturn"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "bestRating": "5",
    "worstRating": "1",
    "ratingCount": "312",
    "reviewCount": "187"
  },
  "review": [
    {
      "@type": "Review",
      "author": {
        "@type": "Person",
        "name": "Jan de Vries"
      },
      "datePublished": "2026-03-15",
      "reviewBody": "Uitstekende pasvorm en het comfort is geweldig voor dagelijks gebruik. Aanrader!",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5",
        "bestRating": "5"
      }
    }
  ]
}

Product met varianten (kleur/maat)

Voor producten met varianten zoals kleur of maat gebruik je een bovenliggend Product met meerdere Offers, of aparte ProductGroup met ProductModels. Hieronder de aanbevolen aanpak met meerdere Offers:

{
  "@context": "https://schema.org",
  "@type": "ProductGroup",
  "name": "Nike Air Max 90",
  "description": "De iconische Nike Air Max 90 in alle beschikbare kleuren en maten.",
  "url": "https://www.example.nl/nike-air-max-90",
  "brand": {
    "@type": "Brand",
    "name": "Nike"
  },
  "productGroupID": "NAM90",
  "variesBy": [
    "https://schema.org/color",
    "https://schema.org/size"
  ],
  "hasVariant": [
    {
      "@type": "Product",
      "name": "Nike Air Max 90 - Wit - Maat 42",
      "color": "Wit",
      "size": "42",
      "sku": "NAM90-WHT-42",
      "gtin13": "1234567890123",
      "image": "https://www.example.nl/images/nam90-wit.jpg",
      "offers": {
        "@type": "Offer",
        "priceCurrency": "EUR",
        "price": "139.99",
        "availability": "https://schema.org/InStock",
        "url": "https://www.example.nl/nike-air-max-90?kleur=wit&maat=42"
      }
    },
    {
      "@type": "Product",
      "name": "Nike Air Max 90 - Zwart - Maat 42",
      "color": "Zwart",
      "size": "42",
      "sku": "NAM90-BLK-42",
      "gtin13": "1234567890124",
      "image": "https://www.example.nl/images/nam90-zwart.jpg",
      "offers": {
        "@type": "Offer",
        "priceCurrency": "EUR",
        "price": "139.99",
        "availability": "https://schema.org/InStock",
        "url": "https://www.example.nl/nike-air-max-90?kleur=zwart&maat=42"
      }
    }
  ]
}

Veelgemaakte fouten bij Product Schema

  • Prijs als integer in plaats van string: gebruik "price": "139.99", niet "price": 139.99. Google verwacht een string.
  • Ontbrekende priceCurrency: zonder valutacode kan Google de prijs niet correct interpreteren.
  • Verkeerde availability-URL: gebruik de volledige Schema.org URL (https://schema.org/InStock), niet alleen "InStock".
  • Geen afbeelding: het image-veld is sterk aanbevolen. Zonder afbeelding is de kans op een rich result veel kleiner.
  • Verouderde prijzen: als de prijs op de pagina afwijkt van de prijs in de markup, kan Google de rich result intrekken of je een handmatige actie geven.
  • Fake reviews in markup: reviews in structured data moeten overeenkomen met daadwerkelijk zichtbare reviews op de pagina.
  • Ontbrekende gtin/mpn/sku: minstens een van deze identifiers is nodig voor optimale herkenning in Google Shopping.
  • Markup op niet-productpagina's: Product schema hoort alleen op pagina's waar het product daadwerkelijk te koop is.

Veelgestelde vragen

Welke velden zijn verplicht voor een Product rich result?

Google vereist minimaal name en image voor het Product-type. Voor een Offer binnen het product zijn price, priceCurrency en availability sterk aanbevolen. Voor een AggregateRating zijn ratingValue en ratingCount (of reviewCount) verplicht. Hoe meer aanbevolen velden je invult, hoe groter de kans op een rich result.

Mag ik Product Schema gebruiken als ik geen webshop heb?

Product Schema is bedoeld voor pagina's waar een product te koop wordt aangeboden. Als je een reviewsite of vergelijkingssite hebt, kun je beter het Review-type of een Product-type zonder Offer gebruiken. Google kan markup afwijzen als het product niet direct via de pagina te kopen is.

Hoe test ik of mijn Product Schema correct is?

Gebruik Google's Rich Results Test (search.google.com/test/rich-results) om te controleren of je markup geldig is en in aanmerking komt voor rich results. Gebruik daarnaast de Schema Markup Validator (validator.schema.org) voor een volledige syntaxcontrole.

Wat is het verschil tussen Product en ProductGroup?

Een Product beschrijft een enkel, specifiek product. Een ProductGroup (geintroduceerd in 2022) groepeert varianten van hetzelfde product, zoals verschillende kleuren of maten. Google raadt ProductGroup met hasVariant aan voor producten met meerdere varianten op een pagina.

Hoe vaak moet ik mijn Product Schema updaten?

Product Schema moet altijd overeenkomen met de actuele pagina-inhoud. Werk de markup bij wanneer de prijs, beschikbaarheid of beoordelingen veranderen. Bij dynamische webshops is het raadzaam de markup server-side te genereren zodat deze altijd actueel is. Google controleert regelmatig of markup en pagina-inhoud overeenkomen.

GERELATEERDE TERMEN

GERELATEERDE ARTIKELEN

Bas Vermeer
Bas Vermeer

SEO/AEO Specialist

Mijn carrière begon met het handmatig doorploegen van serverlogbestanden. Ik wilde begrijpen hoe Googlebot websites crawlt. Die fascinatie voor de technische kant van vindbaarheid? Nooit verdwenen. B...