Skip to the page

The most accurate web search API in the world

Ask in plain words, in any language, and get an answer from the live web in a few seconds. One GET request returns the answer, the matching rows, and the search results read.

GET /v1/web-search
curl -G https://api.specstream.ai/v1/web-search \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" \
  --data-urlencode "q=Who is the CEO of Stripe?"
Reply, cut short
{
  "data": {
    "kind": "fact",
    "query": "Who is the CEO of Stripe",
    "answer": {
      "value": "Patrick Collison",
      "page": "https://en.wikipedia.org/wiki/Patrick_Collison",
      "seen_at": "2026-11-05T01:06:52+00:00"
    },
    "rows": [
      {
        "name": "Patrick Collison",
        "page": "https://en.wikipedia.org/wiki/Patrick_Collison",
        "probability": 0.64
      }
    ],
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Patrick_Collison",
        "title": "Patrick Collison - Wikipedia",
        "site": "en.wikipedia.org",
        "cited": true
      },
      {
        "url": "https://www.forbes.com/profile/patrick-collison/",
        "title": "Patrick Collison - Forbes",
        "site": "forbes.com",
        "cited": false
      }
    ],
    "took_ms": 2404,
    "price_usd": 0.005
  }
}

The search API on WideSearch and SimpleQA Verified

The SpecStream search API leads both benchmarks.

SpecStreamParallelExaTavilyPerplexity
Web researchWideSearch, GPT-5.6 Luna60.945.553.047.947.0
Factual accuracySimpleQA Verified, GPT-5.6 Luna9694919494
Factual accuracySimpleQA Verified, GPT-5.6 Sol9997919295

Scores and method

$5

per 1,000 searches

Each search comes out of your balance. It needs no quote and no approval.

Any language
Write q in plain words, up to 2,000 characters. Quoted phrases are searched as phrases.
Idempotency-Key
Send the header to retry safely. A call is charged once per key.

What a call returns

Each reply has a kind: fact for a question with one answer, list for a request with many results. Every charged call stays in your account's history, and reading the history costs nothing.

answer
The value, when the question has one answer. It stays null unless two sites print the value or it rates as likelier than not. Every value found stays in rows.
rows
Each result with its name, page, snippet, the probability that it matches, and the facts the request asks for. Source URL and read time on every value.
sources
The search results read, in rank order, each with its URL, title, site, snippet, and published date when the result gives one.
handoff
For a request with many results: the estimated size of the full set and the next call to make, which prices it as a Deep Search.
passages
Add passages=true to get the text of the top pages closest to the request, each with its URL and title. The call takes up to about a second more.

Search API questions

Something we didn't answer? Talk to a human

What makes it the most accurate web search API?
It leads WideSearch and SimpleQA Verified. Scores and method are on the benchmarks page.
How is a search charged?
Each call comes out of your balance at $5 per 1,000 searches, with no quote and no approval. A call stopped by a 503 is not charged. Wait the seconds in Retry-After and send it again.
What if my request has many results?
The reply has kind list, with the rows found so far and a handoff. The handoff gives the estimated size and the next call, and that call prices the full request as a Deep Search.
How do I call it?
Send GET /v1/web-search with your API key, or use search_web on MCP, web_search in Python, webSearch in TypeScript, or specstream web-search in the CLI.

Run your first search

Sign up and get $10 of credit, no card.