Pour comparer efficacement les prix de vêtements sur Vinted selon la taille et l'état, extrayez systématiquement ces données via un endpoint dédié. L'API LeBonDeal permet d'automatiser cette collecte en interrogeant des catalogues filtrés pour analyser instantanément les écarts tarifaires.

Sommaire
L’analyse comparative des prix sur Vinted exige de structurer les données brutes extraites par l’API. La réponse JSON contient un tableau items où chaque objet représente une annonce distincte. Pour établir une comparaison pertinente, vous devez regrouper ces éléments selon deux attributs clés : la taille (size) et l’état (status). Ces champs permettent de segmenter le marché virtuel en sous-groupes homogènes.
Chaque article possède des caractéristiques uniques qui influencent directement sa valeur marchande. Une pièce « Neuf avec étiquette » ne se compare pas à un modèle identique mais « Très bon état ». De même, une taille 38 n’a aucune pertinence comparative directe avec une taille 42 sur le même article spécifique. L’objectif est donc d’isoler les variants comparables pour calculer des moyennes ou identifier des anomalies de prix.
Le processus technique suit cette logique :
items renvoyés par l’endpoint Vinted.size et status."L-Très bon état", servant d’index dans un objet temporaire.price) associés à cette clé.Ce regroupement initial est crucial avant toute normalisation monétaire ou statistique. Sans cette étape de segmentation, vos calculs de moyenne seraient biaisés par la diversité des offres. Vous devez également noter que le champ status peut varier légèrement selon la formulation exacte saisie par l’annonceur (ex : « Comme neuf » vs « Neuf comme neuf »). Une normalisation minimale des chaînes de caractères est souvent nécessaire pour éviter une fragmentation excessive des groupes.
La configuration de la requête repose sur l'envoi d'une URL catalogue Vinted déjà filtrée via le paramètre url. Vous devez construire votre filtre directement dans le navigateur, copier l'URL résultante et la transmettre à l'endpoint /api/v1/vinted/search en GET. L'en-tête Authorization: Bearer YOUR_API_KEY est obligatoire pour authentifier chaque appel sans exposer vos identifiants côté client.
import os
import requests
BASE_URL = os.environ.get("LEBONDEAL_BASE_URL", "https://bot.lebondeal-bot.fr")
API_KEY = os.environ["LEBONDEAL_API_KEY"]
VINTED_FILTER_URL = "https://www.vinted.fr/catalog?search_text=..."
endpoint = f"{BASE_URL}/api/v1/vinted/search"
headers = {"Authorization": f"Bearer {API_KEY}"}
params = {"url": VINTED_FILTER_URL}
try:
response = requests.get(endpoint, headers=headers, params=params, timeout=45)
if response.status_code == 200:
data = response.json()
items = data.get("items", [])
for item in items:
print(f"{item['title']} - {item['price']}")
elif response.status_code == 429:
import time
time.sleep(5) # Backoff simple pour la démonstration
else:
err = response.json()
if "error" in err:
print(f"Erreur API : {err['message']}")
except requests.exceptions.Timeout:
print("Timeout dépassé (40s max serveur). Réessayez.")Ce script initialise les variables d'environnement pour sécuriser la clé et construit l'URL complète en concaténant BASE_URL avec le chemin de l'endpoint. Il effectue une requête GET avec un timeout explicite de 45 secondes, nécessaire car des incidents temporaires peuvent prolonger le temps de réponse côté serveur. La gestion des erreurs capture spécifiquement les timeouts et traite différemment les succès (200) des limitations de débit (429). Pour plus de détails sur la syntaxe exacte des filtres Vinted, consultez notre documentation Vinted.
Les données retournées par l'endpoint /api/v1/vinted/search ne contiennent pas de valeurs numériques brutes pour les montants. Chaque champ price est une chaîne de caractères formatée, incluant la devise à droite du montant (par exemple "15.0 EUR"). Cette structure impose un prétraitement systématique avant toute opération statistique ou comparaison entre différentes tailles et états d'un même article.
Pour extraire le prix effectif, vous devez isoler les caractères numériques décimaux de la chaîne initiale. Une approche robuste consiste à utiliser une expression régulière pour identifier le motif numérique, puis à convertir explicitement le résultat en type flottant ou entier selon votre besoin de précision. Ignorer cette étape entraînerait des erreurs de calcul lors du regroupement par attributs (size, status).
Lors du traitement par lots pour comparer les prix entre tailles :
items retournée.\d+\.\d+).(size, status).Ce prétraitement est indispensable pour garantir l'intégrité des analyses de prix. Sans conversion explicite, les comparaisons directes sur la chaîne brute sont invalides car elles dépendent du formatage initial et ne permettent pas d'opérations arithmétiques fiables. Pour plus de détails sur la structure exacte de la réponse JSON, consultez la documentation officielle disponible sur la page API Vinted.
Lors de l'intégration de la requête Vinted, vous devez anticiper plusieurs scénarios d'échec qui interrompent le flux normal des données. Le tableau ci-dessous récapitule les codes HTTP retournés et leur signification technique pour votre logique de reprise.
| Code HTTP | Type d'erreur | Action requise côté client |
|---|---|---|
| 401 | unauthorized | Vérifiez la clé API dans l'en-tête Authorization. Si elle est invalide ou révoquée, régénérez-la depuis le tableau de bord. |
| 429 | rate_limited | Trop de requêtes. Appliquez un backoff exponentiel et réessayez après quelques secondes sans lire d'en-tête spécifique. |
| 503 | unexpected_error | L'erreur n'est pas facturée (credits_charged: 0). Elle peut provenir soit d'une recherche légitimement vide, soit d'un échec technique persistant. Il est impossible de les distinguer programmatiquement. |
| 402 | insufficient_credits / account_paused / api_limit_reached | L'exécution s'arrête immédiatement. Consultez la page tarifs ou le tableau de bord pour débloquer la situation. |
L'anomalie majeure à gérer est l'ambiguïté du code 503. Contrairement à d'autres services, une recherche Vinted techniquement échouée après plusieurs tentatives internes renvoie le même statut qu'une page de résultats vide (aucune annonce ne correspond aux filtres). Dans les deux cas, vous recevrez un JSON avec error: "unexpected_error", count: 0 et credits_charged: 0. Votre algorithme doit donc traiter ces deux scénarios comme l'absence de données pertinentes pour la requête courante, plutôt que comme un incident système nécessitant une alerte critique. Pour les limites de débit (429), privilégiez des délais croissants entre vos appels afin d'éviter d'être temporairement bloqué par le serveur.
Consultez les spécifications complètes de l'API Vinted et générez votre clé d'accès.
Découvrir l'API LeBonDealLire la documentationL'exécution régulière de ce script permet de maintenir une base de référence des prix du marché sans intervention manuelle. Pour automatiser cette veille, vous devez structurer votre boucle d'appels en respectant les contraintes de débit et la nature éphémère des listings. Il est recommandé d'implémenter un mécanisme de backoff exponentiel lors de la réception d'une erreur 429 rate_limited. Cela évite de saturer le serveur et préserve votre solde de crédits, comme détaillé sur la documentation Vinted.
La persistance des données est cruciale pour comparer les évolutions temporelles. Stockez chaque réponse normalisée dans une base locale ou un fichier CSV avec un horodatage précis. Cela vous permettra de calculer des moyennes mobiles par taille et par état, plutôt que de vous fier à un instantané unique qui peut être biaisé par la rareté d'un article spécifique.
Pour optimiser la consommation de ressources :
credits_remaining avant chaque lot important afin d'éviter une interruption brutale due à un solde insuffisant.Cette approche permet de construire un modèle prédictif fiable sur la dépréciation ou l'appréciation d'un produit selon ses attributs physiques, transformant ainsi une simple extraction de données en un outil décisionnel stratégique.
Comment extraire les données Vinted par taille et état ?
Configurez vos filtres directement dans l'URL du catalogue via votre navigateur, puis transmettez cette URL au paramètre url de l'endpoint /api/v1/vinted/search. L'API renvoie ensuite la première page des résultats incluant les champs size et status pour chaque annonce.
Le champ price contient-il la devise dans la réponse JSON ?
Oui, le champ price est une chaîne de caractères qui inclut explicitement la devise (par exemple "15.0 EUR"). Vous devez donc parser cette valeur avant d'effectuer tout calcul ou comparaison numérique.
Quelle méthode HTTP utiliser pour l'endpoint de recherche ?
L'API Vinted utilise exclusivement la méthode GET pour tous ses endpoints. La configuration de votre requête se fait via le paramètre query string url passé dans l'URL de base.
Que faire en cas d'erreur 503 sur une recherche vide ?
Une erreur 503 indique soit un incident technique persistant, soit une recherche légitimement sans résultat. Dans les deux cas, la requête n'est pas facturée et vous devez réessayer ultérieurement sans pouvoir distinguer la cause exacte côté client.
LeBonDealBot Discord gratuit pour vos alertes Leboncoin, et API à la demande pour extraire des données Leboncoin, Vinted, Kleinanzeigen et Marktplaats en JSON.
© 2026 LeBonDeal — Tous droits réservés.