Les alertes officielles Le Bon Coin arrivent souvent trop tard. J’ai mis en place un petit service qui surveille mes recherches et m’envoie une notification dès qu’une nouvelle annonce apparaît — y compris sur Telegram. Voici le projet, comment il fonctionne et comment je l’ai déployé.


Le problème
Sur Le Bon Coin, quand vous créez une alerte (par mots-clés, catégorie, etc.), les notifications peuvent mettre du temps à arriver. Pour des annonces très demandées, être prévenu en premier peut faire la différence. L’idée était donc d’avoir un outil qui :
- scanne régulièrement des URLs de recherche (celles que je configure),
- détecte les nouvelles annonces par rapport à ce qui a déjà été vu,
- m’alerte immédiatement (console + Telegram).
Sans modifier le site Le Bon Coin, sans compte officiel « pro » : juste un script qui interroge les recherches et compare les résultats.
Ce que fait le projet
Le projet s’appelle Alerte Le Bon Coin. En résumé :
- Surveillance
Il exécute périodiquement (par exemple toutes les 2 minutes) les recherches que j’ai configurées (URLs copiées depuis leboncoin.fr). - Détection des nouvelles annonces
Il garde en mémoire les annonces déjà vues (dans un fichier JSON). À chaque cycle, il ne considère comme « nouvelles » que celles qui n’étaient pas dans ce fichier. - Alertes
Pour chaque nouvelle annonce :- affichage dans le terminal (titre, prix, lien),
- envoi d’un message Telegram (si activé) avec les mêmes infos.
- Interface web
Une petite interface (Flask) permet de modifier la config sans toucher aux fichiers : ajout/suppression de recherches, intervalle de scan, activation Telegram, token et Chat ID. - Pas besoin de redémarrer
La configuration est rechargée à chaque cycle. Si j’ajoute une nouvelle URL de recherche via l’interface web, elle est prise en compte au prochain scan.
Techniquement, le cœur du projet repose sur la bibliothèque Python lbc, un client non officiel pour l’API de recherche Le Bon Coin. Le reste (scanner, stockage des annonces vues, envoi Telegram, interface web) est du code maison.
Mise en place : côté développement
J’ai développé le projet en Python 3 (3.9+), en local sous Windows, puis je l’ai fait tourner sous Docker sur un serveur Linux.
En local (Windows)
- Installation
Cloner ou récupérer le projet, puis installer les dépendances :pip install -r requirements.txtLes principaux paquets sont :lbc,requests,PyYAML,Flask. - Configuration
Tout se fait dans un fichier config.yaml à la racine du projet :scan_interval: intervalle entre deux scans (en secondes),ads_limit: nombre d’annonces récupérées par recherche,telegram: activation,chat_id,bot_token,searches: liste de recherches (nom + URL copiée depuis leboncoin.fr).
- Lancement
Un seul script lance l’interface web et le scanner :python run_all.pyOu, sous Windows, en double-cliquant sur run_all.bat. L’interface est alors accessible sur http://localhost:5000. - Telegram
Pour recevoir les alertes sur Telegram :- Créer un bot avec @BotFather et récupérer le token.
- Récupérer son Chat ID (par exemple en envoyant un message au bot puis en consultant l’API Telegram, ou via @userinfobot).
- Renseigner le token et le Chat ID dans la config (fichier ou interface web). Le token peut être mis dans
config.yamlou dans la variable d’environnementLBC_TELEGRAM_BOT_TOKEN.
Un script test_telegram.py permet de vérifier que l’envoi Telegram fonctionne avant de laisser tourner le service.
Mise en place : Docker
Une fois le projet au point en local, je l’ai conteneurisé pour le faire tourner sur un serveur (Linux), sans avoir à installer Python ou les dépendances sur l’hôte.
Image Docker
Le Dockerfile est volontairement minimal :
- Image de base : Python 3.11-slim.
- Installation des dépendances directement avec
pip install.
Donc l’image ne contient que l’environnement Python et les paquets nécessaires. Le reste (fichiers Python, config) vient des volumes au lancement du conteneur.
Docker Compose
J’utilise un docker-compose.yml pour lancer le service :
services:
leboncoin-alert:
image: imageleboncoinalert:latest
container_name: leboncoin-alert
restart: unless-stopped
ports:
- "5000:5000"
volumes:
- /home/mike/docker_config/leboncoinalert/config/config.yaml:/app/config.yaml
- /home/mike/docker_config/leboncoinalert:/app/
environment:
- LBC_STORAGE=/app/data/seen_ads.json
- LBC_WEB_PORT=5000
# Garde le container allumé après un crash pour pouvoir déboguer (docker exec -it leboncoin-alert sh)
command: ["sh", "-c", "python run_all.py; echo 'App arretee. Container reste actif pour debug.'; exec sleep infinity"]
Le code de l’application (fichiers .py, etc.) est soit monté en volume depuis le répertoire du projet sur l’hôte, soit copié dans le répertoire monté pour /app, selon comment j’ai organisé les dossiers sur le serveur.
Résumé des briques
| Élément | Rôle |
|---|---|
| config.yaml | Recherches (nom + URL), intervalle de scan, Telegram (activé, chat_id, bot_token). |
| Interface web (Flask) | Édition de la config sans toucher au fichier. |
| Scanner | Boucle qui recharge la config, exécute les recherches via lbc, compare avec les annonces déjà vues, alerte (console + Telegram). |
| Stockage (JSON) | Fichier des annonces déjà vues pour ne pas alerter deux fois sur la même annonce. |
| Docker | Image légère (Python + deps) ; config et data en volumes pour persistance et débogage. |
Avertissement
Ce projet utilise une API non officielle (via la librairie lbc). Il n’est pas affilié à Le Bon Coin. Il faut utiliser l’outil de manière raisonnable (intervalle de scan d’au moins 1 à 2 minutes) pour limiter les risques de blocage (Le Bon Coin peut utiliser des protections anti-bot). À utiliser à vos propres risques et en respectant les conditions d’utilisation du site.