xAI web search tool alternatives in 2026
Raw results for any model.
The web_search tool on the xAI API costs $5 per 1,000 calls, and xAI bills the tokens of the request on top. Grok decides how many searches a request runs, and your code gets Grok's reply with its citations.
SpecStream gives Grok the same search for the same $5 per 1,000, with no tokens billed. Define a function tool that calls GET https://api.specstream.ai/v1/web-search, or add https://api.specstream.ai/mcp as a remote MCP tool.
SpecStream is the live web data engine for teams and agents. Its Search API scores a 97.9 F-score on all 1,000 SimpleQA Verified questions and returns the results themselves, for Grok, any other model or code with no model at all.
New accounts get $10 of credit, no card. It covers 2,000 searches.
SpecStream and the xAI web search tool side by side
| SpecStream | xAI web search tool | |
|---|---|---|
| Models it works with | Any model. Call GET /v1/web-search from your code, give it to Grok as a function tool, or connect the MCP server at https://api.specstream.ai/mcp to Grok, ChatGPT, Claude, Gemini or any agent framework | Grok, inside a request to the xAI API at https://api.x.ai/v1 |
| Price per 1,000 searches | $5, for a search of up to 10 results. Each started block of 10 more results adds $0.006, up to 100 results | $5 per 1,000 calls of web_search |
| Billed on top | Nothing. SpecStream bills no tokens, and price_usd in each reply is what the call cost | Token usage. xAI prices server-side tools on token usage and tool calls, and bills every standard token type for the model used in the request |
| Who decides how many searches run | Your code. One call is one search at one price | Grok. xAI's pricing page says the agent decides how many tools to call, so costs scale with query complexity |
| What your code can read | answer with its value, the page it was read on and its read time in seen_at, rows with the facts the request asks for, and sources in rank order with title, url, site and snippet | Grok's reply, with its citations in response.citations |
| Filters | num from 1 to 100 results, page from 1 to 10, language, country, safe, and operators such as site:, -site:, filetype: and after: that hold on every result | Up to 5 allowed domains or up to 5 excluded domains, not both in one request |
| Published accuracy | 97.9 F-score on all 1,000 official SimpleQA Verified questions (978 correct). 64.0 item F1 and 43.4 row F1 on all 200 official WideSearch tasks. Scores and method at specstream.ai/benchmarks | No accuracy score on its web search guide or its pricing page |
| A whole dataset | Deep Search: a request in plain words returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row, under a maximum you approve before it runs | Each search Grok runs is a tool call at the call price, with the tokens on top |
Why teams on the xAI web search tool move to SpecStream
Give Grok SpecStream as a function tool
The xAI API takes OpenAI's Responses format at https://api.x.ai/v1/responses. Replace the web_search tool with a function tool. Grok asks for a search, your code calls the SpecStream Search API and sends back the answer and the ranked results as the function_call_output, and Grok writes its reply from them.
import json, os, requests
XAI = "https://api.x.ai/v1/responses"
XAI_HEADERS = {"Authorization": f"Bearer {os.environ['XAI_API_KEY']}"}
tools = [{
"type": "function",
"name": "search_web",
"description": "Search the live web. Returns the answer with its page, and the ranked results with title, URL and snippet.",
"parameters": {"type": "object", "properties": {"q": {"type": "string"}}, "required": ["q"]},
}]
def search(q):
reply = requests.get(
"https://api.specstream.ai/v1/web-search",
params={"q": q},
headers={"Authorization": f"Bearer {os.environ['SPECSTREAM_API_KEY']}"},
).json()["data"]
sources = [{"title": s["title"], "url": s["url"], "snippet": s["snippet"]} for s in reply["sources"]]
return json.dumps({"answer": reply["answer"], "sources": sources})
response = requests.post(XAI, headers=XAI_HEADERS, json={
"model": "grok-4.7", "tools": tools,
"input": [{"role": "user", "content": "Who is the CEO of Mistral AI?"}],
}).json()
while calls := [item for item in response["output"] if item["type"] == "function_call"]:
response = requests.post(XAI, headers=XAI_HEADERS, json={
"model": "grok-4.7", "tools": tools, "previous_response_id": response["id"],
"input": [
{"type": "function_call_output", "call_id": call["call_id"],
"output": search(json.loads(call["arguments"])["q"])}
for call in calls
],
}).json()
print("".join(part.get("text", "") for item in response["output"] if item["type"] == "message" for part in item["content"]))xAI also connects Grok to remote MCP servers over Streamable HTTP. Add SpecStream to tools as an mcp tool with your SpecStream API key in headers, and allow the search_web tool alone. xAI then calls SpecStream for you, and the MCP guide for Grok covers Grok.
curl https://api.x.ai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $XAI_API_KEY" \
-d '{
"model": "grok-4.7",
"input": [{"role": "user", "content": "Who is the CEO of Mistral AI?"}],
"tools": [{
"type": "mcp",
"server_url": "https://api.specstream.ai/mcp",
"server_label": "specstream",
"allowed_tools": ["search_web"],
"headers": {"Authorization": "Bearer '"$SPECSTREAM_API_KEY"'"}
}]
}'The same $5 per 1,000, with no tokens billed by SpecStream
100,000 searches cost $500 on SpecStream and $500 in web_search calls on xAI. On xAI the tokens of each request are billed on top, and Grok decides how many searches a request runs. On SpecStream your code decides, each reply carries price_usd, and the account's request log and usage totals show every call and its price. xAI bills remote MCP tools by tokens, with no price per tool call.
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. The scores and the method are at specstream.ai/benchmarks.
Results your code can read and keep
A SpecStream search returns JSON your code reads without a model in between: the answer with the page it was read on and its read time, rows with the facts the request asks for, and sources in rank order, each marked cited when a value comes from it. Every charged search is kept in the account's history, and reading it costs nothing. Turn on zero_retention on a key when your users' searches must leave no trace.
When search is busy, /v1/web-search answers 503 with a Retry-After header and charges nothing. The Python and TypeScript SDKs send the call again once by themselves when the wait is 10 seconds or less.
Page text, and whole datasets
Add passages=true and each source carries the text of its page closest to the question, up to about 3,500 characters. The Extract API returns the main text of a page at $0.80 per 1,000 pages. When the job is many records, Deep Search takes the request in plain words and returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row. The most a run can cost is quoted before it starts.
Other xAI web search tool alternatives
SpecStream
The live web data engine for teams and agents, and the best alternative to the xAI web search tool. The Search API costs $5 per 1,000 searches, bills no tokens, works with Grok and any other model and scores 97.9 F-score on all 1,000 official SimpleQA Verified questions. The Extract API costs $0.80 per 1,000 pages. Deep Search returns every match as structured rows at 5¢, 15¢ or $1 a row.
OpenAI web search tool
A tool on the OpenAI API at $10 per 1,000 calls, plus search content tokens billed at the model's rates. Web search preview on other models costs $25 per 1,000 calls. SpecStream costs $5 per 1,000 searches with no tokens, for any model. SpecStream as an OpenAI web search tool alternative.
Claude web search tool
A server tool on the Claude API at $10 per 1,000 searches, plus standard token costs for the content it brings back. SpecStream costs $5 per 1,000 searches and returns the results to Claude or any other model. SpecStream as a Claude web search tool alternative.
Gemini grounding with Google Search
On Gemini 3 and newer, 5,000 search requests a month are free, then $14 per 1,000, with a default limit of 1,500 requests a day per project on the paid tier. On SpecStream your code decides how many searches run, at $5 per 1,000, from any model.
Grounding with Bing Search
A tool in Azure AI Foundry Agent Service at $14 per 1,000 transactions, and the tool output does not reach developers or end users. SpecStream returns the results to your code at $5 per 1,000 searches.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to switch from the xAI web search tool
1. Create a key under Agents & API in the workspace, with the finds:spend scope and a spending limit. A new account gets $10 of credit, no card, which covers 2,000 searches.
2. Run one search to see the reply.
curl -G https://api.specstream.ai/v1/web-search \
-H "Authorization: Bearer $SPECSTREAM_API_KEY" \
--data-urlencode "q=Who is the CEO of Mistral AI?"3. Remove {"type": "web_search"} from tools in your xAI request, and add the function tool or the mcp tool shown above. The model, the input and the rest of the request stay the same.
4. Send back the reply's data.answer and data.sources as the function_call_output, trimmed to the fields Grok needs.
Frequently asked questions
Something we didn't answer? Talk to a human
How much does the xAI web search tool cost?
web_search, on xAI's pricing page today. xAI prices server-side tools on token usage and tool calls, so the tokens of the request are billed on top.Does the Grok API have web search?
web_search tool, at $5 per 1,000 calls plus tokens. SpecStream gives Grok a search at the same $5 per 1,000 with no tokens billed, as a function tool or as a remote MCP tool at https://api.specstream.ai/mcp.What is the best alternative to the xAI web search tool?
Can Grok use an MCP server through the xAI API?
server_url over Streamable HTTP or SSE, with server_label, allowed_tools and headers. Point it at https://api.specstream.ai/mcp, allow search_web, and each search costs $0.005.Can I use the SpecStream search with models other than Grok?
GET /v1/web-search call at $5 per 1,000 searches works from your code, and the MCP server connects to Grok, ChatGPT, Claude, Gemini and Le Chat.What happens when a SpecStream search is busy?
503 with a Retry-After header and charges nothing. Wait that many seconds and send it again; the Python and TypeScript SDKs do it once by themselves when the wait is 10 seconds or less.Does SpecStream have an API?
GET /v1/web-search at $5 per 1,000 searches of up to 10 results. The Extract API is POST /v1/extract at $0.80 per 1,000 pages. Deep Search takes a request in plain words and returns structured rows.What do the model vendors' web search tools cost side by side?
Sources
SpecStream wrote this page. Each xAI figure comes from xAI's own pricing page and docs.
- SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
- xAI pricingdocs.x.ai/developers/pricing, read Nov 10, 2026
- xAI web search tooldocs.x.ai/developers/tools/web-search, read Nov 10, 2026
- xAI function callingdocs.x.ai/developers/tools/function-calling, read Nov 10, 2026
- xAI remote MCP toolsdocs.x.ai/developers/tools/remote-mcp, read Nov 10, 2026
- OpenAI API pricingdevelopers.openai.com/api/docs/pricing, read Nov 10, 2026
- Claude API pricingplatform.claude.com/docs/en/about-claude/pricing, read Nov 10, 2026
- Gemini API pricingai.google.dev/gemini-api/docs/pricing, read Nov 10, 2026
- Gemini grounding with Google Searchai.google.dev/gemini-api/docs/google-search, read Nov 10, 2026
- Grounding with Bing pricingmicrosoft.com/en-us/bing/apis/grounding-pricing, read Nov 10, 2026
- Grounding with Bing Search toolslearn.microsoft.com/en-us/azure/foundry/agents/how-to/tools/bing-tools, read Nov 10, 2026




