Privacy-first web search as a service. One endpoint, one API key — and a response schema that is drop-in compatible with the Brave Search API.
Already integrated with Brave's Search API? Point your base URL at Kelly Search and keep your parsing code untouched.
Federated search across a distributed peer index of the open web — no single point of index control.
Repeated queries are answered in milliseconds from our local result store, reducing latency and upstream load.
Results pass domain blacklists, keyword heuristics and quality scoring before they ever reach your app.
Minimal logging, no user tracking, no profiling. We store queries and results — nothing about the people asking.
REST + JSON, single authentication header, sensible defaults. If you can call an HTTP endpoint, you can search.
Authenticate with a subscription token header and send your first query in under a minute.
# Search the web
curl -H "X-Subscription-Token: $KELLY_API_KEY" \
"https://kelly-search.com/res/v1/web/search?q=best+coffee+in+berlin&count=5"
GET /res/v1/web/search
| Parameter | Type | Description |
|---|---|---|
q | string | The user's search query (required) |
count | int | Number of results, max 50 (default 20) |
offset | int | Zero-based offset for pagination |
Header: X-Subscription-Token: <your API key>
{
"query": { "original": "best coffee in berlin" },
"type": "search",
"web": {
"type": "results",
"results": [
{
"type": "search_result",
"title": "...",
"url": "https://example.com/article",
"description": "...",
"meta_url": { "scheme": "https", "hostname": "example.com", "..." : "..." },
"profile": { "name": "example.com", "url": "https://example.com" }
}
]
}
}
$0
Per-key rate limits apply.
Cached queries are free.
Best-effort support.
TBA
Higher rate limits.
Priority freshness.
Per-1k-query pricing.
During beta, request an API key by contacting us.