Skip to main content

Cas d’usage

Le digital shelf permet de :
  • Suivre le positionnement dans les catégories
  • Analyser la visibilité dans les résultats de recherche
  • Optimiser le référencement e-commerce

Implémentation

1. Analyser le positionnement d’un produit

Utilisez l’endpoint /v1/snapshots pour récupérer les données de rank :
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()

# Analyser les positions
for s in data["data"]:
    if s["rank"]:
        print(f"{s['source']}: position {s['rank']['position']} (page {s['rank']['page']})")

2. Rapport de visibilité

def visibility_report(ean):
    """Génère un rapport de visibilité pour un produit"""
    response = requests.get(
        f"https://api.officiscan.com/v1/snapshots?ean={ean}",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )
    data = response.json()

    report = {
        "total_sources": len(data["data"]),
        "sources_with_rank": 0,
        "first_page": 0,
        "top_3": 0,
        "avg_position": 0
    }

    positions = []
    for s in data["data"]:
        if s["rank"]:
            report["sources_with_rank"] += 1
            positions.append(s["rank"]["position"])

            if s["rank"]["page"] == 1:
                report["first_page"] += 1
            if s["rank"]["position"] <= 3:
                report["top_3"] += 1

    if positions:
        report["avg_position"] = sum(positions) / len(positions)

    return report

# Exemple
report = visibility_report("3400941533969")
print(f"Sources avec rank: {report['sources_with_rank']}/{report['total_sources']}")
print(f"En première page: {report['first_page']}")
print(f"Top 3: {report['top_3']}")
print(f"Position moyenne: {report['avg_position']:.1f}")

3. Comparaison avec concurrents

def compare_visibility(ean_list):
    """Compare la visibilité de plusieurs produits"""
    import pandas as pd

    results = []
    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()

        positions = [s["rank"]["position"] for s in data["data"] if s["rank"]]
        first_page = sum(1 for s in data["data"] if s["rank"] and s["rank"]["page"] == 1)

        results.append({
            "ean": ean,
            "avg_position": sum(positions) / len(positions) if positions else None,
            "first_page_count": first_page,
            "total_ranked": len(positions)
        })

    return pd.DataFrame(results)

# Comparer vos produits vs concurrents
eans = ["3400941533969", "3400930001035"]
comparison = compare_visibility(eans)
print(comparison)

Endpoints utilisés

GET /v1/snapshots

Snapshots avec données de rank

GET /v1/products/{id}/snapshots

Historique des positions