Skip to main content

Cas d’usage

Le suivi promotions permet de :
  • Détecter les prix barrés et remises
  • Suivre les campagnes promotionnelles des concurrents
  • Identifier les tendances de pricing

Implémentation

1. Détecter les produits en promotion

Utilisez l’endpoint /v1/snapshots pour récupérer les snapshots avec données promo :
import requests

API_KEY = "oc_YOUR_API_KEY"
EAN = "3400941533969"

response = requests.get(
    f"https://api.officiscan.com/v1/snapshots?ean={EAN}",
    headers={"Authorization": f"Bearer {API_KEY}"}
)

data = response.json()

# Filtrer les snapshots en promo
promos = [s for s in data["data"] if s["price"]["original"]]

for s in promos:
    discount = ((s["price"]["original"] - s["price"]["current"]) / s["price"]["original"]) * 100
    print(f"{s['source']}: {s['price']['current']}€ (au lieu de {s['price']['original']}€) -{discount:.0f}%")

2. Analyser les types de promotions

def analyze_promos(ean):
    """Analyse les promotions actives pour un produit"""
    response = requests.get(
        f"https://api.officiscan.com/v1/snapshots?ean={ean}",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )
    data = response.json()

    promo_analysis = {
        "total_sources": len(data["data"]),
        "sources_with_promo": 0,
        "promo_types": {},
        "avg_discount": 0
    }

    discounts = []
    for s in data["data"]:
        if s["promo"]:
            promo_analysis["sources_with_promo"] += 1
            promo_type = s["promo"].get("type", "unknown")
            promo_analysis["promo_types"][promo_type] = promo_analysis["promo_types"].get(promo_type, 0) + 1

        if s["price"]["original"]:
            discount = ((s["price"]["original"] - s["price"]["current"]) / s["price"]["original"]) * 100
            discounts.append(discount)

    if discounts:
        promo_analysis["avg_discount"] = sum(discounts) / len(discounts)

    return promo_analysis

# Exemple
analysis = analyze_promos("3400941533969")
print(f"Sources en promo: {analysis['sources_with_promo']}/{analysis['total_sources']}")
print(f"Remise moyenne: {analysis['avg_discount']:.1f}%")

3. Alertes promotions concurrents

def promo_alerts(ean_list, min_discount=10):
    """Alerte quand un concurrent fait une promo significative"""
    alerts = []

    for ean in ean_list:
        response = requests.get(
            f"https://api.officiscan.com/v1/snapshots?ean={ean}",
            headers={"Authorization": f"Bearer {API_KEY}"}
        )
        data = response.json()

        for s in data["data"]:
            if s["price"]["original"]:
                discount = ((s["price"]["original"] - s["price"]["current"]) / s["price"]["original"]) * 100
                if discount >= min_discount:
                    alerts.append({
                        "ean": ean,
                        "source": s["source"],
                        "price": s["price"]["current"],
                        "original": s["price"]["original"],
                        "discount": f"-{discount:.0f}%",
                        "promo_text": s["promo"]["text"] if s["promo"] else None
                    })

    return alerts

# Vérifier les promos
alerts = promo_alerts(["3400941533969"])
for a in alerts:
    print(f"🏷️ {a['source']}: {a['price']}€ ({a['discount']})")

Endpoints utilisés

GET /v1/snapshots

Snapshots avec données promo

GET /v1/snapshots/compare

Comparaison multi-sources