OpenClaw web search
The setting that points it at SpecStream.
Four OpenClaw web search plugins take a base address that SpecStream answers: Parallel, Tavily, Brave and SearXNG. On November 10, 2026 the Parallel and Tavily plugins' own code ran on production with only that address and the key changed.
In the Parallel plugin, set plugins.entries.parallel.config.webSearch.baseUrl to https://api.specstream.ai/parallel and put your SpecStream key in apiKey. The agent's web_search tool calls our address and reads the results as before.
SpecStream is the most accurate web search API in the world: 97.9 F-score on all 1,000 SimpleQA Verified questions, at $5 per 1,000 searches. New accounts get $10 of credit, which covers 2,000 searches.
New accounts get $10 of credit, no card. It covers 2,000 searches.
Each OpenClaw search setting and its value for SpecStream, from OpenClaw's plugin source on Nov 10, 2026
| Setting in OpenClaw | Value for SpecStream | What OpenClaw sends by default | |
|---|---|---|---|
| Parallel | plugins.entries.parallel.config.webSearch.baseUrl, key in apiKey | https://api.specstream.ai/parallel (Parallel migration guide) | https://api.parallel.ai, with /v1/search added |
| Tavily web search | plugins.entries.tavily.config.webSearch.baseUrl, key in apiKey | https://api.specstream.ai/tavily (Tavily migration guide) | https://api.tavily.com, with /search added |
| Tavily extract | The same Tavily baseUrl and apiKey | https://api.specstream.ai/tavily (Tavily Extract migration guide) | https://api.tavily.com, with /extract added |
| Tavily by environment | TAVILY_BASE_URL and TAVILY_API_KEY on the Gateway | https://api.specstream.ai/tavily (Tavily migration guide) | https://api.tavily.com when neither is set |
| SearXNG | plugins.entries.searxng.config.webSearch.baseUrl, key in the address | https://api.specstream.ai/searxng/<key> (SearXNG migration guide) | No default: the plugin stops until an address is set |
| SearXNG by environment | SEARXNG_BASE_URL on the Gateway | https://api.specstream.ai/searxng/<key> (SearXNG migration guide) | No default |
| Brave | plugins.entries.brave.config.webSearch.baseUrl, key in apiKey | https://api.specstream.ai (Brave migration guide) | https://api.search.brave.com, with /res/v1/web/search added |
| Firecrawl | plugins.entries.firecrawl.config.webSearch.baseUrl | None. The plugin accepts only Firecrawl's own host or a private one, so it stays as it is | https://api.firecrawl.dev |
Why OpenClaw users set SpecStream as their search
The setting, plugin by plugin
Each block goes in your OpenClaw config, and tools.web.search.provider names the plugin the agent searches with. Install the plugin first if you have not. Each value below ran on production through the plugin's own request and reply code.
Parallel: OpenClaw adds /v1/search to the base and sends the key as x-api-key. Every parameter and field is in the Parallel migration guide.
{
plugins: {
entries: {
parallel: {
enabled: true,
config: {
webSearch: {
apiKey: "<YOUR_SPECSTREAM_KEY>",
baseUrl: "https://api.specstream.ai/parallel",
},
},
},
},
},
tools: {
web: {
search: {
provider: "parallel",
},
},
},
}Tavily: OpenClaw adds /search for web_search and /extract for page reads, so one baseUrl serves both. TAVILY_BASE_URL and TAVILY_API_KEY on the Gateway do the same when the config has no value. See the Tavily migration guide and the Tavily Extract migration guide.
{
plugins: {
entries: {
tavily: {
enabled: true,
config: {
webSearch: {
apiKey: "<YOUR_SPECSTREAM_KEY>",
baseUrl: "https://api.specstream.ai/tavily",
},
},
},
},
},
tools: {
web: {
search: {
provider: "tavily",
},
},
},
}Brave: OpenClaw puts /res/v1/web/search on the base itself and sends the key as X-Subscription-Token. Every parameter and field is in the Brave migration guide.
{
plugins: {
entries: {
brave: {
enabled: true,
config: {
webSearch: {
apiKey: "<YOUR_SPECSTREAM_KEY>",
baseUrl: "https://api.specstream.ai",
},
},
},
},
},
tools: {
web: {
search: {
provider: "brave",
},
},
},
}SearXNG: the plugin sends no key header, so the key goes in the address as its path part, and OpenClaw adds /search. SEARXNG_BASE_URL on the Gateway takes the same value. See the SearXNG migration guide.
{
plugins: {
entries: {
searxng: {
enabled: true,
config: {
webSearch: {
baseUrl: "https://api.specstream.ai/searxng/<YOUR_SPECSTREAM_KEY>",
},
},
},
},
},
tools: {
web: {
search: {
provider: "searxng",
},
},
},
}What OpenClaw's endpoint checks allow
OpenClaw's endpoint checks block only private network targets reached over plain http; a public https:// address is accepted. Its Firecrawl plugin is the exception: it takes only Firecrawl's own host or a private one, so point the Tavily plugin at SpecStream for page reads.
Check the key before you save it
This is the call OpenClaw's Tavily plugin makes for web_search. Run it once with your key and you see the results[] with title, url and content that the agent reads. A wrong key gets a 401.
curl -X POST https://api.specstream.ai/tavily/search \
-H "Authorization: Bearer $SPECSTREAM_KEY" -H "Content-Type: application/json" \
-d '{"query": "open source vector databases", "max_results": 5}'$5 per 1,000 searches, with nothing to subscribe to
A search call of up to 10 results is one search at $0.005, on every provider you point at SpecStream. Each 10 results more in the same call add $0.006, up to 100 results. A page read is one Extract API page at $0.0008. A call stopped for load is not charged, and credit you buy never expires.
The most accurate web search API in the world
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 page.
About one second a search, measured under load
Every drop-in route runs on the fast search. On November 9, 2026 production took 1, 5, 10 and 20 searches a second through it and answered 718 of 720. The median was 0.82 s at 1 search a second and 1.07 s at 20 a second, and the 95th percentile stayed between 1.09 and 1.73 s. One account takes up to 26,666 searches a minute; a call over that comes back with Retry-After and is not charged.
You decide what is kept, on each key
Create a key with zero_retention and a search made with it keeps no request text and no answer after the reply: not in the history, not in a log line. spend_cap_cents is the most the key can spend, so an agent that loops in OpenClaw stops at the cap you set.
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 at $0.80 per 1,000 pages, and runs Deep Search: a request in plain words returns every match on the live web as rows, at 5¢, 15¢ or $1 a row, with the most a run can cost quoted before it starts.
Other web search providers in OpenClaw
Parallel
A search API at $1 per 1,000 requests in fast mode and $5 in basic and advanced, with 10 results a request and 600 searches a minute. With the plugin's baseUrl on SpecStream, the same calls cost $0.005 for up to 10 results on $10 of credit, no card.
Tavily
A search API billed in credits: $0.008 a credit on pay as you go, 1 credit for a basic search and 2 for an advanced one. With baseUrl on SpecStream, a search is $0.005 and an extracted page $0.0008, with no credits to count.
Brave Search API
A search API on Brave's own index at $5 per 1,000 requests, with $5 in free credits every month and up to 50 queries per second. SpecStream searches the whole live web at the same $5 per 1,000 through the Parallel, Tavily or SearXNG plugin, or through the Brave plugin itself with its baseUrl set to https://api.specstream.ai, with a 97.9 F-score on SimpleQA Verified.
Firecrawl
Search and scrape billed in credits: 2 credits per 10 search results, 1 credit a page on a basic scrape, and Hobby at $19 a month. OpenClaw's Firecrawl plugin calls only Firecrawl's host. Through the Tavily plugin on SpecStream, a search is $0.005 and a page is $0.0008, with no plan to buy.
Exa
A search API at $7 per 1,000 requests on auto and $4 on lite, with the first 10 results in the base price. SpecStream answers at $5 per 1,000 searches of up to 10 results on any of the four plugins above.
Perplexity Search API
One endpoint at $5.00 per 1,000 successful requests, and a reply with no results is still billed. On SpecStream a search costs the same $0.005, and the agent gets the most accurate results on SimpleQA Verified.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to set SpecStream as web search in OpenClaw
1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 2,000 searches.
2. Check the key with the call OpenClaw's Parallel plugin will make.
import requests
KEY = "YOUR_SPECSTREAM_KEY"
reply = requests.post(
"https://api.specstream.ai/parallel/v1/search",
headers={"x-api-key": KEY},
json={"search_queries": ["open source vector databases"]},
).json()
for result in reply["results"]:
print(result["title"], result["url"])3. Install the Parallel plugin with openclaw plugins install @openclaw/parallel-plugin if you have not. Add its block to your OpenClaw config with baseUrl set to https://api.specstream.ai/parallel and your key in apiKey, then restart the Gateway.
4. Ask your agent about something from this week. web_search runs on SpecStream, and every call is billed as one search on your key, inside the spending limit the key carries.
When the agent needs a whole dataset in place of a results page, write the request in plain words. SpecStream reads it back as the conditions every row must meet, quotes the most it can cost, and delivers the rows after you approve.
Frequently asked questions
Something we didn't answer? Talk to a human
How do I change the web search provider in OpenClaw?
tools.web.search.provider to the plugin you want and give that plugin a baseUrl. With parallel and baseUrl set to https://api.specstream.ai/parallel, the agent searches the whole live web at $5 per 1,000 searches.What is the Tavily base URL setting in OpenClaw?
plugins.entries.tavily.config.webSearch.baseUrl, or TAVILY_BASE_URL on the Gateway. Set it to https://api.specstream.ai/tavily and both web_search and page extraction run on SpecStream, at $0.005 a search and $0.0008 a page.How do I use Parallel search in OpenClaw?
@openclaw/parallel-plugin, set plugins.entries.parallel.config.webSearch.baseUrl to https://api.specstream.ai/parallel and your SpecStream key in apiKey. OpenClaw adds /v1/search and sends the key as x-api-key, and it ran on production on November 10, 2026.Do I need to host SearXNG for OpenClaw?
baseUrl to https://api.specstream.ai/searxng/<key> and SpecStream answers in SearXNG's JSON, at about 0.82 s a search at the median on production.Can OpenClaw's Firecrawl plugin use another host?
How much does web search in OpenClaw cost with SpecStream?
Sources
SpecStream wrote this page. Each OpenClaw setting comes from the plugin's source on GitHub, and each figure on another provider from that company's own page.
- OpenClaw Parallel plugin, search runtimegithub.com/openclaw/openclaw/blob/main/extensions/parallel/src/parallel-web-search-provider.runtime.ts, read Nov 10, 2026
- OpenClaw Parallel plugin, READMEgithub.com/openclaw/openclaw/blob/main/extensions/parallel/README.md, read Nov 10, 2026
- OpenClaw Tavily plugin, clientgithub.com/openclaw/openclaw/blob/main/extensions/tavily/src/tavily-client.ts, read Nov 10, 2026
- OpenClaw SearXNG plugin, clientgithub.com/openclaw/openclaw/blob/main/extensions/searxng/src/searxng-client.ts, read Nov 10, 2026
- OpenClaw Firecrawl plugin, clientgithub.com/openclaw/openclaw/blob/main/extensions/firecrawl/src/firecrawl-client.ts, read Nov 10, 2026
- Parallel search modesdocs.parallel.ai/search/modes.md, read Nov 10, 2026
- Parallel pricingdocs.parallel.ai/getting-started/pricing.md, read Nov 10, 2026
- Parallel rate limitsdocs.parallel.ai/getting-started/rate-limits.md, read Nov 10, 2026
- Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 10, 2026
- Brave Search APIbrave.com/search/api/, read Nov 10, 2026
- Firecrawl pricingfirecrawl.dev/pricing, read Nov 9, 2026
- Exa pricingexa.ai/docs/admin/pricing.md, read Nov 10, 2026
- Perplexity Search API overviewdocs.perplexity.ai/docs/search/overview.md, read Nov 10, 2026
- Perplexity pricingdocs.perplexity.ai/docs/getting-started/pricing.md, read Nov 10, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
- SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026




