Rejoindre le Discord →
1 octobre 2026 8 min de lecture API Scraping

Automatiser une veille de prix Leboncoin avec un script Python + l'API

Automatiser une veille de prix Leboncoin via l'API LeBonDeal permet d'extraire des données structurées sans gérer la complexité du scraping manuel. En combinant Python et les endpoints REST, vous centralisez vos alertes dans un pipeline data fiable.

automaisation
Bearer
Authentification standard
/search
Endpoint principal
JSON
Format de réponse

Architecture du script Python pour la veille Leboncoin

L’architecture d’un script de veille sur Leboncoin repose sur un principe fondamental : l’API ne reconstruit pas les filtres. Elle agit comme un proxy qui exécute la requête HTTP déjà définie par vos paramètres de recherche sur le site source. Cette approche élimine la complexité du parsing HTML brut et garantit que les résultats correspondent exactement à ce qu’un utilisateur verrait dans son navigateur.Le flux s’articule autour de trois étapes distinctes : * **Construction de l’URL** : Vous définissez vos critères (mot-clé, catégorie, rayon, prix) directement sur Leboncoin.fr et copiez l’URL complète générée par le site. * **Appel HTTP** : Votre script Python envoie cette URL brute à notre endpoint via une méthode GET authentifiée. Aucun paramètre de filtrage supplémentaire n’est nécessaire dans la requête API elle-même, sauf pour la pagination optionnelle. * **Traitement JSON** : La réponse contient les données structurées des annonces sans le bruit du DOM HTML. Votre script doit uniquement mapper ces champs vers votre base de données ou système d’alerte.
En pratique : Cette architecture signifie que pour changer vos critères de veille, vous devez mettre à jour l’URL source dans votre variable `BASE_URL` ou paramètre `url`. L’API ne propose pas d’interface de filtrage native.
Pour les développeurs souhaitant implémenter cette logique rapidement, la documentation technique fournit des exemples concrets d’intégration. Consultez la section dédiée à Leboncoin pour comprendre le format exact de réponse et les champs retournés par l’endpoint `/api/v1/leboncoin/search`.

Configuration et authentification dans Python

L'initialisation de la connexion repose sur l'en-tête HTTP `Authorization` au format Bearer. Vous devez récupérer votre clé depuis le tableau de bord utilisateur ; celle-ci est unique et ne s'affiche qu'une seule fois lors de sa création. L'utilisation d'un gestionnaire de variables d'environnement pour stocker cette clé (`YOUR_API_KEY`) constitue la pratique standard en production, évitant ainsi l'exposition accidentelle des identifiants dans le code source ou les dépôts versionnés.```python import os import requestsAPI_KEY = os.getenv("LEBONDEAL_API_KEY") BASE_URL = "https://lebondeal-bot.fr/api/v1"headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" }def check_auth(): # Vérification simple de la validité du token via un endpoint minimal ou # en testant une requête réelle. Ici, on prépare juste les headers. return requests.get(f"{BASE_URL}/leboncoin/search", params={"url": "..."}, headers=headers) ```La variable `BASE_URL` doit être définie selon la documentation technique actuelle pour garantir l'adressage correct des endpoints. Le serveur valide le token à chaque requête ; un code 401 indique une clé manquante, invalide ou révoquée. La réponse inclut systématiquement les champs `credits_remaining` et `credits_charged`, permettant de suivre la consommation en temps réel sans interroger de service externe supplémentaire. Pour plus de détails sur l'activation des sources spécifiques, consultez la documentation API.
En pratique : Une requête échouée (ex: URL invalide) peut ne pas débiter de crédits si le parsing initial échoue avant la phase de scraping. Vérifiez toujours les codes d'erreur 400 et 429 pour distinguer une erreur de syntaxe d'une limitation de débit.

Extraction et parsing des résultats

Une fois la requête GET adressée à l'endpoint `/api/v1/leboncoin/search`, vous recevez un objet JSON structuré. La fiabilité de votre veille dépend directement de la précision avec laquelle vous extrayez les données pertinentes de cette réponse brute. Ne partez jamais du principe que le format restera figé ; vérifiez toujours l'intégrité des champs avant traitement.La structure répond à une logique simple : un dictionraculaire racine contenant deux niveaux principaux. Le premier niveau regroupe les métadonnées de pagination (`count`, `page`). Ces valeurs sont essentielles pour implémenter une boucle itérative si vous souhaitez consolider plusieurs pages de résultats en une seule base locale. Elles permettent également de vérifier que la requête a été traitée sans erreur silencieuse.Le second niveau, et le plus critique, est la liste des objets (`ads`). Chaque élément représente une annonce distincte extraite par notre moteur de scraping. Vous devez itérer sur cette collection pour alimenter votre base de données ou vos déclencheurs d'alerte. Les champs spécifiques à chaque annonce sont définis dans la documentation technique ; ne supposez jamais l'existence d'un champ non documenté, car cela ferait planter votre parser en production.
En pratique : privilégiez une validation stricte des types de données (prix entiers, dates ISO 8601) dès la réception du JSON pour éviter les erreurs de conversion lors des traitements ultérieurs.
Un exemple concret d'implémentation en Python avec `requests` montre l'intérêt de cette approche directe :```python import requestsresponse = requests.get( f"{BASE_URL}/api/v1/leboncoin/search", params={"url": "https://www.leboncoin.fr/recherche?category=0...", "page": 1}, headers={"Authorization": f"Bearer {API_KEY}"} )data = response.json()# Vérification de l'état avant extraction if data.get("count", 0) > 0: for ad in data["ads"]: # Traitement des champs spécifiques à l'annonce ici pass ```Pour plus de détails sur les champs retournés par chaque endpoint, consultez la [documentation API](https://lebondeal-bot.fr/documentation/).

Gestion des erreurs et limites de débit

Un script de veille automatisé doit anticiper les échecs réseau et les restrictions imposées par l’API LeBonDeal. Ignorer ces codes d’état entraîne des interruptions brutales ou, pire, la suspension du compte pour abus de requêtes. La gestion robuste repose sur le traitement explicite des réponses HTTP 4xx.Le code **401 (unauthorized)** indique une clé invalide, absente ou révoquée. L’API renvoie volontairement une réponse générique par sécurité. Votre script doit immédiatement arrêter les requêtes et notifier l’administrateur pour régénérer la clé via le tableau de bord.Le code **402 (insufficient_credits)** survient lorsque votre solde est épuisé avant même que la requête ne soit traitée. Contrairement à une erreur technique, c’est un blocage fonctionnel. Il faut implémenter une vérification proactive du solde via l’endpoint dédié ou gérer cette réponse par une alerte de recharge. Consultez nos tarifs pour comprendre le modèle de consommation.Le code **429 (rate_limited)** est critique en veille de prix. Il signifie que vous avez dépassé les limites par clé, par IP ou par API. La réponse inclut souvent un header `Retry-After`. Ignorer cet avertissement aggrave la situation. Vous devez mettre en pause le script et reprendre respectueusement après l’intervalle indiqué.
En pratique : Implémentez une logique de backoff exponentiel pour les erreurs 429. Ne réessayez pas immédiatement ; augmentez progressivement le délai d’attente entre chaque tentative pour éviter la saturation.

Déployer votre veille automatisée

Consultez la documentation technique et activez les sources nécessaires sur notre page API.

Découvrir l'API LeBonDealLire la documentation

Optimisation de la fréquence d'appel

Pour maintenir un flux de données stable et éviter les interruptions brutales, la gestion du rythme d'appel repose sur deux leviers complémentaires. Premièrement, l'espacement temporel des requêtes permet de respecter les limites implicites ou explicites des serveurs cibles. Deuxièmement, le monitoring en temps réel du solde de crédits évite les échecs silencieux lors de la veille critique.La saturation ne survient pas toujours par une erreur immédiate, mais souvent par un dégradé progressif : latence accrue puis blocage 429 ou épuisement des crédits sans alerte préalable. Voici comment structurer cette logique dans votre boucle principale.
En pratique : Vérifiez systématiquement le champ credits_remaining dans la réponse JSON avant de lancer une requête lourde ou un batch.
Stratégie d'espacementImpact techniqueRisque principal
Fixe (ex: 60s)Simplicité de mise en œuvre, prédictible.Inefficace si la charge serveur fluctue ; risque de saturation lors des pics d'activité concurrentielle.
Exponentiel (Backoff)S'adapte aux erreurs 429 en augmentant le délai après chaque échec.Délai de convergence plus long ; nécessite une logique d'état robuste côté client.
Mixte (Jitter + Credits)Ajoute un aléa au delay fixe et coupe la boucle si credits_remaining ≤ seuil.Réduit les collisions IP tout en préservant le budget API pour les alertes critiques.
L'analyse de ces stratégies montre qu'une approche rigide est rarement optimale sur Leboncoin, où la dynamique des annonces change rapidement. L'utilisation d'un délai aléatoire (jitter) entre deux appels consécutifs permet de disperser votre empreinte réseau et d'éviter les blocages en cascade si plusieurs scripts similaires tournent simultanément. Couplée à une vérification du solde via l'API LeBonDeal, cette méthode garantit que vos requêtes ne sont pas gaspillées sur des comptes vides ou bloqués, optimisant ainsi le retour sur investissement de votre infrastructure de veille.

FAQ

Comment authentifier ma clé API dans un script Python ?

Vous devez inclure votre clé Bearer dans l'en-tête Authorization de vos requêtes HTTP via le paramètre headers. La documentation technique sur /api/ détaille la syntaxe exacte pour les bibliothèques requests ou httpx.

L'API LeBonDeal retourne-t-elle tous les champs des annonces ?

Non, l'endpoint renvoie uniquement une liste d'annonces avec un nombre total de résultats et non le contenu complet de chaque fiche. Pour extraire les détails spécifiques d'une annonce individuelle, vous devez utiliser l'endpoint dédié /api/v1/leboncoin/ad.

Que se passe-t-il en cas de dépassement du quota de crédits ?

L'API renvoie une erreur HTTP 402 avec le message insufficient_credits avant d'exécuter la requête. Vous devez recharger votre compte via /tarifs/ pour reprendre l'utilisation des services.

Faut-il régénérer l'URL de recherche à chaque exécution du script ?

Non, vous pouvez réutiliser la même URL de recherche générée depuis le site Leboncoin.fr tant que les filtres ne changent pas. L'API interprète cette URL comme une capture d'état instantanée des résultats au moment où elle est transmise.

Articles liés