Suivi de prix auto-hébergé, une URL produit à la fois
PriceGhost est une application web auto-hébergée qui relève le prix d'une page produit à intervalle régulier et prévient quand il baisse, quand il atteint un prix cible ou quand l'article revient en stock. On lui donne l'URL d'une fiche produit ; un backend Node.js lit la page, range chaque relevé dans PostgreSQL et trace l'historique. Les alertes partent vers Telegram, Discord, Pushover, ntfy ou Gotify, et plusieurs comptes peuvent partager une instance.
Un produit suivi, c'est une URL : PriceGhost ne cherche pas l'article chez d'autres marchands. Pour trouver des pages à partir d'une recherche, OpenSERP interroge Google, Bing ou DuckDuckGo et rend les résultats en JSON. changedetection.io suit lui aussi prix et stock, par une option de son outil de surveillance de pages.
Le comparatif des outils de web scraping open source situe PriceGhost parmi les frameworks de collecte et les outils de surveillance de pages.
Quatre extracteurs votent, l'utilisateur tranche en cas d'écart
- Quatre extracteurs qui votent : le JSON-LD schema.org de la page, un extracteur propre à l'enseigne, des sélecteurs CSS génériques et, si elle est activée, une IA proposent chacun un prix. S'ils concordent, le prix est retenu ; sinon, une fenêtre affiche chaque candidat avec sa provenance et un score de confiance, et l'utilisateur choisit. La méthode gagnante sert aux relevés suivants.
- IA au choix, locale possible : Claude, GPT, Gemini ou un modèle servi par Ollama, en secours quand l'extraction échoue, pour vérifier chaque prix ou pour départager les extracteurs. Le README recommande Claude Haiku 4.5, ou Qwen3 en local.
- Pages JavaScript lues : l'image du backend embarque Chromium, piloté par Puppeteer avec le plugin stealth. Best Buy, Walmart, Target et Costco passent toujours par lui, les autres sites quand le HTML statique ne donne aucun prix.
- Relevés espacés : de 5 minutes à 24 heures par produit, une heure par défaut, avec un décalage aléatoire de 5 minutes au plus et 2 à 5 secondes entre deux produits pour limiter les blocages.
Inactif depuis février, sessions forgeables avec le Compose fourni
Les extracteurs dédiés visent d'abord des enseignes américaines. Celui d'Amazon couvre dix domaines, dont amazon.fr, celui d'eBay six, dont ebay.fr. Walmart, Best Buy, Target, Costco, Newegg et Home Depot ne sont reconnus que sur leur domaine américain en .com. Les boutiques Magento 2 ont un extracteur commun ; tout autre site passe par le JSON-LD, les sélecteurs génériques et l'IA. Ajouter une enseigne, c'est modifier backend/src/services/scraper.ts, et la demande d'un système de plugins (ticket #48) n'a pas de réponse du mainteneur. Pour écrire ses propres extracteurs, Crawlee fournit la collecte en HTTP ou en navigateur, sans interface ni alertes.
Huit devises reconnues, le dollar par défaut. L'analyse des prix connaît les dollars américain, canadien et australien, l'euro, la livre, le yen, la roupie et le franc suisse. Un symbole hors de cette liste est enregistré en dollars : un ticket de mars 2026 (#24) montre R$2.720,00 lu comme 2,72 $.
Le Compose fourni est à reprendre avant toute exposition. Le docker-compose.yml publie PostgreSQL sur le port 5432 avec le mot de passe postgres et, faute de JWT_SECRET, signe les sessions avec une valeur écrite dans le fichier. Un ticket de septembre 2026 (#50) montre qu'elle suffit à forger un jeton au nom d'un utilisateur existant. Les images, construites pour linux/amd64 seulement, ne portent aucun numéro de version : latest, main ou l'empreinte d'un commit.
Le README se compare à Keepa, CamelCamelCamel et Honey. Ces services devinent le prix, écrit-il ; PriceGhost laisse l'utilisateur choisir quand ses extracteurs divergent.
Licence MIT annoncée, aucun fichier de licence. Le README se termine sur « MIT », mais le dépôt n'a pas de fichier LICENSE et GitHub n'y détecte aucune licence.
Deux semaines de commits, rien depuis le 3 février. Le dépôt a été créé le 20 janvier 2026 ; la v1.0.0 est sortie le 23, la 1.0.6 le 26, et le dernier commit date du 3 février. Un seul développeur signe les 122 commits, et le README dit l'application entièrement écrite avec Claude Code. Sa dernière réponse dans les tickets date du 10 février, et 25 tickets et 6 pull requests sont aujourd'hui ouverts. Aucune contribution extérieure n'a été fusionnée, et le dépôt ne publie rien dans ses Releases GitHub.
