Balisage Product et Offer : comment faire remonter vos fiches produits dans les résultats enrichis
Publié le 31 août 2026

Les données structurées Product et Offer sont le code JSON-LD qui indique à Google le nom, le prix, la disponibilité et les avis d'un article vendu sur votre site. Correctement implémentées, elles permettent d'afficher ces informations directement dans les résultats de recherche, sous forme de fiche enrichie avec le prix, la mention « En stock » et les étoiles d'évaluation. Sans elles, votre page reste un simple lien bleu face à des concurrents qui affichent leur tarif.
Voici comment structurer ce balisage correctement, quelles propriétés Google attend réellement, et comment vérifier que tout est pris en compte.
Ce que le balisage Product change concrètement
Une fiche produit balisée peut être éligible à deux familles d'affichages. D'abord les extraits enrichis produit dans les résultats classiques : prix, devise, état du stock, note moyenne et nombre d'avis. Ensuite les fiches marchandes (merchant listings), qui alimentent les modules d'achat et les onglets shopping de Google sans passer par un flux produit.
L'intérêt n'est pas seulement esthétique. Un utilisateur qui voit le prix avant de cliquer arrive sur votre page en connaissance de cause : le taux de clic augmente sur les requêtes transactionnelles, et le taux de rebond diminue. Autre bénéfice, plus discret : les moteurs de réponse génératifs s'appuient sur des données explicitement typées pour citer un produit, sa marque et son tarif. Un balisage propre rend votre catalogue lisible par les machines, pas seulement par les humains.
Product et Offer : deux blocs, deux rôles
La confusion la plus fréquente vient de là. Product décrit l'objet : ce qu'il est, à quoi il ressemble, qui le fabrique. Offer décrit les conditions de vente : combien il coûte, dans quelle devise, s'il est disponible, jusqu'à quand ce prix est valable. Un même produit peut porter plusieurs offres, par exemple neuf et reconditionné.
Les propriétés Product à renseigner
- name : le nom exact affiché sur la page, sans slogan marketing ajouté.
- image : une ou plusieurs URL absolues, en haute résolution. Privilégiez plusieurs ratios (1:1, 4:3, 16:9).
- description : un résumé factuel, distinct du texte de la page si celui-ci contient du HTML.
- sku et gtin13 (ou gtin8, gtin14, mpn) : les identifiants. Le GTIN est ce qui permet à Google de rapprocher votre fiche des autres offres du même article. Sur un produit fabriqué en interne sans code-barres, indiquez le SKU et la marque.
- brand : un objet de type
Brandavec sonname. - aggregateRating et review : uniquement si les avis proviennent réellement d'acheteurs et sont visibles sur la page.
Les propriétés Offer qui déclenchent l'affichage
- price et priceCurrency : le prix en chiffres, sans symbole ni espace de milliers, et le code ISO de la devise (EUR, CHF, CAD).
- availability : une URL de vocabulaire, par exemple
https://schema.org/InStock,OutOfStock,PreOrderouBackOrder. - priceValidUntil : utile sur les promotions à durée déterminée. Une date passée fait disparaître l'extrait enrichi, donc mettez-la à jour ou omettez-la.
- url : l'URL canonique de la fiche, variante comprise.
- shippingDetails et hasMerchantReturnPolicy : frais de port et conditions de retour. Ces deux propriétés conditionnent les affichages enrichis les plus complets, notamment la mention de livraison gratuite.
- itemCondition : indispensable dès que vous vendez du reconditionné ou de l'occasion.
Un exemple de JSON-LD lisible
Ce bloc se place dans un script de type application/ld+json, de préférence dans le head de la fiche produit :
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Sac à dos randonnée 30 L",
"image": ["https://exemple.fr/img/sac-30l-1x1.jpg"],
"description": "Sac à dos technique 30 litres, dos ventilé, housse de pluie intégrée.",
"sku": "SAC-30L-BLU",
"gtin13": "0123456789012",
"brand": { "@type": "Brand", "name": "Exemple Outdoor" },
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "87"
},
"offers": {
"@type": "Offer",
"url": "https://exemple.fr/sac-a-dos-30l",
"price": "129.00",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
Remarquez la simplicité : pas de propriété inutile, aucune valeur qui n'existe pas sur la page. C'est la règle d'or du balisage.
Les erreurs qui font échouer le balisage
Le prix du code ne correspond pas au prix affiché. C'est l'erreur numéro un, souvent liée à un cache ou à une promotion appliquée côté client en JavaScript. Google considère cela comme une donnée trompeuse et peut retirer l'éligibilité aux résultats enrichis.
Des avis inventés ou auto-attribués. Un site qui se note lui-même, ou qui agrège des notes provenant d'ailleurs sans qu'elles figurent sur la page, s'expose à une action manuelle. Les avis doivent être collectés auprès de clients réels et visibles pour l'internaute.
Un balisage Product sur une page de catégorie. Le type Product décrit un article précis. Sur une page listant vingt références, utilisez plutôt une liste d'éléments (ItemList) et laissez le balisage produit aux fiches individuelles.
Un stock jamais mis à jour. Afficher « En stock » sur un article épuisé dégrade l'expérience et finit par coûter la fiche enrichie. Le champ availability doit être dynamique, branché sur votre gestion de stock.
Deux balisages concurrents. Une extension SEO, un thème et un plugin e-commerce qui génèrent chacun leur bloc Product produisent des données contradictoires. Vérifiez le code source rendu et n'en gardez qu'un seul.
Tester, déployer, surveiller
Trois outils suffisent, et ils sont gratuits :
- Test des résultats enrichis de Google : vérifie l'éligibilité réelle aux affichages produit et signale les propriétés manquantes classées en erreurs ou avertissements.
- Schema Markup Validator : contrôle la conformité au vocabulaire schema.org, indépendamment des exigences de Google.
- Google Search Console : les rapports « Extraits d'avis » et « Fiches marchandes » remontent les erreurs à l'échelle du catalogue entier, ce qu'aucun test unitaire ne fait.
Méthode recommandée : testez d'abord sur trois URL représentatives (un produit simple, un produit à variantes, un produit en rupture), déployez ensuite sur le catalogue, puis revenez dans la Search Console une à deux semaines plus tard. Les avertissements ne bloquent pas l'affichage, mais chacun d'eux réduit la richesse de l'extrait affiché. Traitez-les par ordre de volume d'URL concernées.
Variantes, ruptures et cas particuliers
Pour un produit décliné en plusieurs tailles ou coloris sur une seule URL, utilisez AggregateOffer avec lowPrice, highPrice et offerCount. Si chaque variante possède sa propre URL, chacune reçoit son propre bloc Product avec son SKU et son prix.
Pour un article épuisé, ne supprimez pas le balisage : passez availability sur OutOfStock. Google conserve alors la fiche en mémoire et la réactivera au retour du stock, ce qui vaut mieux qu'une page dépubliée qui perd son historique.
Enfin, reliez votre balisage produit à celui de l'organisation (type Organization) et à un fil d'Ariane (BreadcrumbList). Ces trois entités mises en relation donnent aux moteurs une compréhension complète de qui vend quoi, et sous quelle marque, ce qui améliore aussi vos chances d'être cité par les assistants de recherche.
FAQ
Faut-il du JSON-LD ou du microdata pour baliser une fiche produit ?
Le JSON-LD est le format recommandé par Google. Il est séparé du HTML visible, donc plus simple à maintenir et à générer dynamiquement depuis votre base produit. Le microdata reste compris, mais il vous oblige à modifier vos templates d'affichage à chaque ajustement.
Combien de temps avant de voir les résultats enrichis apparaître ?
Il faut que Google réexplore la page, valide le balisage, puis décide d'afficher l'extrait, ce qui prend généralement de quelques jours à quelques semaines. L'affichage n'est jamais garanti : un balisage valide rend la page éligible, il ne force pas le rendu enrichi.
Les données structurées améliorent-elles directement le positionnement ?
Non, elles ne sont pas un facteur de classement en tant que tel. Leur effet est indirect mais mesurable : une fiche enrichie occupe plus d'espace et attire plus de clics, ce qui renforce la performance de la page sur ses requêtes.
Que faire si je n'ai pas de code GTIN pour mes produits ?
Renseignez le sku, le mpn si vous en avez un, et systématiquement la brand. Le GTIN reste facultatif pour les fabricants qui vendent leurs propres créations, notamment l'artisanat ou les pièces uniques.
Peut-on baliser des avis collectés sur une plateforme externe ?
Oui, à condition qu'ils soient réellement affichés sur votre page et attribuables à des clients. Reprendre une note globale hébergée ailleurs sans l'afficher constitue une violation des consignes et expose à une pénalité manuelle.