LiteLLM web search
One key behind the search providers it ships.
On November 10, 2026, LiteLLM's own provider code searched through SpecStream on production with only the address and key changed: Parallel, Perplexity Search, Linkup, You.com and SearchApi. Google PSE and SearXNG passed on November 9.
Set the provider's _API_BASE variable to its SpecStream address and its key variable to your SpecStream key. For Parallel that is PARALLEL_AI_API_BASE=https://api.specstream.ai/parallel. Your search_provider and your code stay as they are.
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 LiteLLM search provider and the setting that points it at SpecStream, from LiteLLM's source on Nov 10, 2026
| Setting in LiteLLM | Value for SpecStream | What LiteLLM sends by default | |
|---|---|---|---|
| Parallel | PARALLEL_AI_API_BASE, key in PARALLEL_AI_API_KEY | https://api.specstream.ai/parallel (Parallel migration guide) | https://api.parallel.ai, with /v1/search added |
| Perplexity Search | PERPLEXITY_API_BASE, key in PERPLEXITYAI_API_KEY | https://api.specstream.ai/perplexity (Perplexity Search migration guide) | https://api.perplexity.ai, with /search added |
| Linkup | LINKUP_API_BASE, key in LINKUP_API_KEY | https://api.specstream.ai/linkup/v1 (Linkup migration guide) | https://api.linkup.so/v1, with /search added |
| You.com | YOUCOM_API_BASE, key in YOUCOM_API_KEY | https://api.specstream.ai/you (You.com migration guide) | https://ydc-index.io, with /v1/search added |
| SearchApi | SEARCHAPI_API_BASE, key in SEARCHAPI_API_KEY | https://api.specstream.ai/searchapi/api/v1/search (SearchApi migration guide) | https://www.searchapi.io/api/v1/search, the whole address |
| Google PSE | GOOGLE_PSE_API_BASE, key in GOOGLE_PSE_API_KEY | https://api.specstream.ai/customsearch/v1 (Google PSE migration guide) | https://www.googleapis.com/customsearch/v1, the whole address |
| SearXNG | SEARXNG_API_BASE, key in SEARXNG_API_KEY | https://api.specstream.ai/searxng (SearXNG migration guide) | No default: LiteLLM stops until the address is set |
Why LiteLLM teams set SpecStream behind their search providers
The setting, provider by provider
Set the two variables where LiteLLM runs, in your shell, your container or the proxy's environment, and search with the same search_provider as before. Each value below passed on production through LiteLLM's own provider code.
Parallel: LiteLLM adds /v1/search to the base, so the value ends in /parallel. The key goes in PARALLEL_AI_API_KEY, which LiteLLM sends as x-api-key. Every parameter and field of the route is in the Parallel migration guide.
# Parallel, search_provider="parallel_ai"
PARALLEL_AI_API_BASE=https://api.specstream.ai/parallel
PARALLEL_AI_API_KEY=<YOUR_SPECSTREAM_KEY>Perplexity Search: LiteLLM adds /search. Its key variable is PERPLEXITYAI_API_KEY, not PERPLEXITY_API_KEY: with only the second one set, LiteLLM stops before it sends the call. Every parameter and field of the route is in the Perplexity Search migration guide.
# Perplexity Search, search_provider="perplexity"
PERPLEXITY_API_BASE=https://api.specstream.ai/perplexity
PERPLEXITYAI_API_KEY=<YOUR_SPECSTREAM_KEY>Linkup: The value ends in /linkup/v1, as Linkup's own base ends in /v1. LiteLLM adds /search and sends the key as a Bearer token. Every parameter and field of the route is in the Linkup migration guide.
# Linkup, search_provider="linkup"
LINKUP_API_BASE=https://api.specstream.ai/linkup/v1
LINKUP_API_KEY=<YOUR_SPECSTREAM_KEY>You.com: Set YOUCOM_API_KEY: with a key LiteLLM calls the keyed endpoint, /v1/search on the base. LiteLLM reads results.web[] from the reply as before. Every parameter and field of the route is in the You.com migration guide.
# You.com, search_provider="you_com"
YOUCOM_API_BASE=https://api.specstream.ai/you
YOUCOM_API_KEY=<YOUR_SPECSTREAM_KEY>SearchApi: LiteLLM uses this value as the whole search address, so it ends in /api/v1/search. The key travels as api_key in the query string. Every parameter and field of the route is in the SearchApi migration guide.
# SearchApi, search_provider="searchapi"
SEARCHAPI_API_BASE=https://api.specstream.ai/searchapi/api/v1/search
SEARCHAPI_API_KEY=<YOUR_SPECSTREAM_KEY>Google PSE: LiteLLM requires GOOGLE_PSE_ENGINE_ID, so keep your current value. SpecStream accepts cx and does not use it. Every parameter and field of the route is in the Google PSE migration guide.
# Google PSE, search_provider="google_pse"
GOOGLE_PSE_API_BASE=https://api.specstream.ai/customsearch/v1
GOOGLE_PSE_API_KEY=<YOUR_SPECSTREAM_KEY>
GOOGLE_PSE_ENGINE_ID=<keep your current value>SearXNG: LiteLLM adds /search and sends SEARXNG_API_KEY as a Bearer token, which the SearXNG route reads. You run no SearXNG server. Every parameter and field of the route is in the SearXNG migration guide.
# SearXNG, search_provider="searxng"
SEARXNG_API_BASE=https://api.specstream.ai/searxng
SEARXNG_API_KEY=<YOUR_SPECSTREAM_KEY>Check the key before you set it
This is the call LiteLLM's perplexity provider makes on our address. Run it once with your key and you see the reply LiteLLM reads: results[] with title, url and snippet. A wrong key gets a 401.
curl -X POST https://api.specstream.ai/perplexity/search \
-H "Authorization: Bearer $SPECSTREAM_KEY" -H "Content-Type: application/json" \
-d '{"query": "open source vector databases", "max_results": 5}'One key for every provider name in your code
LiteLLM gives each search vendor its own key and its own bill. With SpecStream behind them, parallel_ai, perplexity, linkup, you_com, google_pse and searxng all run on one key, one balance and one request log, at one price. A team keeps the provider names its code and its proxy tools already use.
Your google_pse provider keeps working after 2026
Google closed the Custom Search JSON API to new customers, and existing customers have until January 1, 2027 to move. With GOOGLE_PSE_API_BASE on SpecStream, LiteLLM still reads items[] as it was built to, with no daily limit.
$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 LiteLLM 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 search providers in LiteLLM
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 up to 600 searches a minute. With PARALLEL_AI_API_BASE on SpecStream, the same parallel_ai calls cost $0.005 for up to 10 results on $10 of credit, no card.
Perplexity Search API
One endpoint at $5.00 per 1,000 successful requests, and a reply with no results is still billed. With PERPLEXITY_API_BASE on SpecStream, the perplexity provider searches at the same $5 per 1,000 with a 97.9 F-score on SimpleQA Verified.
Linkup
A search API at $0.005 a call for search results and $0.05 for a deep search, with $20 of credit at sign up for a professional email and 10 queries a second. On SpecStream, LINKUP_API_BASE keeps the same linkup calls at $0.005, and one account takes up to 26,666 searches a minute.
You.com Search API
$5.00 per 1,000 calls, $10 of free credit for 2,000 searches, and 10 requests a second on /v1/search. With YOUCOM_API_BASE on SpecStream, the you_com provider runs at $5 per 1,000 searches on the same key as every other provider.
SearchApi
Google results as JSON at $4 per 1,000 searches on the Developer plan of 10,000 searches, with 100 free requests to start. With SEARCHAPI_API_BASE on SpecStream there is no plan: each search takes $0.005 from a balance that never expires.
Google Programmable Search Engine
The Custom Search JSON API cost $5 per 1,000 queries, up to 10,000 a day, and it is closed to new customers. With GOOGLE_PSE_API_BASE on SpecStream, the google_pse provider searches the whole live web at the same $5 per 1,000, with no daily cap.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to set SpecStream as web search in LiteLLM
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 LiteLLM will make.
import requests
KEY = "YOUR_SPECSTREAM_KEY"
reply = requests.post(
"https://api.specstream.ai/perplexity/search",
headers={"Authorization": f"Bearer {KEY}"},
json={"query": "open source vector databases", "max_results": 5},
).json()
for result in reply["results"]:
print(result["title"], result["url"])3. Set the provider's base variable and key variable from the table where LiteLLM runs. For Perplexity Search:
PERPLEXITY_API_BASE=https://api.specstream.ai/perplexity
PERPLEXITYAI_API_KEY=<YOUR_SPECSTREAM_KEY>4. Restart LiteLLM or the proxy and search with the same search_provider as before. Every call is billed as one search on your key, inside the spending limit the key carries.
When an 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 add web search to LiteLLM?
PARALLEL_AI_API_BASE=https://api.specstream.ai/parallel with your SpecStream key in PARALLEL_AI_API_KEY gives litellm.search the whole live web at $5 per 1,000 searches, and it passed on production on November 10, 2026.What is the api_base for Perplexity search in LiteLLM?
https://api.specstream.ai/perplexity, set as PERPLEXITY_API_BASE. LiteLLM adds /search itself and reads the key from PERPLEXITYAI_API_KEY, so set that variable and not PERPLEXITY_API_KEY.How do I use Parallel search in LiteLLM?
litellm.search with search_provider="parallel_ai". Set PARALLEL_AI_API_BASE=https://api.specstream.ai/parallel and your SpecStream key in PARALLEL_AI_API_KEY, and each call costs $0.005 for up to 10 results.Does LiteLLM's google_pse provider work after January 1, 2027?
GOOGLE_PSE_API_BASE=https://api.specstream.ai/customsearch/v1, keep GOOGLE_PSE_ENGINE_ID, and the provider reads items[] as before.How much does web search in LiteLLM cost with SpecStream?
Do I need a SearXNG server for LiteLLM's searxng provider?
SEARXNG_API_BASE=https://api.specstream.ai/searxng and your key in SEARXNG_API_KEY, and SpecStream answers in SearXNG's JSON at about 0.82 s a search at the median on production.Can one key serve several LiteLLM search providers?
Sources
SpecStream wrote this page. Each LiteLLM setting comes from LiteLLM's source on GitHub, and each figure on another provider from that company's own page.
- LiteLLM Parallel search providergithub.com/BerriAI/litellm/blob/main/litellm/llms/parallel_ai/search/transformation.py, read Nov 10, 2026
- LiteLLM Perplexity search providergithub.com/BerriAI/litellm/blob/main/litellm/llms/perplexity/search/transformation.py, read Nov 10, 2026
- LiteLLM Linkup search providergithub.com/BerriAI/litellm/blob/main/litellm/llms/linkup/search/transformation.py, read Nov 10, 2026
- LiteLLM You.com search providergithub.com/BerriAI/litellm/blob/main/litellm/llms/you_com/search/transformation.py, read Nov 10, 2026
- LiteLLM SearchApi search providergithub.com/BerriAI/litellm/blob/main/litellm/llms/searchapi/search/transformation.py, read Nov 10, 2026
- LiteLLM Google PSE search providergithub.com/BerriAI/litellm/blob/main/litellm/llms/google_pse/search/transformation.py, read Nov 10, 2026
- LiteLLM SearXNG search providergithub.com/BerriAI/litellm/blob/main/litellm/llms/searxng/search/transformation.py, read Nov 10, 2026
- Google Custom Search JSON API overviewdevelopers.google.com/custom-search/v1/overview, read Nov 9, 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
- 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
- Linkup pricingdocs.linkup.so/pages/documentation/platform/pricing.md, read Nov 10, 2026
- Linkup rate limitsdocs.linkup.so/pages/documentation/platform/rate-limits.md, read Nov 10, 2026
- You.com billingyou.com/docs/administration/billing.md, read Nov 10, 2026
- You.com plansyou.com/plans?hsLang=en, read Nov 10, 2026
- You.com rate limitsyou.com/docs/rate-limits.md, read Nov 10, 2026
- SearchApi pricingsearchapi.io/pricing, 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




