OpenSERP

OpenSERP

Résultats de six moteurs de recherche dans un même JSON

OpenSERP est un serveur HTTP et une CLI en Go qui récupèrent les résultats de six moteurs : Google, Bing, Yandex, Baidu, DuckDuckGo et Ecosia. Aucun n'est interrogé par une API officielle : par défaut, un Chromium sans tête ouvre la page de résultats, OpenSERP la lit et rend les liens dans le même schéma JSON quel que soit le moteur. Le README le présente comme une API SERP gratuite, sans clé ni facturation à la requête, pour outiller un LLM ou alimenter un suivi de positionnement SEO.

Agent Reach ouvre lui aussi le web à un agent sans API payante, mais confie la recherche générale à Exa, un moteur hébergé joint par MCP. PriceGhost fait tourner un navigateur sans tête comme OpenSERP, sur des pages produit dont on lui donne l'adresse. OpenSERP part d'une requête et rend des adresses, depuis la machine qui l'héberge.

Le comparatif des outils de web scraping open source situe OpenSERP parmi les frameworks de crawl, les navigateurs anti-détection et les rotateurs de proxies.

Requête multi-moteurs dédoublonnée, texte des pages en Markdown

  • Un schéma pour six moteurs : /google/search, /bing/search et les autres renvoient la même enveloppe JSON, avec les mêmes filtres (langue, région, période, type de fichier, site) et jusqu'à 100 résultats.
  • Plusieurs moteurs en une requête : /mega/search les interroge en parallèle, dédoublonne par URL et garde dans clusters le rang de chaque URL sur chaque moteur. Un moteur en échec n'annule pas la réponse, il est listé dans meta.engines_failed.
  • Le texte des pages avec les liens : extract=3 joint en Markdown le contenu des trois premiers résultats. POST /extract/batch traite jusqu'à 20 URL au format du chargeur web d'Open WebUI.
  • Des blocages nommés : un CAPTCHA ou un refus du moteur sort en erreur captcha_detected ou blocked, et non en liste vide prise pour une recherche sans résultat.
  • Une CLI sans serveur : openserp search bing "release notes" --site github.com --format ndjson interroge un moteur depuis le terminal.

Google bloque vite, et n'importe qui peut appeler l'API

Les moteurs bloquent, Google le premier. Le ticket #36, ouvert en juillet 2026, décrit un CAPTCHA Google dès la première requête sous Docker, depuis un réseau résidentiel. Le mainteneur a publié une image corrigée, « pas encore une correction complète » selon lui. Sur un VPS, écrit-il dans le ticket #33, les IP de datacenter peuvent être sur liste noire et des proxies sont « généralement nécessaires ». La résolution par 2Captcha est désactivée par défaut, exige une clé de ce service, et un ticket ouvert depuis mars 2025 rapporte son échec (#9).

Google chiffre les liens servis aux robots. D'après la PR #51, Google remplace chaque lien organique par un jeton chiffré (/goto?url=...) pour les clients qu'il classe comme automatisés. Le correctif a été fusionné le 22 septembre 2026 ; le 28, un utilisateur reçoit encore ces liens avec l'image latest et ne peut plus rattacher un résultat à un site (#53, ouvert).

Les proxies sont à fournir. OpenSERP prend des proxies HTTP et SOCKS5, en pools étiquetés par moteur ou choisis par requête (en-tête X-Use-Proxy), mais n'en livre aucun. Rota expose devant son pool un proxy HTTP authentifié (http://user:pass@host:8000), le format de l'option --proxy. Les proxies SOCKS authentifiés sont refusés en mode navigateur.

Un Chromium à loger. Le navigateur est le seul mode pour Bing et DuckDuckGo : le mode HTTP brut ne couvre que Google, Yandex, Baidu et Ecosia. Le Compose fourni réserve 2 Go de /dev/shm, sans quoi Chrome manque de mémoire. Jusqu'à six processus Chrome tournent en parallèle par défaut, et chaque proxy authentifié a le sien. La documentation ne chiffre pas la mémoire totale.

Aucune authentification sur l'API. La spécification OpenAPI ne déclare aucun schéma de sécurité et le CORS accepte toute origine. Depuis la v0.8.12, proxies.allow_request_proxy_url vaut true : un appelant peut imposer son propre proxy, et les notes de version conseillent false sur une instance exposée. Le Compose fourni publie le port 7000 sur toutes les interfaces, là où le docker run du README se limite à 127.0.0.1.

Une version 0.x, un mainteneur principal. Sept versions sont sorties en 2026, jusqu'à la v0.8.12 du 22 juillet ; le correctif Google n'est encore dans aucune. Le mainteneur signe 135 commits, le contributeur suivant 17. La FAQ du service hébergé dit la version MIT « prête pour la production ».

Le cloud reprend la même API. OpenSERP Cloud garde les points d'accès et le schéma ; les SDK, le serveur MCP et le nœud n8n visent l'un ou l'autre. Après 60 crédits offerts, le crédit coûte 0,009 dollar pour dix résultats au plus ; erreurs et réponses vides ne sont pas décomptées. Le cloud ajoute des clés d'API gérées, l'historique d'usage et des recherches planifiées (Search Monitor).