Liner Search API compatible
Change the address, keep the code.
SpecStream answers the Liner Search API's POST /api/v1/tools/search/web in Liner's own JSON. A search of up to 10 results costs $0.001. Since November 11, 2026, a Liner call that does not send include_knowledge: false is billed at $2 per 1,000.
The switch is one address: https://api.specstream.ai/liner in place of https://platform.liner.com, with a SpecStream key in the x-api-key header. Your code reads results[] 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. New accounts get $10 of credit, no card.
New accounts get $10 of credit, no card. It covers 10,000 searches.
Liner Search API to SpecStream, parameter by parameter and field by field
| SpecStream | Liner Search API | |
|---|---|---|
| Search address | POST https://api.specstream.ai/liner/api/v1/tools/search/web | POST https://platform.liner.com/api/v1/tools/search/web |
| The key | A SpecStream key in the x-api-key header | A Liner key in the x-api-key header |
| `max_results` | 1 to 20, 10 when you send none | Up to 20 results per request |
| `date_range` | past_day, past_week, past_month and past_year | past_day, past_week, past_month and past_year |
| `country_code`, `lang` | Both set the country and the language of the search | An ISO 3166-1 alpha-2 country code, and a language code such as en, ko or ja |
| `include_knowledge` | Read, and the price is $0.001 with it or without it | On by default since November 11, 2026, at $2 per 1,000. Only include_knowledge: false brings the price to $1 per 1,000 |
| The reply | requestId, results[] with title, url, hostname, faviconUrl, description and date, and totalCount | Structured JSON with titles, snippets, URLs and publication dates |
| Price | $0.001 a search of up to 10 results. A top-up of $1,000 or more adds 20% more credit | $1 per 1,000 web searches, $2 per 1,000 with Premium Data, and a 5% platform fee on every credit purchase |
| Free to start | $10 of credit once, no card: 10,000 searches | Prepaid credits. A 402 answers when the account's credit balance is too low |
The Liner Search API reference, on SpecStream
The call, before and after
# Before
curl -X POST https://platform.liner.com/api/v1/tools/search/web \
-H "x-api-key: $LINER_API_KEY" -H "Content-Type: application/json" \
-d '{"query": "recent AI regulation updates", "date_range": "past_week", "max_results": 10}'
# After
curl -X POST https://api.specstream.ai/liner/api/v1/tools/search/web \
-H "x-api-key: $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"query": "recent AI regulation updates", "date_range": "past_week", "max_results": 10}'The body and the parser stay. The base address changes to https://api.specstream.ai/liner, and the key changes. Every parameter and field below is what the route answers on November 13, 2026.
Every parameter the route uses
Used in the search: query (required), max_results (1 to 20, 10 when you send none), date_range (past_day, past_week, past_month or past_year), country_code and lang.
include_knowledge is read and the reply holds web results. A date_range outside the four values or a max_results above 20 answers 400 with INVALID_REQUEST.
Every field that comes back
The reply has requestId, results and totalCount. Each result has title, url, hostname, faviconUrl, description and date, as YYYY-MM-DD when the page states one and null when it states none.
The reply has no knowledge key, the same reply Liner gives when no data matches the query, so a parser that checks for the key before reading it needs no change.
One field is added: specstream, with what the Search API returns beyond Liner's fields, including the call's price_usd. A parser that reads Liner's fields never sees it.
The Scholar search
The route answers the web search. A call to /api/v1/tools/search/scholar answers 400 with INVALID_REQUEST in Liner's error form and is never charged. Send a query for papers to /api/v1/tools/search/web: the reply has the same results[] without citationCount, authors and journal.
Errors in Liner's form, with retryable
Every refusal answers error with Liner's code, a message and retryable, so retry code that reads retryable works as it is. A missing or wrong key is UNAUTHORIZED with 401. A bad field is INVALID_REQUEST with 400. An empty balance is INSUFFICIENT_CREDITS with 402. A busy minute is RATE_LIMITED with 429, retryable set to true and a Retry-After header. None of them is charged.
$1 per 1,000 searches, and more credit on a large top-up
A search of up to 10 results costs $0.001. max_results from 11 to 20 costs $0.0022. A call stopped by a 429 charges nothing, and every charged reply carries the balance left in the X-Balance-Cents header.
Liner adds a 5% platform fee to credit purchases: its pricing page gives the example of $20 of credits costing $21. On SpecStream a top-up of $1,000 or more adds 20% more credit on the same payment: $1,000 buys $1,200 of searches.
In an MCP client
An agent that reached Liner through MCP connects to SpecStream's server at https://api.specstream.ai/mcp over Streamable HTTP, with OAuth or an API key. It then searches, reads pages and runs Deep Search from the same balance. Setup for each client is in the MCP docs.
The most accurate web search API
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.
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.
What else Liner Search API 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.001 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.001 a basic search.
Brave Search API
A search API on Brave's own index at $5 per 1,000 requests and 50 queries per second. SpecStream answers Brave's call at https://api.specstream.ai/res/v1/web/search at $1 per 1,000, a fifth of Brave's rate.
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 10,000 searches.
2. Set the base address to https://api.specstream.ai/liner where your code has https://platform.liner.com, and send the SpecStream key in x-api-key. In Python:
import os
import requests
BASE = "https://api.specstream.ai/liner" # was https://platform.liner.com
r = requests.post(
f"{BASE}/api/v1/tools/search/web",
headers={"x-api-key": os.environ["SPECSTREAM_API_KEY"], "Content-Type": "application/json"},
json={"query": "recent AI regulation updates", "max_results": 10},
timeout=30,
)
r.raise_for_status()
for result in r.json()["results"]:
print(result["title"], result["url"], result["date"])3. In TypeScript:
const res = await fetch("https://api.specstream.ai/liner/api/v1/tools/search/web", {
method: "POST",
headers: {
"x-api-key": process.env.SPECSTREAM_API_KEY!,
"Content-Type": "application/json",
},
body: JSON.stringify({ query: "recent AI regulation updates", max_results: 10 }),
});
const data = await res.json();
for (const result of data.results) console.log(result.title, result.url);4. Keep your retry code. error.retryable is true on a 429, which carries Retry-After, and false on 400, 401 and 402. None of them 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 Liner Search API compatible API?
POST /api/v1/tools/search/web at https://api.specstream.ai/liner in Liner's JSON, for $0.001 a search of up to 10 results.How do I migrate from the Liner Search API?
https://api.specstream.ai/liner in place of https://platform.liner.com, and a SpecStream key in the x-api-key header. The body and the code that reads results[] stay as they are.How much does the Liner Search API cost?
include_knowledge: false, plus a 5% platform fee on credit purchases. On SpecStream a search of up to 10 results is $0.001 with any body, and new accounts get $10 of credit with no card.Does include_knowledge work?
knowledge key, as Liner's reply does when no data matches.Does Liner's Scholar search work?
/api/v1/tools/search/scholar answers 400 and is never charged. Send the query to /api/v1/tools/search/web, which returns pages and papers on the web at $0.001 for up to 10 results.How many results can one call return?
Does SpecStream have an MCP server?
https://api.specstream.ai/mcp over Streamable HTTP, with OAuth or an API key. It searches, reads pages and runs Deep Search on one balance.Sources
SpecStream wrote this page. Each Liner fact comes from Liner's own developer docs and pricing page, and each other provider's figure from that company's own page. The route's behavior is taken from its code, read on November 13, 2026.
- Liner Search API docsliner.com/developers/docs/search-api, read Nov 13, 2026
- Liner API pricingliner.com/developers/docs/pricing, read Nov 13, 2026
- Liner API rate limits and errorsliner.com/developers/docs/rate-limits, read Nov 13, 2026
- Exa pricingexa.ai/docs/admin/pricing.md, read Nov 13, 2026
- Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 13, 2026
- Brave Search APIbrave.com/search/api/, read Nov 13, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 13, 2026
- SpecStream pricingspecstream.ai/pricing, read Nov 13, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 13, 2026




