Si vous vendez sur Shopify, la plupart de vos concurrents le font sans doute aussi, et leurs prix, remises et niveaux de stock sont visibles par quiconque ouvre leur boutique. Les applications de suivi en font des tableaux de bord, mais vous pouvez collecter les mêmes données vous-même, exactement pour les boutiques et les produits qui vous intéressent, et garder l’historique. C’est de la veille tarifaire à l’échelle d’un seul marchand, et Shopify rend la première étape plus simple que la plupart des plateformes.
Ce guide explique où se trouvent les données, quoi enregistrer par produit, comment comparer les marchés par pays et comment faire tourner le tout de façon fiable.
Pourquoi le construire vous-même
Les applications se lancent vite, mais elles ont des limites. Elles plafonnent souvent le nombre de concurrents ou de produits, se mettent à jour selon leur propre calendrier et gardent l’historique brut dans l’application. Un petit collecteur à vous vous donne :
- Votre liste de concurrents, y compris de petites boutiques qu’aucune application ne suit.
- Votre calendrier, par exemple toutes les quelques heures pendant des soldes et une fois par jour le reste du temps.
- Vos données, dans un tableur ou une base de données que vous pouvez croiser avec vos propres ventes et marges.
En contrepartie, il faut un peu de configuration et des requêtes courtoises et régulières, et c’est là qu’interviennent les proxys.
Où se trouvent les données : le JSON public des produits
La plupart des boutiques Shopify publient leur catalogue public dans un format lisible par les machines :
/products.jsonliste les produits avec leurs variantes, par pages. Ajoutez?limit=250&page=2et ainsi de suite pour parcourir un grand catalogue./products/<handle>.jsonrenvoie un seul produit, le handle étant la dernière partie de l’URL du produit./collections/<handle>/products.jsonliste les produits d’une collection, utile si vous ne suivez qu’une catégorie.
Chaque variante contient les champs utiles : price, compare_at_price (le prix barré « avant »), available, sku et des horodatages. C’est bien plus léger que de charger la page produit rendue avec ses images et ses scripts, et cela ne change pas quand la boutique change de thème.
Toutes les boutiques ne le laissent pas ouvert. Certaines renvoient une erreur ou une page protégée par mot de passe, et les boutiques headless peuvent ne pas l’exposer du tout. Dans ce cas, lisez plutôt les données structurées intégrées à la page produit ; nous expliquons cette méthode dans extraire le JSON-LD au lieu d’analyser le HTML.
Quoi enregistrer par produit
Suivez les variantes, pas les produits. Un t-shirt en cinq tailles, ce sont cinq variantes, et un concurrent ne remise souvent que les tailles qui ne se vendent pas.
Par variante et par relevé :
- Boutique, handle du produit, ID de variante, SKU et intitulé de la variante (taille, couleur).
priceetcompare_at_price.available(en stock ou non).- L’heure du relevé, le pays depuis lequel vous avez vérifié et la devise affichée.
Signaux à en tirer :
- Profondeur de remise : l’écart entre
compare_at_priceetprice, et le début et la fin d’une remise. - Changements de prix : chaque fois que le prix d’une variante bouge, avec l’ancienne et la nouvelle valeur.
- Ruptures de stock : les variantes qui passent en indisponible, souvent signe d’une forte demande ou d’un problème d’approvisionnement.
- Produits nouveaux et retirés : ce que le concurrent lance et ce qu’il retire discrètement.
Ne stockez que les changements plus un instantané quotidien, et l’historique reste léger même sur des dizaines de boutiques.
Marchés : la même boutique, des prix différents par pays
Shopify Markets permet à une boutique de vendre dans de nombreux pays avec des devises locales et, souvent, des prix différents. Le marché qu’un visiteur obtient dépend généralement de sa localisation, parfois avec un sous-dossier de pays comme /en-ca/ ou un sélecteur de devise.
Cela compte pour la surveillance. Si vous collectez tout depuis un serveur dans un seul pays, vous ne voyez jamais que ce marché. Pour comparer ce que paient les acheteurs aux États-Unis, au Royaume-Uni et en Allemagne :
- Demandez la boutique depuis une IP dans chaque pays où vous vendez, pour que la boutique choisisse le marché qu’obtient un acheteur local.
- Enregistrez la devise et le prix reçus, pas une valeur convertie.
- Vérifiez un produit à la main par marché la première fois, face à la page rendue, pour confirmer que le JSON collecté affiche bien le prix local de cette boutique.
Le ciblage par pays suffit pour la plupart des comparaisons sur Shopify. Le ciblage par ville ne compte que si une boutique modifie ses options de livraison ou son stock selon la région.
Un collecteur minimal
Le script ci-dessous lit le catalogue d’une boutique via un proxy et affiche le prix et le stock de chaque variante. Lancez-le par boutique et par pays selon un calendrier, et écrivez les lignes dans votre base de données.
import time
import requests
PROXY = "http://customer-USERNAME-country-us:PASSWORD@p.shifter.io:443"
STORE = "https://competitor-store.example"
def fetch_catalogue(store):
page = 1
while True:
r = requests.get(
f"{store}/products.json",
params={"limit": 250, "page": page},
proxies={"http": PROXY, "https": PROXY},
timeout=30,
)
r.raise_for_status()
products = r.json().get("products", [])
if not products:
break
yield from products
page += 1
time.sleep(2) # stay polite between pages
for product in fetch_catalogue(STORE):
for v in product["variants"]:
print(product["handle"], v["id"], v["title"],
v["price"], v["compare_at_price"], v["available"])
Changez country-us dans le nom d’utilisateur pour collecter la même boutique telle que la voit un acheteur d’un autre marché.
Configuration des proxys
| Tâche | Rotation | Ciblage |
|---|---|---|
| Instantané quotidien du catalogue | À chaque requête | Pays du marché |
| Relevés fréquents des produits clés pendant des soldes | À chaque requête | Pays du marché |
| Vérification du panier ou du total au paiement | Session sticky | Pays du marché |
Les boutiques Shopify limitent la vitesse à laquelle une adresse peut demander des pages, et un serveur de surveillance qui visite les mêmes boutiques chaque jour se repère vite. Des proxys résidentiels avec une nouvelle IP à chaque requête répartissent les relevés sur de vraies connexions domestiques dans le pays ciblé, et la boutique répond comme à un acheteur local.
Quelques habitudes gardent la collecte stable :
- Faites une pause d’une ou deux secondes entre les pages d’une même boutique et répartissez les boutiques sur la journée.
- Relevez souvent les produits clés et le catalogue complet une fois par jour ; la plupart des prix ne bougent pas toutes les heures. Notre étude sur la vitesse à laquelle les prix en ligne changent vous aide à choisir une fréquence raisonnable.
- Traitez une réponse HTML ou une page de challenge comme un échec, pas comme une donnée, et réessayez plus tard.
Comment cela s’intègre à un dispositif plus large
Les boutiques Shopify ne sont souvent qu’une partie du tableau. Si vous suivez aussi des fournisseurs et des marketplaces, notre guide des proxys pour le dropshipping couvre la recherche de produits et la surveillance des fournisseurs aux côtés des boutiques concurrentes.
L’essentiel
Vous n’avez pas besoin d’une application pour surveiller les boutiques Shopify concurrentes. Lisez le JSON public des produits, enregistrez pour chaque variante le prix, le prix « avant » et le stock avec l’heure et le pays du relevé, et ne gardez que les changements. Collectez chaque marché depuis une IP de ce pays, et utilisez des proxys résidentiels en rotation pour qu’un calendrier quotidien tourne sans blocages.