<!-- twin of https://specstream.ai/web-search/litellm -->
# LiteLLM web search: one key behind the search providers it ships

Compared on Nov 10, 2026. The page: https://specstream.ai/web-search/litellm

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.

[Get an API key](https://specstream.ai/signup?src=alternatives-web-search-litellm&utm_source=alternatives-md&utm_campaign=web-search-litellm&returnTo=%2Fworkspace%2Fagents%3Ftab%3Dkeys) 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://specstream.ai/migrate/parallel?utm_source=alternatives&utm_campaign=web-search-litellm)) | `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://specstream.ai/migrate/perplexity?utm_source=alternatives&utm_campaign=web-search-litellm)) | `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://specstream.ai/migrate/linkup?utm_source=alternatives&utm_campaign=web-search-litellm)) | `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://specstream.ai/migrate/you?utm_source=alternatives&utm_campaign=web-search-litellm)) | `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://specstream.ai/migrate/searchapi?utm_source=alternatives&utm_campaign=web-search-litellm)) | `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://specstream.ai/migrate/google-custom-search?utm_source=alternatives&utm_campaign=web-search-litellm)) | `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](https://specstream.ai/migrate/searxng?utm_source=alternatives&utm_campaign=web-search-litellm)) | 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](https://specstream.ai/migrate/parallel?utm_source=alternatives&utm_campaign=web-search-litellm).

```
# 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](https://specstream.ai/migrate/perplexity?utm_source=alternatives&utm_campaign=web-search-litellm).

```
# 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](https://specstream.ai/migrate/linkup?utm_source=alternatives&utm_campaign=web-search-litellm).

```
# 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](https://specstream.ai/migrate/you?utm_source=alternatives&utm_campaign=web-search-litellm).

```
# 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](https://specstream.ai/migrate/searchapi?utm_source=alternatives&utm_campaign=web-search-litellm).

```
# 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](https://specstream.ai/migrate/google-custom-search?utm_source=alternatives&utm_campaign=web-search-litellm).

```
# 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](https://specstream.ai/migrate/searxng?utm_source=alternatives&utm_campaign=web-search-litellm).

```
# 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](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=web-search-litellm) 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](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=web-search-litellm) at $0.80 per 1,000 pages, and runs [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=web-search-litellm): 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 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

### How do I add web search to LiteLLM?

Set one base variable and one key variable for a search provider LiteLLM ships. `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?

Call `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?

Not on Google's address, which Google ends on January 1, 2027. Set `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?

$0.005 a call of up to 10 results, $5 per 1,000 searches, on every provider you point at SpecStream. New accounts get $10 of credit, no card, and credit you buy never expires.

### Do I need a SearXNG server for LiteLLM's searxng provider?

No. Set `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?

Yes. One SpecStream key answers Parallel, Perplexity Search, Linkup, You.com, SearchApi, Google PSE and SearXNG, each through its own variable, with one balance and one request log.

## 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 provider](https://github.com/BerriAI/litellm/blob/main/litellm/llms/parallel_ai/search/transformation.py), read Nov 10, 2026
- [LiteLLM Perplexity search provider](https://github.com/BerriAI/litellm/blob/main/litellm/llms/perplexity/search/transformation.py), read Nov 10, 2026
- [LiteLLM Linkup search provider](https://github.com/BerriAI/litellm/blob/main/litellm/llms/linkup/search/transformation.py), read Nov 10, 2026
- [LiteLLM You.com search provider](https://github.com/BerriAI/litellm/blob/main/litellm/llms/you_com/search/transformation.py), read Nov 10, 2026
- [LiteLLM SearchApi search provider](https://github.com/BerriAI/litellm/blob/main/litellm/llms/searchapi/search/transformation.py), read Nov 10, 2026
- [LiteLLM Google PSE search provider](https://github.com/BerriAI/litellm/blob/main/litellm/llms/google_pse/search/transformation.py), read Nov 10, 2026
- [LiteLLM SearXNG search provider](https://github.com/BerriAI/litellm/blob/main/litellm/llms/searxng/search/transformation.py), read Nov 10, 2026
- [Google Custom Search JSON API overview](https://developers.google.com/custom-search/v1/overview), read Nov 9, 2026
- [Parallel search modes](https://docs.parallel.ai/search/modes.md), read Nov 10, 2026
- [Parallel pricing](https://docs.parallel.ai/getting-started/pricing.md), read Nov 10, 2026
- [Parallel rate limits](https://docs.parallel.ai/getting-started/rate-limits.md), read Nov 10, 2026
- [Perplexity Search API overview](https://docs.perplexity.ai/docs/search/overview.md), read Nov 10, 2026
- [Perplexity pricing](https://docs.perplexity.ai/docs/getting-started/pricing.md), read Nov 10, 2026
- [Linkup pricing](https://docs.linkup.so/pages/documentation/platform/pricing.md), read Nov 10, 2026
- [Linkup rate limits](https://docs.linkup.so/pages/documentation/platform/rate-limits.md), read Nov 10, 2026
- [You.com billing](https://you.com/docs/administration/billing.md), read Nov 10, 2026
- [You.com plans](https://you.com/plans?hsLang=en), read Nov 10, 2026
- [You.com rate limits](https://you.com/docs/rate-limits.md), read Nov 10, 2026
- [SearchApi pricing](https://www.searchapi.io/pricing), read Nov 10, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 10, 2026
- [SpecStream pricing](https://specstream.ai/pricing), read Nov 10, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 10, 2026
