Get up and running with Jiro in minutes. Install via pip, make your first API call, and start searching the web.
Jiro is a search intelligence platform that gives you programmatic access to 9 search engines, 12 social platforms, and AI-powered research tools through a single unified API.
There are two deployment options:
Self-Hosted (Free & Open Source) — Install via pip install jirosearch and run on your own infrastructure. You get sliding window rate limiting (5 RPS / 60 RPM / 500/hr / 5K/day on Free tier), 9 search engines (Bing, Google, DuckDuckGo, Brave, YouTube, Amazon, eBay, Yandex, Baidu), 12 social platforms (Reddit, Twitter/X, YouTube, LinkedIn, TikTok, Instagram, Facebook, Threads, Hacker News, Bluesky, Telegram, Pinterest), and 16 MCP tools. No API key required for local development.
Jiro Cloud (Coming Soon) — Managed cloud hosting with pay-per-credit pricing. You get 1,000 free credits per month, all 16 MCP tools, automatic scaling, and zero infrastructure management. Join the waitlist at searchjiro.vercel.app to get early access.
Before installing Jiro, make sure you have the following:
python --version.node --version.go version.brew install redis, apt install redis, or use a managed Redis instance.For Docker deployments, you only need Docker and Docker Compose installed.
Choose your preferred installation method. All methods give you access to the same API.
Docker (recommended for production):
The Jiro CLI is included with the jirosearch Python package. After installation, verify it works:
bash
jiro --version
jiro doctor
The jiro doctor command checks your Python version, dependencies, Redis connection, configuration, and package integrity. Run jiro serve to start the API server on http://localhost:8000.
Make your first search request using the CLI, Python SDK, JavaScript SDK, or Go SDK.
Every API response uses a consistent JSON envelope with three top-level fields:
data — the response payload (null on error)error — error details (null on success)request_id — unique identifier for tracing and debuggingSuccessful search response:
When something goes wrong, the error field is populated and data is set to null. Every error has a code, message, and status field:
json
{
"data": null,
"error": {
"code": "INVALID_QUERY",
"message": "Missing required field: q",
"status": 400
},
"request_id": "a1b2c3d4e5f6g7h8"
}
Common errors you will encounter:
q parameterAlways check the error field before accessing data. Credits are automatically refunded when an error occurs after deduction (engine errors, circuit breaker open).
Each SDK provides built-in error handling: