Zero-cost 8-engine web search for AI agents. Designed as a Serper (Google) complement for market research — surfaces competitors, distributors, and industry content that Google SEO buries.
| vs plain Google/Serper | Why it matters |
|---|---|
| 4 independent web indexes | Brave, Mojeek, Presearch, Marginalia each rank differently |
| No SEO bubble | Finds non-optimized industry pages Google hides |
| Cross-validation | Same query across multiple indexes = higher confidence |
| Zero per-query cost | Self-hosted, no API billing |
git clone https://github.com/brandnewmax/searxng-research-stack.git
cd searxng-research-stack
bash setup.shThat's it. The script checks Docker/Python, installs deps, starts SearXNG, waits for it to be healthy, and registers the MCP server with Claude Code.
Prerequisites: Docker Desktop, Python 3.9+.
git clone https://github.com/brandnewmax/searxng-research-stack.git
cd searxng-research-stack
pip install httpx mcp
docker compose up -d
claude mcp add searxng-search -e SEARXNG_URL=http://localhost:8080 -- python3 $(pwd)/mcp-server/server.pyIf you are Claude Code and a user has pointed you at this repo, run:
bash setup.shThen verify:
claude mcp get searxng-searchIf Docker is not installed, tell the user to install Docker Desktop first. If claude mcp add fails, show the user the manual setup command from the section above.
query: Germany beauty equipment distributor medical aesthetic clinic
Returns structured results with engine labels ([brave], [mojeek], [presearch]), relevance scores, and which specific engines surfaced each result.
When to use: competitor discovery, distributor hunting, finding pages that don't rank on Google.
Same query, results grouped by engine. Diff the [brave] column against Serper to spot what Google missed.
When to use: verifying R1 conclusions against independent sources.
SearXNG raw results → Jina Reranker re-ranks by semantic relevance. Requires JINA_API_KEY.
When to use: deep research, ambiguous queries where keyword match isn't enough.
Shows which engines are active and which are rate-limited.
Market size / trends → Serper (Google wins here)
Competitor discovery → search_compare (both, compare)
Distributor hunting → search (SearXNG wins here)
Cross-validation → search_compare (diff the results)
Deep dive → search_and_rerank (semantic ranking)
| Engine | Type | Unique value |
|---|---|---|
| Brave | 30B+ independent index | Different ranking from Google |
| Mojeek | UK independent index | Strong on B2B/industrial content |
| Presearch | Decentralized | Community-curated ranking |
| Marginalia | Non-commercial sites | Finds niche players without SEO |
| Wikipedia | Knowledge base | Industry definitions, company backgrounds |
| Wikidata | Structured data | Machine-readable facts |
| Google News | Real-time news | Industry updates, trade shows |
| Bing News | Real-time news | Alternative news ranking |
Docker not running?
open -a Docker # macOSNo results from engines?
curl "http://localhost:8080/search?q=test&format=json" | python3 -c "import sys,json; d=json.load(sys.stdin); print('Failed engines:', d.get('unresponsive_engines',[]))"Rate limits reset automatically after 2-5 minutes. The MCP server has a 5-minute cache and 3-second throttle to minimize this.
Container won't start?
docker compose down && docker compose up -d$0. Serper is fixed-cost via MCP. SearXNG runs on your machine. Jina Reranker (optional) costs ~$0.045 per million tokens — less than $0.02 for a complete research project.