Skip to the page

Kagi Search API compatible

Change the address, at $5 per 1,000.

Kagi's Search API costs $12 per 1,000 requests. SpecStream answers Kagi's POST /api/v1/search in Kagi's own JSON for $5 per 1,000 searches of up to 10 results. Every line below was measured on production on November 10, 2026.

The switch is one address: https://api.specstream.ai/kagi/api/v1 in place of https://kagi.com/api/v1, and a SpecStream key as the Bearer token. Your code reads data.search[].url, title and snippet as before.

SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks. Page text through extract costs nothing extra.

New accounts get $10 of credit, no card. It covers 2,000 searches.

Kagi Search API to SpecStream, parameter by parameter and field by field

SpecStreamKagi Search API
AddressPOST https://api.specstream.ai/kagi/api/v1/search, and the legacy v0 form at https://api.specstream.ai/kagi/api/v0POST https://kagi.com/api/v1/search. The previous v0 API is documented as legacy
The keyA SpecStream key as Authorization: Bearer, or as Bot on the v0 formA Kagi key as Authorization: Bearer
`workflow`search, the default. Another workflow gets 400 with the reasonWeb, images, news, videos and podcasts
`lens` and `filters`sites_included, sites_excluded, keywords_included, keywords_excluded, file_type, time_after, time_before, time_relative, and filters.after and beforeLenses, country and language filters
Page textextract.count 1 to 10 puts each of the first results' page text in its snippet, at no extra costExtra snippets with full page content alongside the results. Extract is a separate API at $4 per 1,000 pages, up to 10 URLs a request
Paginglimit returns up to 100 results, 10 when you send none, and page 1 to 10The same limit and page fields
The replymeta.trace and meta.ms, and data.search[] with url, title, snippet and time when the page has a date. Not returned: image, props, related_search, direct_answer and infoboxmeta and data.search[], with related searches, direct answers and infoboxes
ErrorsKagi's {"meta", "data": null, "errors": [{"code", "message"}]}. A busy call answers 429 with Retry-After and charges nothingerrors[] with a code and a message
Price per 1,000 searches$5 for up to 10 results, page text included. 20 results cost $0.011 a call$12 per 1,000 requests, pay only for what you use. Volume discounts by quote
PayingPrepaid credit that never expires. $10 of credit, no card, covers 2,000 searchesInvoiced every 30 days, or as soon as usage reaches $100

The Kagi Search API reference, on SpecStream

What else Kagi Search API users price

How SpecStream scores

The same numbers as the benchmarks page, from the official tasks and scorers.

How to migrate, step by step

1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 2,000 searches.

2. Set the address to https://api.specstream.ai/kagi/api/v1 where your code has https://kagi.com/api/v1, and send the SpecStream key as the Bearer token. In Python:

import requests

BASE = "https://api.specstream.ai/kagi/api/v1"  # was https://kagi.com/api/v1

reply = requests.post(
    f"{BASE}/search",
    headers={"Authorization": f"Bearer {SPECSTREAM_KEY}"},
    json={"query": "Who founded Mistral AI and when?", "limit": 10, "lens": {"time_relative": "month"}},
    timeout=30,
)
reply.raise_for_status()
for result in reply.json()["data"]["search"]:
    print(result["title"], result["url"], result["snippet"])

3. In JavaScript:

const res = await fetch("https://api.specstream.ai/kagi/api/v1/search", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SPECSTREAM_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ query: "Who founded Mistral AI and when?", limit: 10 }),
});
const data = await res.json();
for (const result of data.data.search) console.log(result.title, result.url);

4. Read 402 as an empty balance and 429 as a call to send again after Retry-After; neither is charged.

5. When your product needs every match in place of a results page, write the request in plain words. SpecStream reads it back as the conditions every row must meet and the facts to bring back, quotes the most it can cost, and delivers the rows after you approve.

Frequently asked questions

Something we didn't answer? Talk to a human

Is there a Kagi Search API compatible API?
Yes. SpecStream answers Kagi's POST /api/v1/search at https://api.specstream.ai/kagi/api/v1 in Kagi's JSON, checked on production on November 10, 2026, for $0.005 a search of up to 10 results.
How do I migrate from the Kagi Search API?
Change one address: https://api.specstream.ai/kagi/api/v1 in place of https://kagi.com/api/v1, and a SpecStream key as the Bearer token. The body and the code that reads data.search[] stay as they are.
How much does the Kagi Search API cost?
Kagi charges $12 per 1,000 search requests and $4 per 1,000 pages on its Extract API, invoiced every 30 days. SpecStream charges $5 per 1,000 searches of up to 10 results, page text included.
Which apps and SDKs take the SpecStream address for Kagi Search API?
kagiapi 0.2.1, Kagi's v0 Python client: set KagiClient.BASE_URL = "https://api.specstream.ai/kagi/api/v0".
Does Kagi's Python client work with SpecStream?
Yes. Kagi's generated client (openapi_client 1.0.0) ran every check in the pass table with host="https://api.specstream.ai/kagi/api/v1", and kagiapi 0.2.1 with KagiClient.BASE_URL set to https://api.specstream.ai/kagi/api/v0.
Does the route return images, news or videos?
No: the route answers workflow search with web results, and another workflow gets 400 with the reason. A web search of up to 10 results costs $0.005.
Which Kagi fields does SpecStream not return?
Five on v1: image, props, related_search, direct_answer and infobox. Each result has url, title and snippet, and time when the page has a date.
What happens when search is busy?
The route answers 429 with a Retry-After header and charges nothing. One account can send up to 8,800 searches a minute.

Sources

SpecStream wrote this page. Each Kagi figure comes from Kagi's own pages, and each other provider's figure from that company's own page. The route's behavior is taken from its code and from the pass table measured on production on November 10, 2026.

  1. Kagi API pricingkagi.com/api/pricing, read Nov 10, 2026
  2. Kagi APIkagi.com/products/api, read Nov 10, 2026
  3. Kagi Search API docshelp.kagi.com/kagi/api/search.html, read Nov 10, 2026
  4. SpecStream pass table, Kagi routespecstream.ai/specstream/dialects/kagi.md, read Nov 10, 2026
  5. Brave Search APIbrave.com/search/api/, read Nov 9, 2026
  6. Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 9, 2026
  7. Exa pricingexa.ai/docs/admin/pricing.md, read Nov 9, 2026
  8. SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
  9. SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
  10. SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026