<!-- twin of https://specstream.ai/web-search/librechat -->
# LibreChat web search: set two URLs and search at $5 per 1,000

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

LibreChat's web search needs three parts: a search provider, a scraper and a reranker. SpecStream fills the first two from one key, as the SearXNG search provider and as the Firecrawl scraper.

In `.env`, set `SEARXNG_INSTANCE_URL=https://api.specstream.ai/searxng/YOUR_KEY` and `FIRECRAWL_API_URL=https://api.specstream.ai/firecrawl` with your key in `FIRECRAWL_API_KEY`. In `librechat.yaml`, set `searchProvider: searxng` and `scraperProvider: firecrawl`.

SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions. A search costs $0.005 and a page $0.0008. A new account gets $10 of credit, no card, which covers 2,000 searches.

[Get an API key](https://specstream.ai/signup?src=alternatives-web-search-librechat&utm_source=alternatives-md&utm_campaign=web-search-librechat&returnTo=%2Fworkspace%2Fsearch%3Froute%3Dsearxng) New accounts get $10 of credit, no card. It covers 2,000 searches.

## The web search providers LibreChat offers, from each company's own pages on Nov 10, 2026

| | SpecStream | Serper | Tavily | Firecrawl | Keenable |
|---|---|---|---|---|---|
| Role in LibreChat | Search provider, through the SearXNG setting, and scraper, through the Firecrawl setting, on one key | Search provider and scraper | Search provider and scraper | Scraper only. LibreChat has no Firecrawl search step | Search provider and scraper |
| Price of a search | $5 per 1,000 searches, with up to 10 results a search | $1.00 per 1,000 in the pack of 50,000 credits | $0.008 a credit on pay as you go. A basic search is 1 credit and an advanced search 2 | Not a search provider in LibreChat. Its own search costs 2 credits per 10 results | Keyless by default. The public search endpoint is rate limited, and a key lifts the cap |
| Price of reading pages | $0.80 per 1,000 pages through `/firecrawl/v2/scrape`, and a page with no text is not charged | Serper's scraper at `scrape.serper.dev`, set only by the `SERPER_SCRAPE_URL` environment variable | A basic extract costs 1 credit for every 5 successful URLs | The free plan reads 1,000 pages a month. The Hobby plan is $19 a month | Keyless by default. The public fetch endpoint is rate limited, and a key lifts the cap |
| How you start | $10 of credit, no card. It covers 2,000 searches | 2,500 free queries, no credit card | 1,000 free credits every month | A free plan of 500 searches or 1,000 pages a month | No key needed for the public endpoints |
| How long credit lasts | Credit you buy never expires | Credits are valid for 6 months | On a monthly plan, requests stop when the month's credits run out | Monthly plans, from $19 a month for Hobby | No credit to buy for the public endpoints |
| Address setting in LibreChat | `SEARXNG_INSTANCE_URL` and `FIRECRAWL_API_URL`, in `.env` or `librechat.yaml` | None for search. The address is fixed in LibreChat's code at `google.serper.dev/search` | `TAVILY_SEARCH_URL`. A user can enter it only after the admin opts in | `FIRECRAWL_API_URL`, default `https://api.firecrawl.dev` | `KEENABLE_API_URL` and `KEENABLE_FETCH_URL` |

## Why LibreChat admins set SpecStream as search and scraper

### Two URLs and one key in the config you already have

LibreChat reads its web search settings from `librechat.yaml`, and each value can point to a variable in `.env`. SpecStream answers SearXNG's JSON at `/searxng` and Firecrawl's scrape at `/firecrawl/v2/scrape`, so both providers LibreChat already knows run on SpecStream.

```
# librechat.yaml
webSearch:
  searchProvider: searxng
  scraperProvider: firecrawl
  searxngInstanceUrl: '${SEARXNG_INSTANCE_URL}'
  firecrawlApiUrl: '${FIRECRAWL_API_URL}'
  firecrawlApiKey: '${FIRECRAWL_API_KEY}'
  jinaApiKey: '${JINA_API_KEY}'   # your reranker stays as it is

# .env
SEARXNG_INSTANCE_URL=https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY
FIRECRAWL_API_URL=https://api.specstream.ai/firecrawl
FIRECRAWL_API_KEY=<YOUR_SPECSTREAM_KEY>
```

The key goes in the SearXNG address, so leave `SEARXNG_API_KEY` empty. LibreChat adds `/search` to the instance URL and `/v2/scrape` to the Firecrawl URL. These are the two calls it sends:

```
# The search LibreChat sends: it adds /search to the instance URL
curl "https://api.specstream.ai/searxng/$SPECSTREAM_API_KEY/search?q=latest+LibreChat+release&format=json"

# The page read LibreChat sends: it adds /v2/scrape to the Firecrawl URL
curl -X POST https://api.specstream.ai/firecrawl/v2/scrape \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"url": "https://www.librechat.ai/docs"}'
```

LibreChat blocks private and loopback addresses for web search, and `https://api.specstream.ai` is public, so it needs no entry in `allowedAddresses`.

### Let each user bring a key

Leave `SEARXNG_INSTANCE_URL` out of `.env` and LibreChat asks each user for it in the chat interface. Each user then pastes `https://api.specstream.ai/searxng/` followed by their own SpecStream key, and each search is billed to that key.

### Already on Tavily? Change one URL

SpecStream answers Tavily's search call in Tavily's JSON. Point `TAVILY_SEARCH_URL` at SpecStream and send the SpecStream key in `TAVILY_API_KEY`. The URL is the whole endpoint, so it ends in `/search`.

```
# librechat.yaml
webSearch:
  searchProvider: tavily
  tavilySearchUrl: '${TAVILY_SEARCH_URL}'

# .env
TAVILY_SEARCH_URL=https://api.specstream.ai/tavily/search
TAVILY_API_KEY=<YOUR_SPECSTREAM_KEY>
```

### $0.005 a search and $0.0008 a page

A search of up to 10 results costs $0.005, and the SearXNG route always returns 10. Each page the scraper reads costs $0.0008, which is $0.80 per 1,000 pages, and a page with no text costs nothing. A call stopped by a `429` charges nothing.

There is no monthly plan, no credit pack that expires and no reset on the first of the month. 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-librechat) 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 can send up to 8,800 searches a minute; a call over that gets a `429` with `Retry-After` and is not charged.

### You decide what is kept, on each key

Give LibreChat a key with `zero_retention` and a search made with it keeps no request text and no answer after the reply. It is not in the history and its log lines carry neither. The charge keeps the account, the key, the request ID, the price and the time. `spend_cap_cents` is the most the key can spend.

```
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-librechat) at $0.80 per 1,000 pages, and a page with no text is not charged. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=web-search-librechat) takes a request in plain words and returns every match on the live web as structured rows, at 5¢, 15¢ or $1 a row, with a source URL on every value.

## The other providers in LibreChat, and what each costs

### Serper

Search sold in credit packs: $1.00 per 1,000 in the pack of 50,000, with credits valid for 6 months and 2,500 free queries to start. LibreChat fixes Serper's search address in its code. SpecStream searches the live web at $5 per 1,000 with credit that never expires, and reads the pages too.

### Tavily

Search and extract billed in credits at $0.008 each on pay as you go, with 1,000 free credits a month. A basic extract costs 1 credit for every 5 successful URLs. SpecStream answers Tavily's own search call at `https://api.specstream.ai/tavily/search` at $0.005 a search.

### Firecrawl

The scraper LibreChat names first. The free plan reads 1,000 pages a month and the Hobby plan costs $19 a month. Set `FIRECRAWL_API_URL` to `https://api.specstream.ai/firecrawl` and each page costs $0.0008, from the same key as your searches.

### Keenable

A keyless search and fetch service. Its public endpoints are rate limited, and a key lifts the cap. SpecStream has no shared public limit: one account sends up to 8,800 searches a minute, and the search scores 97.9 F-score on all 1,000 SimpleQA Verified questions.

## How to set SpecStream as LibreChat's web search

1. Create a key under Agents & API in the SpecStream workspace. A new account gets $10 of credit, no card, which covers 2,000 searches.

2. Add the two addresses and the key to `.env`.

```
SEARXNG_INSTANCE_URL=https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY
FIRECRAWL_API_URL=https://api.specstream.ai/firecrawl
FIRECRAWL_API_KEY=<YOUR_SPECSTREAM_KEY>
```

3. In `librechat.yaml`, under `webSearch`, set `searchProvider: searxng` and `scraperProvider: firecrawl`, and keep your reranker key.

4. Restart LibreChat, turn on web search in a chat and ask a question. Each search and each page shows up in your SpecStream request log with its price.

## Frequently asked questions

### How do I enable web search in LibreChat?

Set three parts: a search provider, a scraper and a reranker. With SpecStream, two lines in `.env` cover the first two: `SEARXNG_INSTANCE_URL=https://api.specstream.ai/searxng/YOUR_KEY` and `FIRECRAWL_API_URL=https://api.specstream.ai/firecrawl`, with the key in `FIRECRAWL_API_KEY`.

### What is the LibreChat web search config in librechat.yaml?

Two lines choose SpecStream: `searchProvider: searxng` and `scraperProvider: firecrawl` under `webSearch`. The URLs come from `${SEARXNG_INSTANCE_URL}` and `${FIRECRAWL_API_URL}` in `.env`.

### Why is LibreChat web search not working?

Most often one of the three required parts is missing: the search provider, the scraper or the reranker. With SpecStream as search and scraper, check that the SearXNG URL holds your key and that `FIRECRAWL_API_KEY` is the same key; a wrong key gets a `401`.

### Is there a free web search for LibreChat?

A new SpecStream account gets $10 of credit with no card, which covers 2,000 searches. After that a search costs $0.005, and credit you buy never expires.

### Which web search API is best for LibreChat?

SpecStream, with 97.9 F-score on all 1,000 SimpleQA Verified questions at $5 per 1,000 searches. One key runs both LibreChat's search provider and its scraper.

### Do I need to self-host SearXNG for LibreChat?

No. Set `SEARXNG_INSTANCE_URL` to `https://api.specstream.ai/searxng/YOUR_KEY` and SpecStream answers in SearXNG's JSON at $0.005 a search, with no instance to run and no `allowedAddresses` entry.

## Sources

SpecStream wrote this page. LibreChat's settings come from its source on GitHub, and each provider's figure from that company's own page.

- [LibreChat librechat.example.yaml](https://github.com/danny-avila/LibreChat/blob/main/librechat.example.yaml), read Nov 10, 2026
- [LibreChat .env.example](https://github.com/danny-avila/LibreChat/blob/main/.env.example), read Nov 10, 2026
- [LibreChat data provider config.ts](https://github.com/danny-avila/LibreChat/blob/main/packages/data-provider/src/config.ts), read Nov 10, 2026
- [LibreChat web.ts](https://github.com/danny-avila/LibreChat/blob/main/packages/api/src/web/web.ts), read Nov 10, 2026
- [LibreChat agents, search.ts](https://github.com/danny-avila/agents/blob/main/src/tools/search/search.ts), read Nov 10, 2026
- [LibreChat agents, firecrawl.ts](https://github.com/danny-avila/agents/blob/main/src/tools/search/firecrawl.ts), read Nov 10, 2026
- [LibreChat web search docs](https://www.librechat.ai/docs/configuration/librechat_yaml/object_structure/web_search), read Nov 10, 2026
- [Serper](https://serper.dev/), read Nov 10, 2026
- [Tavily API credits](https://docs.tavily.com/documentation/api-credits.md), read Nov 10, 2026
- [Tavily pricing](https://tavily.com/pricing), read Nov 10, 2026
- [Firecrawl pricing](https://www.firecrawl.dev/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
