Skip to main content
Glama

Jiro Search API 🔍

Local-First, KI-native Websuch- & Scraping-API — ein Drop-in-Ersatz, eine selbst gehostete SerpAPI-Alternative mit MCP-Server, agentischer Recherche und integrierter rechtlicher Compliance.

GitHub stars GitHub forks PyPI version Docker License: MIT Tests Python

Jiro durchsucht Google, Bing, DuckDuckGo, Brave, YouTube, Amazon, eBay, Yandex und Baidu direkt — ohne Such-API von Drittanbietern, ohne Abrechnung pro Anfrage, ohne Cloud-Lock-in. Ergebnisse werden lokal in SQLite gecacht (gecachte Antworten in unter 50 ms) und über eine SerpAPI-kompatible REST-API bereitgestellt. Die API ist darauf ausgelegt, von KI-Agenten aufgerufen zu werden: Function-Calling-Schemata für OpenAI/Anthropic/Gemini, ein Model Context Protocol (MCP)-Server, LangChain-/LlamaIndex-Wrapper sowie eine agentische /ai/search-Schleife, die plant → sucht → Seiten liest → eine mit Quellen belegte Antwort synthetisiert. Bring your own Keys (BYOK) für Proxys, CAPTCHA-Löser und LLM-Anbieter.

Status: Produktionsreifes MVP (Open Source, MIT). Hoste es selbst für 0 $ oder abonniere Jiro Cloud für eine verwaltete Proxy-Flotte, SLA und Compliance-Dashboard. Verantwortungsvoller Einsatz: Suchmaschinen wehren sich aktiv gegen Bots. Von Residential-IPs (und mit BYOK-Proxys) funktionieren Google/DuckDuckGo; auf Rechenzentrums-IPs wechselt Jiro automatisch über die Engines hinweg (google → bing → brave → duckduckgo). Respektiere die ToS jeder Engine und robots.txt.


Warum Jiro? (Selbst gehostete SerpAPI-Alternative)

Problem mit geschlossenen Such-APIs

Jiros Open-Source-Lösung

💸 SerpAPI kostet $200+/Monat für 100k Anfragen

Für immer kostenlos — betreibe es auf deiner eigenen Infrastruktur (MIT)

☁️ Cloud-Lock-in, deine Anfragen verlassen dein Netzwerk

100 % lokal-first — deine Anfragen, deine Daten, deine Compliance

🤖 Keine native KI-Agenten-Integration

MCP + Function Calling + LangChain/LlamaIndex nativ

⚖️ Rechtliche Grauzone (robots.txt, ToS)

Integrierte Compliance: robots.txt-Parser, ToS-Tracking, Manipulationssichere Audit-Logs

🔧 Störanfällige Parser brechen bei UI-Änderungen

Selbstheilende Selektoren + automatische Fallback-Kette über 9 Engines


Related MCP server: websearch-skill

Start mit einem Befehl

pip install jiro-search          # or: uv tool install jiro-search

jiro serve                       # API on http://localhost:8000  (docs: /docs)

Das ist alles — eine funktionierende selbst gehostete Such-API in einem Befehl.

# Search (SerpAPI-compatible endpoint)
curl "http://localhost:8000/search.json?engine=google&q=python+web+scraping&num=5"

# Scrape a page into clean markdown
curl -X POST http://localhost:8000/scrape \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","format":"markdown"}'

# Agentic research with citations
curl -X POST http://localhost:8000/ai/search \
  -H "Content-Type: application/json" \
  -d '{"query":"What is the best Python web scraping library in 2026?","max_sources":5}'

Feature-Matrix

Funktion

Jiro (OSS)

SerpAPI

ScraperAPI

Bright Data

Websuche — 9 Engines

✅

✅

❌

❌

Universal-Web-Verhalter (Markdown/Text/HTML/JSON)

✅

❌

✅

✅

Agentic Research (/ai/search)

✅

❌

❌

❌

MCP-Server (stdio + Streamable HTTP + SSE)

✅

❌

❌

❌

Function-Calling-Schemata (OpenAI/Anthropic/Gemini)

✅

❌

❌

❌

Legal-Compliance-Ebene (robots.txt, ToS, Audit)

✅

❌

❌

❌

Selbst gehostet / Air-Gapped

✅

❌

❌

❌

BYOK-Proxys + CAPTCHA

✅

❌

Teilweise

✅

Open Source (MIT)

✅

❌

❌

❌

Preis

Kostenlos

$200+/Monat

$299+/Monat

$500+/Monat


Was du bekommst

Bereich

Funktionen

Engines

Google (web/images/news/videos/shopping/places), Bing (web/images/news/videos), Brave (web/videos), DuckDuckGo (web/images), YouTube, Amazon, ebay, Yandex, Baidu

Ausfall

Automatische Engine-Fallback-Kette, UA-Rotation, Wiederholungsversuche + exponentielles Backoff, Circuit-Breaker pro Engine, Bot-Wall-Erkennung, optionales Playwright-Browser-Fallback für JS-lastige Seiten

Cache

SQLite (WAL) oder Redis mit TTL, fresh=true zum Python; Speichermodus; semantischer Cache (Embedding-basierte fuzzy Wiederverwendung); Cache-p95 unter 50 ms

Verhalter

URL → Markdown/Text/HTML/JSON, Readability-Extraktion, OpenGraph/Twitter/JSON-LD-Metadaten, Links & amp; Bilder, LLM-Schemaextraktion, benutzerdefinierte CSS/XPath/JSONPath-Rezepte

KI-nativ

OpenAI/Anthropic/Gemini-Tool-Schemata, MCP-Server (/MCP), LangChain- & LlamaIndex-Adapter, /ai/search-Agentenschleife, /ai/agent mehrstufige Recherche, SSE-Streaming, extraktiver Fallback ohne LLM-Key

BYOK

Proxys (HTTP/SOCKS5, HTTP-Liste oder Presets: BrightData/Oxylabs/ScraperAPI/ZenRows/Smarterproxy), CAPTCHA-Löser (2Captcha/CapSolver), HTTP API: 2Captcha/Capsolver

Katharinen, Cloud-API (OpenAI/Anthropic/Gemini/OpenRouter/ Locally), alles über Konfiguration/Env

Async-Jobs

POST /jobs für langer laufende Research-/Scrape-Jobs, GET /jobs/{id}-Status, Webhook-Zustellungs-du mit HMAC-Signatur

Team

Gehashte API-Schlüssel, Admin-/Benutzer-Rollen + Scopes, schlüsselbasierte Rate-Limits, JWT, Nutzungs-Tracking (/usage, /metrics)

Ops

Prometheus-/metrics, /proxy/status, /captcha/status, strukturierte JSON-Logs, Helm-Chart

Privatsphäre

Keine Telemetrie, keine protokoller des Abfrage, Standard-Daten bleiben

Leichtgewichtig

async-Httpx + selectolax (C-Parser), ~15 Kern-Abhängigkeiten, start in < 1 s


Jiro vs. SerpAPI, ScraperAPI & Bright Data

Jiro ist in der Lage, **Open-Source- ** Selbst zu hosten, die Suche + Scraping + agentics Research + MCP in einem Binary verbindet, mit eingebauter Legal-Compliance. Preislich sind SerpAPI/ScraperAPI/Bright Data teurer (meist 3 kostenpflichtig) als Jiro's eigene Kosten. Kündigungs-Komplorens: Mögliche $1.900/Monat für Nutzung dieser Funktionen und lassen dich nie selbst hosten.

Fakten: Jiro kombiniert in einer Macht GNP1 – (Funktionsumfang) ist reicher als SerpAPI/ScraperAPI und „Witze in Bezug auf MCP-Research“**modern.

→ vollständige Vergleiche: vs SerpAPI · vs ScraperAPI · vs Bright Data


KI-Agenten-Integration

Model Context Protocol (MCP)

Jiro enthält einen vollwertigen MCP-Server (stdio, StreamHelper HTTP, Legacy-SSE) — genug für AI Agenten, PDF- oder Set-verwandte Software.

jiro mcp                           # MCP server over stdio
jiro mcp --transport http         # Streamable HTTP + SSE on :8000/mcp

Tools: search (10 Engines, 6 Suchtypen) · scrape (Markdown/Text/HTML/JSON) · ai_search (agentische Recherche mit Quellen).
Prompts: search_and_summarize, compare_engines. Autocomplete: Engine-Kamen, Diese-Tippe, Such-Typen, Sort.

Claude Desktop

{
  "mcpServers": {
    "jiro": {
      "command": "jiro",
      "args": ["mcp"],
      "env": { "JIRO_CONFIG": "~/.jiro/config.yaml" }
    }
  }
}

Cursor / Continue.dev / Zed / Clayton

We rät, den MCP-Client auf den Server-Befehl jiro mcp zu zeigen (see docs/mcp).

Function Calling (OpenAI / Anthropic / Gemini)

from jiro.ai.tools import openai_tools, anthropic_tools, gemini_tools
tools = openai_tools()           # OpenAI / OpenRouter / Ollama

LangChain / LlamaIndex

from jiro.ai.tools import langchain_tools, ToolSpec
tools = langchain_tools(search_fn=my_search, scrape_fn=my_scrape, ai_fn=my_ai_search)

→ Tutorial: Baue einen tiefgelickten Recherche-Agent mit Jiro + Claude (MCP)


API-Referenz

Interaktive Dokumentation unter http://localhost:8000/docs (Swagger-UI) und http://localhost:8000/openapi.json.

REST-API

Methode

Anfang

Purpose/Puni

GET

/search.json

SerpAPI-kompatibel — engine, q , num, start, start, gl, api_key, …

GET/POST

/search

Alias/JSON-Äther body

POST

/search/batch

Bis zu 10 Parallel-Queries

GET

/search/stream

SSE-Stream (ein- oder mehr-Engine)

POST

/scrape

{url, format, include_metadata, extract_schema, recipe}

POST

/scrape/batch

Bis zu 50 ES

POST

/ai/search

plantext → Seiten suchen abrufie → antworte mit intextuierte Zitat

GET

/ai/search/stream

SSE-Stream (plan|search|source|synthesize|answer)

POST

/ai/agent

Multi-Step Research-Agent

POST

/ai/extract

Extraktion von Schemas from URL via LLM mit eigener Schema

POST

/jobs

Async ai_search / ai_agent / batch_scrape with webhook

GET

/health, /engines, /metrics

Status, En- gines, Prometheus-Zähler

POST/GET/DELETE

/api-keys

Hashed key management (admin)

POST

/auth/token

Exchange API token for JWT

Authentifizierung: X-API-Key: jsk_...-Header, ?api_key=...-Parameter oder Authorization: Bearer <jwt>. Bei auth.enabled: false ist die API offen und für lokale Nutzung geeignet.


CLI

jiro serve                        # start the API server
jiro search web "python scraping" --engine bing --num 5 --json
jiro scrape "https://example.com" --format markdown
jiro ask "best python scraping library?" --max-sources 5
jiro mcp                          # MCP server over stdio
jiro config init                  # write ~/.jiro/config.yaml
jiro config show
jiro keys create --name "ci" --role user        # prompts for admin key
jiro keys list
jiro keys revoke key_abc123
jiro usage --days 7
jiro plugins create myengine --author "Your Name"   # scaffold a new engine

Konfiguration & BYOK

Konfigurationsdatei unter ~/.jiro/config.yaml (oder $JIRO_CONFIG). Einzelne Schlüssel via Env: JIRO_SERVER__PORT=9000, JIRO_AUTH__ENABLED=true; um API_Key: ${GITHUB_TOKEN} zu interpolieren, setze API_Key entsprechend.

Dienst

Konfiguration

Env-Beispiel

Proxy (benutzerdefiniert)

scraping.proxy.url (kommagetrennt, rotierend)

http://user:pass@proxy.example:22225

Proxy (BrightData)

scraping.proxy.provider: brightdata + api_key

${BRIGHTDATA_API_KEY}

Proxy (Oxylabs/ScraperAPI/ZenRows/Smartproxy)

scraping.proxy.provider + api_key

${OXYLABS_API_KEY}

CAPTCHA (2Captcha / CapSolver)

scraping.captcha.provider + api_key

${CAPSOLVER_API_KEY}

LLM (OpenAI/Anthropic/Gemini/OpenRouter)

llm.provider/api_key/model

${OPENAI_API_KEY}

LLM (Ollama, lokal)

llm.provider: ollama, base_url: http://localhost:11434/v1

—

Redis-Cache

cache.type: redis, cache.url

JIRO_CACHE__TYPE=redis


Deployment

Docker

docker compose up -d            # http://localhost:8000

Helm (Kubernetes)

helm install jiro ./helm \
  --set config.env.JIRO_AUTH__ENABLED=true \
  --set config.envFromSecret=jiro-secrets

Enthält Deployment, Service, PVC (SQLite-Daten), optionales Ingress und optionalen Redis-Cache (--set redis.enabled=true).

Team-Einrichtung (Auth aktiviert)

export JIRO_AUTH__ENABLED=true JIRO_JWT_SECRET=$(openssl rand -hex 32)
jiro keys create --name admin --role admin --admin-key "$ADMIN"
jiro keys create --name "alice" --role user --rate-limit 30

💡 Open Core & Monetarisierung

Jiro ist Open Source (MIT) und wird immer kostenlos selbst gehostet werden können. Das nachhaltige Modell:

Ausgabe

Was

Lizenz

Zielgruppe

Jiro OSS

Vollständige Suche/Scraping/KI/MCP, alle Engines, Plugins, Compliance

MIT

Jeder — $0

Jiro Cloud (Roadmap)

Managed Hosting, Auto-Scaling, globaler Residential-Proxy-Pool, SLA, SSO, Compliance-Dashboard

SaaS

Teams & Agenten

Jiro Enterprise (Roadmap)

Air-Gapped-Lizenz (BSL-1.0), SOC-2-Pfad, dedizierter Support, private Engine-Plugins

Source-available

Fintech/Recht/Verwaltung/KI-Labore

Wir monetarisieren Komfort, Compliance und Support — niemals den Code. Community-Beiträge bleiben MIT.

→ Roadmap: docs/ROADMAP.md


Dokumentation


Performance

Metrik

Wert

Startzeit

< 1 s

Zwischengespeicherte Suche (SQLite)

~1–3 ms Roundtrip im selben Prozess

Live-Bing-Suche

~0,3–0,8 s von einer Rechenzentrums-IP

/scrape einer kleinen Seite

~0,3–0,9 s beim ersten Aufruf, danach gecacht

Test-Suite

380 bestandene Tests


Projektstruktur

jiro/
├── ai/            LLM providers, tool schemas, agentic loop (research + multi-step agent + SSE)
├── scraping/      HTTP client (UA rotation, retries, circuit breaker, proxy manager, browser fallback),
│                  engines: google/bing/brave/duckduckgo/youtube/amazon/ebay/yandex/baidu
├── server/        FastAPI app: routers (search, scrape, ai, stream, jobs, admin, ops, system)
├── auth.py        API keys (SHA-256 hashed), JWT, rate limiting
├── browser.py     Playwright browser fallback (lazy, graceful degradation)
├── cache.py       SQLite / memory cache manager
├── captcha.py     BYOK CAPTCHA solvers (2Captcha, CapSolver)
├── config.py      YAML + env config with ${VAR} interpolation
├── db.py          SQLite (WAL): cache, api_keys, usage, jobs, semantic_cache, tos_acknowledgments
├── extract.py     readability + metadata + HTML→Markdown
├── jobs.py        async job queue + webhooks (HMAC-signed)
├── mcp.py         MCP server (stdio): tools, prompts, resources, autocompletion
├── models.py      Pydantic contracts
├── proxy.py       BYOK proxy manager (provider presets, rotation, cooldown)
├── recipes.py     CSS / XPath / JSONPath extraction recipes
├── redis_cache.py Redis cache backend
├── semantic.py    embedding-based semantic cache
└── cli.py         Typer CLI
tests/             parser fixtures + unit/API/integration/chaos/property tests

Entwicklung

git clone https://github.com/DevAnimecx/jiro.git && cd jiro
pip install -e ".[dev,browser,redis,recipes]"
pytest -m "not network"            # skip network-dependent tests
jiro serve --reload

Roadmap-Status

  • Phase 1 (MVP) — ✅ CLI, Konfiguration, FastAPI-Server, Google-/Bing-/DDG-Web-Engines, SerpAPI-kompatibles JSON, SQLite-Cache, API-Key-Authentifizierung, OpenAI-Tool-Schema, /ai/search, Dockerfile.

  • Phase 2 — ✅ Brave + Bing-Videos, Bild-/News-Typen, Team-Keys, MCP-Server, LangChain/LlamaIndex-Wrapper, Batch-Scraping, /metrics, Playwright-Fallback, BYOK-Proxy + CAPTCHA, SSE, Redis.

  • Phase 3 — ✅ /ai/agent für mehrstufige Recherche, CSS-/XPath-/JSONPath-Rezepte, LLM-Extraktion, Plugin-Registry, asynchrone Jobs + Webhooks.

  • Phase 4 — Teilweise: semantischer Cache enthalten; RAG-Pipelines, horizontale Skalierung und der Marktplatz für Parser der Community bleiben zukünftige Arbeit. Helm-Chart bereitgestellt.


Definition & System Use

MIT. Jiro ist ein Scraping-Tool: Respektiere die Nutzungsbedingungen jeder Suchmaschine und robots.txt, halte die Anfrageraten moderat und nutze Proxy-/CAPTCHA-Dienste nach eigenem Ermessen. Der gesamte Datenverkehr stammt aus deinem Netzwerk; Suchanfragen sind nur für die Engines sichtbar, die du abfragst.


Community & Support


Entwickelt von Mortimer · Blackvault to Lokal-first, KI-native durch Suche & Scraping — kostenlos, offen und von dir selbst zu hosten.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to perform web searches with full content retrieval and multi-engine provenance, including trust scoring and local corpus persistence, via MCP integration.
    1 npm
    3
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to perform unified web research through a single MCP server, including search, page fetching, recursive crawling, document parsing, YouTube transcript extraction, and deep multi-query research.
    3
    -