OpenAI web search vs Parallel vs Exa vs Tavily in 2026
One key.
Per 1,000 searches: OpenAI's web search tool costs $10 plus the search content tokens, Parallel $1 to $5 by mode, Exa $4 to $7 by type, and Tavily $8 to $16 pay as you go.
SpecStream answers Parallel's, Exa's and Tavily's calls with one key at $1 per 1,000 searches of up to 10 results, and gives any model a search tool with no tokens billed. Its Search API scores 97.9 F-score on SimpleQA Verified.
New accounts get $10 of credit, no card. It covers 10,000 searches.
SpecStream, OpenAI web search, Parallel, Exa and Tavily side by side
| SpecStream | OpenAI web search | Parallel | Exa | Tavily | |
|---|---|---|---|---|---|
| The call your code sends | Parallel's, Exa's and Tavily's own calls at /parallel/v1/search, /exa/search and /tavily/search on https://api.specstream.ai, on one key. For any model, GET /v1/web-search or the MCP server at https://api.specstream.ai/mcp | A web_search tool in a Responses API request | POST https://api.parallel.ai/v1/search with search_queries, which is required, and a mode | POST https://api.exa.ai/search with query, numResults and a type, the key in x-api-key | POST https://api.tavily.com/search with query and a search_depth |
| Price per 1,000 searches | $1 for up to 10 results on every path. $5 for Parallel's advanced (its default), Exa's deep types, Tavily's advanced depth or the default search on /v1/web-search | $10 per 1,000 calls for web search. $25 per 1,000 for web search preview on models that do not reason | $1 on turbo and fast, $5 on basic and advanced. A call that names no mode runs advanced | $4 on lite, $7 on auto and fast, $12 on deep, for up to 10 results | 1 credit for a basic search and 2 for an advanced one, at $0.008 a credit pay as you go: $8 and $16 |
| Tokens on top | None. The reply's price_usd is what the call cost | Search content tokens billed at the model's rates. On some mini models, a fixed block of 8,000 input tokens per call | None. Excerpt length does not change the price | None. Priced per request | None. A request costs its credits |
| Results in one call | Up to 100 on the Parallel and Exa paths and on /v1/web-search, 20 on Tavily's. Each started block of 10 more adds $0.0012 | The model reads the results. The sources it read come back when you add web_search_call.action.sources to include | 10 included. Public modes cap results at 20, and each result beyond the first 10 adds $1 per 1,000 | numResults 1 to 100. Each result above 10 adds $1 per 1,000 | max_results 0 to 20 |
| What comes back | Each API's own JSON on its path. /v1/web-search returns the answer with the page it was read from and its read time, rows and the ranked sources | The model's answer with url_citation annotations: the URL, title and location of each cited source | Ranked URLs with excerpts from each page | Title, URL, published date and author for each result. Page text through Contents at $1 per 1,000 pages per content type | Ranked results, each with its content |
| Models and MCP | Any model, through the API, the Python and TypeScript SDKs or the MCP server | OpenAI models. The Agents SDK offers it among its built-in tools with OpenAIResponsesModel | Any model through the API, and a hosted MCP server whose web_search needs no key at lower rate limits | Any model through the API, and a hosted MCP server at https://mcp.exa.ai/mcp | Any model through the API, and a remote MCP server |
| Published accuracy | 97.9 F-score on all 1,000 SimpleQA Verified questions (978 correct), 64.0 item F1 on all 200 WideSearch tasks | Not in Parallel's September 2026 search run | 97% on SimpleQA Verified for advanced, in its own September 2026 run | 91% on SimpleQA Verified in the same Parallel run | 92% on SimpleQA Verified in the same Parallel run |
| Free to start | $10 of credit, no card, which covers 10,000 searches. Credit you buy never expires | No free tier in Parallel's November 2026 comparison table | $5 free monthly with a card on file, plus up to $80 at signup | $10 in credits on sign up, reset to $10 on the first of every month. No payment method | 1,000 free API credits every month |
Why teams choosing between OpenAI web search, Parallel, Exa and Tavily use SpecStream
Run the same question through all four
Each API keeps its own request and its own JSON on SpecStream. This script sends one question in Parallel's, Exa's and Tavily's format and to the SpecStream Search API, with one key, and prints the result count, the seconds each call took and the first link.
import os
import time
import requests
KEY = os.environ["SPECSTREAM_API_KEY"]
BASE = "https://api.specstream.ai"
Q = "who maintains the requests library for Python"
BEARER = {"Authorization": f"Bearer {KEY}"}
calls = {
"Parallel": lambda: requests.post(f"{BASE}/parallel/v1/search", headers={"x-api-key": KEY},
json={"search_queries": [Q], "mode": "fast"}, timeout=30).json()["results"],
"Exa": lambda: requests.post(f"{BASE}/exa/search", headers={"x-api-key": KEY},
json={"query": Q, "numResults": 10}, timeout=30).json()["results"],
"Tavily": lambda: requests.post(f"{BASE}/tavily/search", headers=BEARER,
json={"query": Q, "max_results": 10}, timeout=30).json()["results"],
"SpecStream": lambda: requests.get(f"{BASE}/v1/web-search", headers=BEARER,
params={"q": Q, "speed": "fast"}, timeout=30).json()["data"]["sources"],
}
for name, call in calls.items():
start = time.perf_counter()
results = call()
seconds = time.perf_counter() - start
print(f"{name}: {len(results)} results in {seconds:.2f} s, first: {results[0]['url']}")The four calls cost $0.004 together, from the $10 of credit a new account gets. Change Q to a question from your own logs and run it again.
Replace OpenAI's web search tool in an agent
In the OpenAI Agents SDK, remove WebSearchTool from the agent's tools and pass SpecStream in mcp_servers. The agent calls search_web and read_pages like its other tools, and the same code runs with any model the SDK supports.
import asyncio, os
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp
async def main():
params = {"url": "https://api.specstream.ai/mcp",
"headers": {"Authorization": f"Bearer {os.environ['SPECSTREAM_API_KEY']}"}}
async with MCPServerStreamableHttp(name="SpecStream", params=params, cache_tools_list=True) as server:
agent = Agent(name="Researcher", instructions="Search the web with SpecStream.", mcp_servers=[server])
print((await Runner.run(agent, "Who is the CEO of Mistral AI?")).final_output)
asyncio.run(main())Code that calls a model directly defines a function tool that calls GET https://api.specstream.ai/v1/web-search, and passes the reply's data to the model as the tool result. The Agents SDK guide and the framework docs have both.
What 100,000 searches cost on each
Take an agent that makes 100,000 searches a month of 10 results each, at list prices.
SpecStream: $100 on any of the three paths or with speed=fast, and $500 on the default search of /v1/web-search, which adds the answer and rows. No tokens on top.
OpenAI web search: $1,000 in tool calls, then the search content tokens at the model's rates.
Parallel: $100 on turbo or fast, $500 on basic or advanced.
Exa: $400 on lite, $700 on auto.
Tavily: $800 for basic searches pay as you go, or $500 a month on the Growth plan of 100,000 credits. Advanced searches take 2 credits each.
The most accurate web search API in the world
The SpecStream Search API scores a 97.9 F-score on all 1,000 official SimpleQA Verified questions, with 978 correct. On WideSearch it scores 64.0 item F1 and 43.4 row F1 on all 200 official tasks, and the Extract API scores 0.908 F1 on WCXB. The scores, the method and the other APIs' published scores are at specstream.ai/benchmarks.
The Parallel, Exa and Tavily figures in the table come from Parallel's own run of September 2026. OpenAI's built-in search was not in that run.
What each path reads and returns
Parallel: POST /parallel/v1/search reads search_queries, mode, advanced_settings.max_results up to 100, source_policy and excerpt_settings, and returns results[] with url, title, publish_date and excerpts. The search runs on search_queries; objective is accepted and does not change it. The parallel-web SDK takes base_url="https://api.specstream.ai/parallel".
Exa: POST /exa/search reads query, numResults up to 100, includeDomains, excludeDomains, the published date range, includeText, excludeText and contents.text, and returns results[] with id, url, title, publishedDate and text. In exa-py: Exa(api_key=<key>, base_url="https://api.specstream.ai/exa").
Tavily: POST /tavily/search reads query, max_results up to 20, search_depth, include_raw_content, include_answer, the domain lists, the time range and topic, and returns results[] with title, url and content. In tavily-python: TavilyClient(api_key=<key>, api_base_url="https://api.specstream.ai/tavily").
Every parameter and reply field, with what we measured, is in the Parallel, Exa and Tavily migration guides.
Zero retention on any key
Set zero_retention when you create a key, or later. A search made with that key keeps no request text and no answer after the reply. The charge keeps the account, the key, the request ID, the price and the time. Set eu_egress_only and the key's searches leave only from our server in Madrid.
Search, pages and rows on the same key
The same key reads up to 20 pages a call with the Extract API at $0.80 per 1,000 pages, a page with no text not charged, and runs Deep Search, which returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row. The most a Deep Search run can cost is approved before it starts.
Other search APIs for AI agents
Perplexity Search API
Ranked web results with no model: $5.00 per 1,000 requests, $1.00 with Fast Search. SpecStream answers Perplexity's POST /search at https://api.specstream.ai/perplexity, at $0.001 a search.
Brave Search API
Web search at $5 per 1,000 requests. SpecStream answers Brave's GET /res/v1/web/search at https://api.specstream.ai, at $0.001 a search.
Claude's web search tool
Web search on the Claude API costs $10 per 1,000 searches, plus standard token costs for the content it returns. SpecStream's MCP server and Search API give a Claude agent the same tool at $1 to $5 per 1,000, with no tokens billed for the search.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to move from each to SpecStream
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. Change the host where your code calls each API, and send the SpecStream key where that API takes its key:
Parallel: https://api.specstream.ai/parallel in place of https://api.parallel.ai, the key in x-api-key.
Exa: https://api.specstream.ai/exa in place of https://api.exa.ai, the key in x-api-key or as a Bearer token.
Tavily: https://api.specstream.ai/tavily in place of https://api.tavily.com, the key as a Bearer token.
OpenAI web search: drop the web_search tool and give the model SpecStream's MCP server or a function tool that calls /v1/web-search, as in the code above. The OpenAI web search alternatives page covers the Responses API in full.
3. Leave the parser as it is. On a 429, wait the seconds in Retry-After and send the call again. Nothing was charged.
Frequently asked questions
Something we didn't answer? Talk to a human
Which is best for an AI agent: OpenAI web search, Parallel, Exa or Tavily?
How much does each cost per 1,000 searches?
turbo and fast and $5 on basic and advanced. Exa is $4 on lite and $7 on auto. Tavily is $8 for basic and $16 for advanced at $0.008 a credit.Can I use a search API in place of OpenAI's web search tool?
web_search and give the model a function tool or an MCP server. SpecStream's MCP server at https://api.specstream.ai/mcp gives an OpenAI Agents SDK agent search_web and read_pages, at $1 to $5 per 1,000 searches with no tokens billed for the search.Can I keep my Parallel, Exa or Tavily code?
parallel-web, exa-py and tavily-python SDKs each take it as a setting, the request body stays the same, and the reply comes back in the same JSON.How many results does one call return?
Which one is free to start?
Sources
SpecStream wrote this page. Each figure for OpenAI, Parallel, Exa, Tavily and the other APIs comes from that company's own page.
- OpenAI API pricingdevelopers.openai.com/api/docs/pricing, read Nov 12, 2026
- OpenAI web search guidedevelopers.openai.com/api/docs/guides/tools-web-search, read Nov 12, 2026
- OpenAI Agents SDK toolsopenai.github.io/openai-agents-python/tools/, read Nov 12, 2026
- Parallel search modesdocs.parallel.ai/search/modes, read Nov 12, 2026
- Parallel pricingdocs.parallel.ai/getting-started/pricing, read Nov 12, 2026
- Parallel advanced search settingsdocs.parallel.ai/search/advanced-search-settings, read Nov 12, 2026
- Parallel MCP quickstartdocs.parallel.ai/integrations/mcp/quickstart, read Nov 12, 2026
- Parallel plans and free creditparallel.ai/pricing, read Nov 12, 2026
- Parallel: OpenAI web search vs Parallel vs Exa vs Tavilyparallel.ai/articles/openai-web-search-vs-parallel-vs-exa-vs-tavily-how-to-choose, read Nov 12, 2026
- Exa pricingexa.ai/docs/admin/pricing, read Nov 12, 2026
- Exa search referenceexa.ai/docs/reference/search, read Nov 12, 2026
- Tavily API creditsdocs.tavily.com/documentation/api-credits, read Nov 12, 2026
- Tavily search referencedocs.tavily.com/documentation/api-reference/endpoint/search, read Nov 12, 2026
- Tavily MCPdocs.tavily.com/documentation/mcp, read Nov 12, 2026
- Perplexity pricingdocs.perplexity.ai/docs/getting-started/pricing, read Nov 12, 2026
- Brave Search APIbrave.com/search/api/, read Nov 12, 2026
- Claude web search toolplatform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool, read Nov 12, 2026
- SpecStream pricingspecstream.ai/pricing, read Nov 12, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 12, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 12, 2026




