En date du 7 octobre 2026, Shifter dispose du plus grand pool d'IP US actives, devant Oxylabs et Bright Data, pour une fraction du coût.Shifter a désormais le plus grand pool d'IP US actives

Voir les benchmarks

Base de connaissances

Surveillance des prix d'intérêt public : collecter des preuves qui résistent à l'examen

Comment les groupes de consommateurs, les journalistes et les équipes de conformité surveillent les prix pour vérifier les allégations de réduction, et comment collecter des preuves qu'un détaillant ne peut pas écarter.

Priya Nair

11 octobre 2026 · 11 min de lecture

« Était 89,99, maintenant 59,99 » est l’une des plus anciennes affirmations du commerce de détail, et l’une des plus faciles à falsifier : augmenter le prix pendant quelques semaines, puis le « réduire » à son niveau initial. Les organisations de consommateurs, les journalistes, les régulateurs et les équipes de conformité des détaillants eux-mêmes surveillent tous les prix pour détecter ce procédé. Leurs constatations ne comptent que si elles résistent lorsque le détaillant conteste, et les détaillants contestent effectivement.

Ce guide traite du suivi des prix réalisé à des fins de contrôle plutôt que de stratégie tarifaire : ce que disent les règles sur les annonces de réduction, comment collecter des preuves de prix qui résistent à l’examen, et du code qui vérifie une annonce de réduction par rapport à l’historique des prix qui la sous-tend.

Il s’agit d’informations générales, et non d’un conseil juridique. Les règles diffèrent selon les pays, et quiconque souhaite publier des allégations ou déposer une plainte devrait d’abord consulter un avocat.

Ce que disent les règles sur les annonces de réduction

La plupart des juridictions traitent un prix de référence trompeur comme une pratique commerciale trompeuse. L’Union européenne va plus loin et établit une règle précise et vérifiable.

  • Union européenne. Depuis le 28 mai 2022, toute annonce de réduction de prix doit indiquer le prix antérieur, défini comme le prix le plus bas pratiqué par le professionnel pendant une période d’au moins 30 jours avant la réduction. Les États membres peuvent fixer des règles différentes pour les biens périssables rapidement, pour les produits en vente depuis moins de 30 jours, et pour les réductions qui augmentent progressivement. En septembre 2024, la Cour de justice de l’UE a jugé, dans une affaire impliquant le détaillant Aldi Süd, qu’une réduction annoncée sous forme de pourcentage, ou comme une « mise en avant de prix » promotionnelle, doit également être mesurée par rapport à ce prix le plus bas sur 30 jours, et non par rapport au prix juste avant la vente.
  • Royaume-Uni. Les comparaisons de prix trompeuses constituent une pratique commerciale déloyale, et depuis avril 2025, la Competition and Markets Authority peut statuer sur les infractions au droit de la consommation et infliger directement des amendes aux entreprises, sans passer d’abord par un tribunal.
  • États-Unis. Les Guides Against Deceptive Pricing de la Federal Trade Commission considèrent un ancien prix comme une base légitime de comparaison lorsqu’il s’agit du prix réel et de bonne foi auquel l’article a été proposé au public de manière régulière pendant une période raisonnablement substantielle.

La règle de l’UE est la plus utile pour le suivi car elle transforme la question « cette réduction est-elle authentique ? » en un calcul arithmétique : trouver le prix le plus bas dans les 30 jours précédant la vente et comparer. Cela n’est possible qu’avec un historique des prix, c’est pourquoi le suivi doit commencer bien avant la vente qu’il est censé vérifier.

Ce qui rend une preuve de prix solide

Un détaillant confronté à une constatation remettra d’abord en question les données avant la conclusion. Une preuve résiste à l’examen lorsqu’elle répond à l’avance aux objections évidentes.

L’objectionCe qui y répond
« Vos données sont fausses. »La page brute, capturée avec son URL, un horodatage UTC et un hachage, afin que le prix puisse être relu à partir de l’original
« Vous avez manqué des jours. »Des observations quotidiennes, avec la couverture de chaque fenêtre indiquée, et aucune constatation faite lorsque la couverture est trop faible
« C’était un produit différent. »Un identifiant de produit stable (SKU, EAN ou l’identifiant propre du détaillant) enregistré à chaque observation
« Ce prix concernait une autre région. »L’emplacement, le magasin ou le code postal de livraison auquel le prix s’appliquait, enregistré et maintenu constant
« C’était un prix réservé aux membres ou à l’application. »Collecte déconnectée du prix public, avec les conditions affichées sur la page enregistrées
« Vous avez choisi les pires exemples. »Une méthode publiée et un échantillon défini avant l’analyse, avec tous les résultats rapportés, pas seulement les mauvais

La collecte quotidienne compte davantage ici que dans la plupart des suivis. Des recherches sur les prix en ligne montrent qu’un échantillonnage hebdomadaire capte la plupart des changements de prix réguliers chez les grands détaillants, mais un faux prix de référence peut se cacher à l’intérieur d’une seule semaine. Notre étude sur la vitesse à laquelle les prix en ligne changent traite la cadence en détail. L’aspect capture, des captures d’écran au hachage et aux horodatages, relève de la même discipline que celle utilisée pour construire des preuves recevables en justice à partir d’annonces en ligne.

Tester une annonce de réduction

La fonction ci-dessous prend l’historique quotidien des prix d’un produit et une réduction annoncée, et la vérifie de la manière dont le fait la règle de l’UE. Elle refuse de juger lorsque trop de jours sont manquants, et elle enregistre la couverture afin qu’un lecteur puisse voir à quel point la preuve était complète. Une seconde fonction stocke chaque observation avec un horodatage et un hachage de la page brute.

import hashlib
from datetime import datetime, timedelta, timezone


def evidence_record(url, raw_body, price, currency):
    """One observation, stored so that anyone can later check what was seen and when."""
    return {
        "url": url,
        "captured_at": datetime.now(timezone.utc).isoformat(timespec="seconds"),
        "sha256": hashlib.sha256(raw_body).hexdigest(),
        "price": price,
        "currency": currency,
    }


def lowest_prior_price(history, start, days=30, min_coverage=0.8):
    """Lowest observed price in the `days` before `start`, if we watched closely enough.

    history: {date: price} from daily observations.
    Returns (price, coverage); price is None when too many days are missing to say.
    """
    window = [start - timedelta(days=d) for d in range(1, days + 1)]
    seen = [history[d] for d in window if d in history]
    coverage = len(seen) / days
    if coverage < min_coverage:
        return None, round(coverage, 2)
    return min(seen), round(coverage, 2)


def check_discount(history, start, sale_price, shown_prior=None, shown_percent=None):
    """Compare an announced reduction with the lowest price in the 30 days before it."""
    prior, coverage = lowest_prior_price(history, start)
    result = {"start": start.isoformat(), "sale_price": sale_price, "lowest_30d": prior,
              "coverage": coverage, "findings": []}
    if prior is None:
        result["findings"].append("not enough observations before the sale to judge")
        return result
    real_percent = round(100 * (prior - sale_price) / prior, 1)
    result["real_percent"] = real_percent
    if sale_price >= prior:
        result["findings"].append("no real reduction: the sale price is not below the 30-day low")
    if shown_prior is not None and shown_prior > prior:
        result["findings"].append(f"shown prior price {shown_prior} is above the 30-day low {prior}")
    if shown_percent is not None and shown_percent > real_percent + 0.5:
        result["findings"].append(f"claims {shown_percent}% off, but it is {real_percent}% off the 30-day low")
    return result

Voici trois offres illustratives le même jour de vente (historiques fictifs, pas de véritables détaillants) :

from datetime import date, timedelta

from discounts import check_discount

sale = date(2026, 11, 27)


def daily(prices_before_sale):
    """Daily observations for the days before the sale, oldest first."""
    n = len(prices_before_sale)
    return {sale - timedelta(days=n - i): p for i, p in enumerate(prices_before_sale)}


offers = {
    "kettle":  (daily([49.99] * 40), 39.99, 49.99, 20),
    "blender": (daily([59.99] * 25 + [89.99] * 15), 59.99, 89.99, 33),
    "toaster": (daily([34.99] * 30 + [29.99] * 10), 27.99, 34.99, 20),
}
for name, (history, price, shown_prior, shown_percent) in offers.items():
    result = check_discount(history, sale, price, shown_prior, shown_percent)
    print(name, result["lowest_30d"], f"{result['real_percent']}%", result["findings"] or "ok")
kettle 49.99 20.0% ok
blender 59.99 0.0% ['no real reduction: the sale price is not below the 30-day low', 'shown prior price 89.99 is above the 30-day low 59.99', 'claims 33% off, but it is 0.0% off the 30-day low']
toaster 29.99 6.7% ['shown prior price 34.99 is above the 30-day low 29.99', 'claims 20% off, but it is 6.7% off the 30-day low']
  • La bouilloire était à 49,99 pendant toute la période et est proposée à 39,99. L’annonce de 20% est exacte.
  • Le blender était à 59,99 pendant la majeure partie de la période, est monté à 89,99 pendant les 15 derniers jours, et est « réduit » à 59,99 avec une annonce de 33% de réduction. Par rapport au prix le plus bas sur 30 jours, il n’y a aucune réduction. C’est le schéma classique.
  • Le grille-pain présente une réduction réelle, mais plus faible que celle annoncée : il était déjà à 29,99 pendant les dix jours précédant la vente, donc 27,99 représente 6,7% de réduction, et non 20%.

Le seuil de couverture de 80% relève d’un choix. Définissez-en un avant de commencer, appliquez-le à tous les produits, et rapportez-le avec les résultats.

Mener un projet de suivi

  1. Définissez l’échantillon en premier. Choisissez les détaillants, les catégories et les produits avant la saison des soldes, et notez pourquoi. Un échantillon choisi après avoir vu les prix invite l’accusation de sélection biaisée.
  2. Commencez tôt. Le test de l’UE nécessite au moins 30 jours d’historique avant la vente. Commencez six semaines à l’avance pour tenir compte des lacunes.
  3. Collectez le prix public. Déconnecté, depuis un emplacement fixe, en utilisant les propres pages produit du détaillant. Enregistrez l’emplacement depuis lequel vous avez collecté ; les prix et les promotions sont souvent régionaux.
  4. Capturez tout. Conservez la page brute, le prix analysé et l’enregistrement de preuve pour chaque observation. Le stockage est bon marché ; un jour manquant n’est pas récupérable.
  5. Vérifiez avant de publier. Relisez à la main les prix signalés à partir des pages brutes. Beaucoup de violations apparentes se révèlent être des erreurs d’analyse, une variante différente, ou un lot groupé.
  6. Donnez au professionnel une chance de répondre. Les journalistes et les organisations de consommateurs soumettent généralement leurs constatations au détaillant avant de publier. Les réponses révèlent parfois une explication légitime, comme un prix régional que vous n’aviez pas vu.
  7. Publiez la méthode. Rapportez l’échantillon, les dates, la cadence, le seuil de couverture et l’ensemble des résultats.

Collecter de manière responsable

Le suivi d’intérêt public reste une collecte de données, et les mêmes principes s’appliquent. Collectez les prix publics à un rythme modéré, à partir de pages produit qu’un acheteur pourrait ouvrir, sans se connecter. Gardez les données personnelles entièrement hors de l’ensemble de données : une preuve de prix nécessite des produits et des prix, pas des évaluateurs ou des clients. Nos bonnes pratiques de web scraping couvrent le reste.

Lorsque les prix varient selon les pays, collectez depuis l’intérieur de chaque marché pour voir le prix que les acheteurs locaux voient. Les proxys résidentiels avec ciblage par pays sont le moyen habituel d’y parvenir à grande échelle, et maintenir l’emplacement fixe pour chaque marché est aussi important que la cadence.

FAQ

Qu’est-ce que la règle des 30 jours pour les réductions de prix ?

Dans l’Union européenne, toute annonce de réduction de prix doit indiquer le prix antérieur, qui est le prix le plus bas pratiqué par le professionnel pendant au moins les 30 jours précédant la réduction. La Cour de justice de l’UE a confirmé en 2024 que les réductions en pourcentage doivent être calculées à partir de ce prix.

Comment puis-je savoir si une réduction est fausse ?

Suivez le prix du produit quotidiennement pendant au moins 30 jours avant la vente. Si le prix de vente n’est pas inférieur au prix le plus bas de cette période, ou si le pourcentage annoncé est supérieur à la réduction réelle par rapport à ce prix le plus bas, l’annonce de réduction est probablement trompeuse selon les règles de l’UE.

Pendant combien de temps dois-je suivre les prix avant une vente ?

Au moins 30 jours pour le test de l’UE, et en pratique environ six semaines afin que quelques jours manqués ne laissent pas la fenêtre incomplète.

Les preuves issues du suivi des prix peuvent-elles être utilisées dans une plainte ?

Elles peuvent en soutenir une, si elles sont bien documentées : pages brutes, horodatages, identifiants de produit, l’emplacement auquel le prix s’appliquait et une méthode publiée. Consultez un avocat avant de déposer une plainte ou de publier des allégations.

En résumé

Les fausses réductions sont faciles à fabriquer et, avec les bonnes données, faciles à vérifier. La règle des 30 jours de l’UE transforme une annonce de réduction en une comparaison par rapport à un historique de prix, donc le suivi doit commencer bien avant la vente. Collectez quotidiennement, depuis un emplacement fixe, déconnecté, et conservez la preuve brute pour chaque observation. Refusez de juger lorsque les données sont insuffisantes, vérifiez chaque constatation à la main, et publiez la méthode. Une preuve collectée de cette manière est difficile à écarter.

Sources et références

Prêt à commencer ?

Essayez les proxies résidentiels de Shifter, 205M+ IPs, 195+ pays, à partir de 0,75 $/GB.

Commencer