Jina Search (s.jina.ai) compatible
Change the address.
SpecStream answers the s.jina.ai search in Jina's own JSON and text forms, at $0.005 a search of up to 10 results with each page's text. Every line below was measured on production on November 10, 2026.
The switch is one address: https://api.specstream.ai/jina-search/ in place of https://s.jina.ai/, and a SpecStream key as the Bearer token. Your code reads data[].title, url, description and content 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. A search costs one price, whatever the length of the pages.
New accounts get $10 of credit, no card. It covers 2,000 searches.
Jina Search to SpecStream, parameter by parameter and field by field
| SpecStream | Jina Search (s.jina.ai) | |
|---|---|---|
| Address | https://api.specstream.ai/jina-search/ with q, as a GET, a POST with a JSON body, or the query as the path | POST https://s.jina.ai/ with q |
| The key | A SpecStream key as Authorization: Bearer | A Jina key in the Authorization header |
| `count` and `num` | 0 to 20, 10 when you send none or 0. page moves to the next results | num 0 to 20, default 10, and page |
| Sites | site and the X-Site header keep the results on one site | The X-Site header, for searches in one domain |
| Page text | Each result's page is read and its text returned in content by default, at no extra cost. X-Respond-With: no-content returns the results alone | Returns the top five results with their URLs and contents in LLM friendly text |
| The reply | With Accept: application/json: code, status and data[] with title, url, description and content. Any other Accept gets Jina's text form, [1] Title: and the rest. Not returned: publishedTime, favicon and token counts | code, status and data[] of page objects with title, description, url, content and publishedTime |
| `type` | Web results. type images or news gets 400 with Jina's error body | web, images or news |
| Price | $0.005 a search of up to 10 results, page text included, whatever the length of the pages | Priced by tokens processed. Every request costs at least 10,000 tokens |
| Free to start | $10 of credit, no card, which covers 2,000 searches | 10M free tokens with every new API key |
The Jina Search reference, on SpecStream
The call, before and after
# Before
curl -G "https://s.jina.ai/" --data-urlencode "q=Who founded Mistral AI and when?" \
-H "Authorization: Bearer $JINA_API_KEY" -H "Accept: application/json"
# After
curl -G "https://api.specstream.ai/jina-search/" --data-urlencode "q=Who founded Mistral AI and when?" \
-H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Accept: application/json"LangChain's JinaSearchAPIWrapper (langchain-community 0.4.2) takes the address in base_url, with the SpecStream key in JINA_API_KEY:
# Before
search = JinaSearchAPIWrapper()
# After
search = JinaSearchAPIWrapper(base_url="https://api.specstream.ai/jina-search/")Every parameter and field on this page is in the pass table, measured on production on November 10, 2026.
Apps and SDKs that take the address as a setting
Each line was run on production on November 10, 2026 through that client's own request and reply code. Put your SpecStream key wherever the client takes its key.
LangChain, langchain-community 0.4.2: set base_url on JinaSearch to https://api.specstream.ai/jina-search?q=. The wrapper adds the query straight after the address, so the value ends in ?q=.
agno: pass search_url="https://api.specstream.ai/jina-search/" to JinaReaderTools, with your SpecStream key in JINA_API_KEY.
Cherry Studio: in the Jina provider, set the API host for search to https://api.specstream.ai/jina-search.
Every parameter the route uses
Used in the search: q in the address or a JSON body, or the query as the path; count or num (0 to 20); page; site and the X-Site header. A query that holds a / goes in q.
Used to shape the reply: X-Respond-With: no-content returns the results without page text, and the Accept header picks the form, JSON with application/json and Jina's text form otherwise.
Refused with Jina's error body {"data": null, "code", "name", "status", "message", "readableMessage"}: a type other than web gets 400.
Every field that comes back
The JSON reply has code 200, status 20000 and data. Each item has title, url, description and content, the text of its page. The route does not return publishedTime, date, favicon or usage.tokens.
The text form has, for each result, [i] Title:, [i] URL Source: and [i] Description: lines, then the page's text after an empty line, as s.jina.ai writes it.
One field is added to the JSON reply: specstream, with what the Search API returns beyond Jina's fields, including the call's price_usd. A parser that reads Jina's fields never sees it.
$0.005 a search, whatever the length of the pages
Jina prices a search by the tokens it processes, from 10,000 tokens a request. On SpecStream a call of up to 10 results costs $0.005 with the text of every page, and 20 results cost $0.011. A call stopped by a 429 charges nothing, and credit you buy never expires.
The most accurate web search API, in about one second
On SimpleQA Verified the SpecStream Search API scores 97.9 F-score on all 1,000 official questions, 978 of them correct. On WideSearch it scores 64.0 item F1 and 43.4 row F1 on all 200 official tasks. The Extract API scores 0.908 F1 on WCXB. Every score and its method is on the benchmarks page.
A call with X-Respond-With: no-content runs the fast search. Measured on production on November 9, 2026, its median was 0.82 s at 1 search a second and 1.07 s at 20 a second, the 95th percentile stayed between 1.09 and 1.73 s, and it answered 718 of 720. It takes up to 8,800 searches a minute on one account. A call that returns page text, the default, runs the default search, which reads the pages, at the same price.
You decide what is kept, on each key
Create the key with zero_retention and a search made with it keeps no request text and no answer after the reply: it is not in the history, its answer is not reused for another call, and its log lines carry neither. spend_cap_cents is the most the key can spend.
curl -X POST https://api.specstream.ai/v1/account/keys \
-H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "production", "scopes": ["account:read", "finds:spend"], "spend_cap_cents": 500000, "zero_retention": true}'Search, pages and rows on one key
The same key reads up to 20 pages or documents a call with the Extract API at $0.80 per 1,000 pages, and a page with no text is not charged. Deep Search returns every match for a request in plain words as structured rows, at 5¢, 15¢ or $1 a row, with a source URL on every value. The most a run can cost is approved before it starts. The full comparison is on the Jina Search alternative page.
What else Jina Search users price
Exa
A search API on Exa's own index, at $7 per 1,000 requests on auto and $4 on lite for up to 10 results, with its own request and reply. SpecStream answers Exa's call as well, at https://api.specstream.ai/exa, for $0.005 a search.
Tavily
A search API sold in credits at $0.008 each pay as you go: a basic search takes 1 credit and an advanced search 2. SpecStream answers Tavily's POST /search at https://api.specstream.ai/tavily for $0.005, basic or advanced.
Serper
Google results as JSON, sold in credit packs from $1.00 per 1,000 for 50,000 credits, and the credits are valid for 6 months. Credit you buy on SpecStream never expires, and Serper's own call is answered at https://api.specstream.ai/serper.
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/jina-search/ where your code has https://s.jina.ai/, and send the SpecStream key as the Bearer token. In Python:
import requests
BASE = "https://api.specstream.ai/jina-search/" # was https://s.jina.ai/
reply = requests.get(
BASE,
params={"q": "Who founded Mistral AI and when?", "num": 10},
headers={"Authorization": f"Bearer {SPECSTREAM_KEY}", "Accept": "application/json"},
timeout=60,
)
reply.raise_for_status()
for item in reply.json()["data"]:
print(item["title"], item["url"], item["content"][:200])3. In JavaScript:
const url = new URL("https://api.specstream.ai/jina-search/");
url.searchParams.set("q", "Who founded Mistral AI and when?");
const res = await fetch(url, {
headers: {
Authorization: `Bearer ${process.env.SPECSTREAM_KEY}`,
Accept: "application/json",
"X-Respond-With": "no-content",
},
});
const data = await res.json();
for (const item of data.data) console.log(item.title, item.url);4. Read 402 InsufficientBalanceError 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 Jina Search (s.jina.ai) compatible API?
s.jina.ai search at https://api.specstream.ai/jina-search/ in Jina's JSON and text forms, checked on production on November 10, 2026, for $0.005 a search of up to 10 results.How do I migrate from Jina Search?
https://api.specstream.ai/jina-search/ in place of https://s.jina.ai/, and a SpecStream key as the Bearer token. The request and the code that reads data[] stay as they are.How much does Jina Search cost?
Which apps and SDKs take the SpecStream address for Jina Search?
langchain-community 0.4.2: set base_url on JinaSearch to https://api.specstream.ai/jina-search?q=. The wrapper adds the query straight after the address, so the value ends in ?q=. agno: pass search_url="https://api.specstream.ai/jina-search/" to JinaReaderTools, with your SpecStream key in JINA_API_KEY. Cherry Studio: in the Jina provider, set the API host for search to https://api.specstream.ai/jina-search.Does LangChain's JinaSearchAPIWrapper work with SpecStream?
JinaSearchAPIWrapper(base_url="https://api.specstream.ai/jina-search/") with the SpecStream key in JINA_API_KEY returned 10 results, each with content, link, snippet and title.Does SpecStream return page text like s.jina.ai?
content, at $0.005 a call. Send X-Respond-With: no-content for the results alone.Which Jina fields does SpecStream not return?
publishedTime, favicon and the token counts in usage. Each item has title, url, description and content.What happens when search is busy?
429 RateLimitTriggeredError 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 Jina figure comes from Jina'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.
- Jina API docsdocs.jina.ai/llms.txt, read Nov 10, 2026
- Jina Reader and Searchjina.ai/reader, read Nov 10, 2026
- Jina OpenAPIdocs.jina.ai/openapi.json, read Nov 10, 2026
- LangChain JinaSearchAPIWrapperraw.githubusercontent.com/langchain-ai/langchain-community/main/libs/community/langchain_community/utilities/jina_search.py, read Nov 10, 2026
- SpecStream pass table, Jina Search routespecstream.ai/specstream/dialects/jina-search.md, read Nov 10, 2026
- Exa pricingexa.ai/docs/admin/pricing.md, read Nov 9, 2026
- Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 9, 2026
- Serperserper.dev/, read Nov 9, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
- SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026




