<!-- twin of https://specstream.ai/migrate/liner -->
# Liner Search API compatible: change the address, keep the code

Compared on Nov 13, 2026. The page: https://specstream.ai/migrate/liner

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.

[Get an API key](https://specstream.ai/signup?src=alternatives-migrate-liner&utm_source=alternatives-md&utm_campaign=migrate-liner&returnTo=%2Fworkspace%2Fsearch%3Froute%3Dliner) 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.

### The $2 default, and what the same call costs here

Liner's docs say that since November 11, 2026, Premium Data is on by default, also for requests that do not send the option, and that those requests are billed at $2 per 1,000. A request with no matching data is still billed at $2 per 1,000. The camelCase `includeKnowledge: false` is ignored and billed at $2 per 1,000 as well.

On SpecStream a call of up to 10 results costs $0.001 whatever it sends for `include_knowledge`. Code written before November 11 keeps its $1 per 1,000 without an edit to the body.

### 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](https://specstream.ai/docs/mcp?utm_source=alternatives&utm_campaign=migrate-liner).

### 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](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=migrate-liner) 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](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=migrate-liner) at $0.80 per 1,000 pages, and a page with no text is not charged. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=migrate-liner) 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 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

### Is there a Liner Search API compatible API?

Yes. SpecStream answers Liner's `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?

Change one base address: `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?

$2 per 1,000 web searches by default since November 11, 2026, and $1 per 1,000 when the request sends `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?

It is read and costs nothing: the price stays $0.001 for up to 10 results. The reply holds web results and no `knowledge` key, as Liner's reply does when no data matches.

### Does Liner's Scholar search work?

No. `/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?

Up to 20, as on Liner. 1 to 10 results cost $0.001 and 11 to 20 cost $0.0022.

### Does SpecStream have an MCP server?

Yes, at `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 docs](https://liner.com/developers/docs/search-api), read Nov 13, 2026
- [Liner API pricing](https://liner.com/developers/docs/pricing), read Nov 13, 2026
- [Liner API rate limits and errors](https://liner.com/developers/docs/rate-limits), read Nov 13, 2026
- [Exa pricing](https://exa.ai/docs/admin/pricing.md), read Nov 13, 2026
- [Tavily API credits](https://docs.tavily.com/documentation/api-credits.md), read Nov 13, 2026
- [Brave Search API](https://brave.com/search/api/), read Nov 13, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 13, 2026
- [SpecStream pricing](https://specstream.ai/pricing), read Nov 13, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 13, 2026
