LLM web access API in 2026
Search at $1 and pages at $0.80 per 1,000.
A model reaches the live web through two calls: a search that finds pages, and a read that returns their text. Brave and You.com charge $5 per 1,000 searches, Tavily $8, and reading pages costs $1 to $3.20 per 1,000.
SpecStream's Search API answers a model's search at $1 per 1,000 on the fast search, with page excerpts in the same reply. The Extract API returns up to 20 pages a call as Markdown at $0.80 per 1,000.
The Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions and the Extract API 0.908 F1 on WCXB, on the benchmarks page. Both run on one key, through the API or MCP.
New accounts get $10 of credit, no card. It covers 10,000 fast searches or 12,500 pages.
LLM web access APIs side by side
| SpecStream | Brave LLM Context | You.com | Tavily | |
|---|---|---|---|---|
| Search, per 1,000 calls | $1 on the fast search, $5 on the default search, up to 10 results a call. A call that returns no results costs nothing | $5 per 1,000 requests on the Search plan, LLM Context included | $5 per 1,000 calls on Web Search API Standard | $8 basic or $16 advanced pay as you go: 1 or 2 credits a search at $0.008 a credit |
| Page text in the search reply | passages=true adds an excerpt of up to about 3,500 characters on each source, in the page's order, for up to about a second more | Extracted chunks of text, tables and code, about 8,192 tokens by default and up to 32,768 | Highlights, Knowledge and extraction on the Standard tier | Chunks of about 500 characters per source, 800 on advanced. include_raw_content adds the parsed page |
| Reading pages you name, per 1,000 | $0.80 with the Extract API, 1 to 20 URLs a call, as Markdown or text. PDF, Word and Excel files too. A page with no text costs nothing | LLM Context takes a query of 1 to 600 characters and returns chunks of the pages its search ranks | $1 per 1,000 pages with the Contents API, as Markdown or HTML | $1.60 basic or $3.20 advanced: 1 or 2 credits per 5 pages read |
| An answer written for the model | The default search returns answer: the value as the pages print it, the page it was read from and its read time, at $5 per 1,000 | Answers: $4 per 1,000 requests plus $5 per million input and output tokens | Answer API: $5 per 1,000 calls | include_answer adds an LLM generated answer to a search |
| Filters on the results | site:, -site:, filetype:, after: and before: hold on every result, with language and country | freshness, site: operators and Goggles for custom re-ranking | Domain filters on the Standard tier | include_domains and time_range |
| Research across many pages | Deep Search: every match on the live web as structured rows, at 5¢, 15¢ or $1 a delivered row, with the most a run can cost quoted before it starts | Answers can ground on several searches, at the Answers price | Research API: $12 to $1,200 per 1,000 calls by depth | Research: 4 to 110 credits a request on mini, 15 to 250 on pro |
| Free to start | $10 of credit, no card: 10,000 fast searches or 12,500 pages | $5 in free credits every month | 100 Web Search API queries a day through its MCP server, with no key | 1,000 API credits a month, no card |
Why give your model the web through SpecStream
Search and read on one key
A model needs two moves: find the pages, then read them. The Search API returns ranked sources with url, title, site, snippet and the published date where the page states it. passages=true adds the text of each page closest to the question, so most answers need no second call. When they do, the Extract API reads the URLs the model picked.
import os
import requests
H = {"Authorization": f"Bearer {os.environ['SPECSTREAM_API_KEY']}"}
found = requests.get(
"https://api.specstream.ai/v1/web-search",
params={"q": "EU AI Act obligations for general purpose models", "speed": "fast", "passages": "true"},
headers=H,
timeout=30,
).json()["data"]
context = "\n\n".join(
f"{s['url']}\n{s.get('excerpt') or s['snippet']}" for s in found["sources"]
)
read = requests.post(
"https://api.specstream.ai/v1/extract",
headers=H,
json={"urls": [s["url"] for s in found["sources"][:3]], "format": "markdown"},
timeout=60,
).json()["data"]
for page in read["results"]:
if page["status"] == "ok":
print(page["title"], len(page["text"]))
print(found["price_usd"], read["price_usd"])$1 per 1,000 searches
A fast search of up to 10 results costs $0.001. Each started block of 10 more adds $0.0012, so 50 results cost $0.0058. The default search, which also writes answer and rows, costs $0.005. A search that returns no results, a page with no text and a call answered 503 are not charged, and each reply carries its own price_usd.
Pages behind a refusal
A page that refuses a plain read is tried again as a browser would ask for it, then in a real browser, then from the site's own feed, then from its newest public archive capture. read_from says which one gave the text, and captured_at dates an archive copy. PDF, Word, Excel and EPUB files are read in the same call at the same $0.0008.
One MCP server for any client
Add https://api.specstream.ai/mcp (Streamable HTTP) to Claude, Cursor, VS Code or any MCP client, signed in with OAuth or an API key. The model gets search_web for a question and read_pages for up to 20 URLs, at the same prices as the API. Setup for each client is in the integration guides.
Keep the client you have
Code written for Tavily, Brave Search, You.com, Exa, Jina, Serper or the Google Custom Search JSON API keeps its request and its parser: change the base address to SpecStream's and send a SpecStream key. Each search through a drop-in address costs $1 per 1,000. The list with one curl line each is at https://api.specstream.ai/v1/search-dialects.
from tavily import TavilyClient
client = TavilyClient(api_key="<SpecStream key>", api_base_url="https://api.specstream.ai/tavily")
results = client.search("EU AI Act obligations for general purpose models", max_results=10)
pages = client.extract([r["url"] for r in results["results"][:3]])The top published score
The Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions (978 correct) and 64.0 item F1 and 43.4 row F1 on all 200 WideSearch tasks. The Extract API scores 0.908 F1 on WCXB. Every score and its method is on the benchmarks page.
What a call keeps
Zero retention is set per API key: a search made with such a key keeps no request text and no answer after the reply, and the Extract API keeps no page. Another key setting sends searches out only from our server in Madrid, in the EU. Every call is in the account's request log with its price.
Other LLM web access APIs
Jina Search and Reader
s.jina.ai searches and returns the top five results with their URLs and contents, and r.jina.ai reads one URL. Each search costs a fixed number of tokens, starting from 10,000, and every new key gets 10M free tokens. SpecStream answers both calls at https://api.specstream.ai/jina-search and https://api.specstream.ai/jina: see Jina Search compatible.
Exa
A search API with page contents in the reply: $4 per 1,000 requests on lite and $7 on auto, with up to 10 results. Its /contents endpoint is $1 per 1,000 pages per content type. SpecStream answers Exa's own POST /search and /contents at $1 per 1,000 searches and $0.80 per 1,000 pages: see Migrate from Exa.
Olostep
A web data API with an /answers endpoint that searches, reads and returns an answer with its sources, in 3 to 30 seconds by its own account. Plans start at $9 a month for 5,000 successful requests. SpecStream's search writes answer with its page and read time at $5 per 1,000, with no plan.
Firecrawl
Search at 2 credits per 10 results and scrape at 1 credit a page, with Standard at $99 a month for 100,000 credits. SpecStream answers Firecrawl's /v2/search and /v2/scrape on the same key: see Firecrawl migration.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to give a model web access with SpecStream
1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card.
2. Search with GET https://api.specstream.ai/v1/web-search?q=<the question>&speed=fast&passages=true and the key as a Bearer token. Hand the sources and their excerpt to the model.
3. Read the pages the model picks with POST https://api.specstream.ai/v1/extract and {"urls": [...]}, 1 to 20 a call.
4. Or give the model both as tools: add the MCP server https://api.specstream.ai/mcp. It calls search_web with {"q": "<the question>"} and read_pages with {"urls": ["<url>"]}.
{
"mcpServers": {
"specstream": {
"url": "https://api.specstream.ai/mcp",
"headers": { "Authorization": "Bearer <SpecStream key>" }
}
}
}5. Already on Tavily, Brave, You.com, Exa or Jina? Change the base address and the key. The platforms page lists every address.
Frequently asked questions
Something we didn't answer? Talk to a human
What is the best API to give an LLM web access?
How much does LLM web search cost?
Can the search reply carry page text?
passages=true and each source carries an excerpt of up to about 3,500 characters, the text of its page closest to the question.How does a model read a page it found?
POST /v1/extract, or let the model call read_pages over MCP. Each page costs $0.0008, up to 20 a call, and a page with no text costs nothing.Does it work with a local model?
Can I keep my Tavily or Brave code?
https://api.specstream.ai/tavily, or https://api.specstream.ai for Brave's web search, and send a SpecStream key. Each search costs $1 per 1,000.Is there a free tier?
Sources
SpecStream wrote this page. Each figure on another product comes from that product's own page.
- Brave Search API pricingbrave.com/search/api/, read Nov 12, 2026
- Brave LLM Context documentationapi-dashboard.search.brave.com/documentation/services/llm-context, read Nov 12, 2026
- You.com API pricingyou.com/pricing, read Nov 12, 2026
- Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 12, 2026
- Tavily search referencedocs.tavily.com/documentation/api-reference/endpoint/search.md, read Nov 12, 2026
- Jina Reader and Searchjina.ai/reader, read Nov 12, 2026
- Exa pricingexa.ai/docs/admin/pricing.md, read Nov 12, 2026
- Olostep, LLM searcholostep.com/blog/llm-search, read Nov 12, 2026
- Olostep pricingolostep.com/pricing, read Nov 12, 2026
- Firecrawl pricingfirecrawl.dev/pricing, read Nov 12, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 12, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 12, 2026




