<!-- twin of https://specstream.ai/web-search/websearch-skill -->
# websearch-skill: add SpecStream as its SearXNG, with no server

Compared on Nov 13, 2026. The page: https://specstream.ai/web-search/websearch-skill

websearch-skill searches with the keyless `ddgs` library and adds a second engine when `WEBSEARCH_SEARXNG_URL` holds a SearXNG address. Its own way to get one is `websearch searxng up`, which clones and runs SearXNG on your machine.

SpecStream answers that address with no server to run. Set `WEBSEARCH_SEARXNG_URL=https://api.specstream.ai/searxng/<key>` and start each session with `websearch init --skip-searxng`. Every `web-search` then also asks SpecStream, at $1 per 1,000 searches.

SpecStream is the most accurate web search API in the world: 97.9 F-score on all 1,000 SimpleQA Verified questions. New accounts get $10 of credit, no card, which covers 10,000 searches.

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

## Each websearch-skill setting and its value for SpecStream, from websearch-skill 0.6.1's source on Nov 13, 2026

| | Setting in websearch-skill | Value for SpecStream | What websearch-skill does by default |
|---|---|---|---|
| Search address | `WEBSEARCH_SEARXNG_URL`, exported in the shell | `https://api.specstream.ai/searxng/<key>` ([SearXNG migration guide](https://specstream.ai/migrate/searxng?utm_source=alternatives&utm_campaign=web-search-websearch-skill)) | Unset: SearXNG is off and search runs on `ddgs` alone |
| Settings file | A `WEBSEARCH_SEARXNG_URL=` line in `~/.config/websearch/.env` | The same address. It applies in every directory | `websearch searxng up` writes the local server's address there |
| One run | `--searxng-url` on `websearch web-search` and `websearch search` | The same address | The flag beats the variable and the files for that run |
| Session start | `websearch init --skip-searxng` | Starts no local server. The address you set is still used and still checked | `websearch init` installs and starts a local SearXNG, about 15 to 30 seconds and a few hundred MB the first time |
| Health check | The doctor's `GET <address>/healthz` | Answers `OK`. Not charged | A SearXNG that does not answer is marked failed |
| Instance settings | The doctor's `GET <address>/config` | Answers with one enabled engine, `specstream`. Not charged | Counts the instance's active engines |
| Search call | `GET <address>/search?q=&format=json` | SearXNG's JSON: `results[]` with `title`, `url` and `content`. $0.001 a search | The same call to the local server |
| Engines for one search | `--engines searxng` or `--no-ddgs` on `websearch search` | Only SpecStream answers that search | `web-search` asks `ddgs` and SearXNG and fuses the two rankings |

## Why websearch-skill users set SpecStream as their SearXNG

### The setting, two ways

websearch-skill reads `WEBSEARCH_SEARXNG_URL` as the base address of a SearXNG and adds `/search`, `/healthz` and `/config` to it. It sends no key header, so the SpecStream key goes in the address as its last path part. Export it for one shell:

```
export WEBSEARCH_SEARXNG_URL=https://api.specstream.ai/searxng/<YOUR_SPECSTREAM_KEY>
websearch init --skip-searxng
websearch web-search "open source vector database 2026"
```

Or put it in the settings file websearch-skill reads from any directory, so each new session has it. An exported variable wins over the file, and the file is outside your repository, so the key stays out of git.

```
mkdir -p ~/.config/websearch
echo 'WEBSEARCH_SEARXNG_URL=https://api.specstream.ai/searxng/<YOUR_SPECSTREAM_KEY>' >> ~/.config/websearch/.env
websearch init --skip-searxng
```

With `uvx` and no install, the commands are `uvx websearch-skill init --skip-searxng` and `uvx websearch-skill web-search "..."`. Every field of the reply is in the [SearXNG migration guide](https://specstream.ai/migrate/searxng?utm_source=alternatives&utm_campaign=web-search-websearch-skill).

### What `websearch init --skip-searxng` does

websearch-skill asks agents to run `websearch init` first in every session. Plain `init` installs and starts a local SearXNG. With `--skip-searxng` it starts none, and the doctor still checks the address you set: `/healthz`, then `/config`, then one search with `format=json`.

SpecStream answers `/healthz` with `OK` and `/config` with its one engine, and charges neither. The doctor's test search is one search at $0.001. A full sweep sends one more search for each `ddgs` provider that returned nothing, and `websearch init --quick` skips that sweep.

### Check the key before you save it

This is the call websearch-skill makes for a search. Run it once with your key and you see the `results[]` it reads. A wrong key gets a `401`.

```
curl "https://api.specstream.ai/searxng/$SPECSTREAM_KEY/search?q=open+source+vector+databases&format=json"
```

### $1 per 1,000 searches, with nothing to subscribe to

Each `web-search` with the address set is one SpecStream search at $0.001, and so is the doctor's test search at session start. `healthz` and `config` cost nothing. A search that returns no results costs nothing, 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. Every score and its method is on the [benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=web-search-websearch-skill) 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. There is no limit per key and no daily limit; a busy call comes back with `Retry-After` and is not charged.

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

The key sits in an address, so give this tool its own. Create it with `spend_cap_cents`, the most the key can spend, and an agent that loops stops at the cap you set. With `zero_retention`, a search made with it keeps no request text and no answer after the reply.

```
curl -X POST https://api.specstream.ai/v1/account/keys \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"name": "websearch-skill", "scopes": ["account:read", "finds:spend"], "spend_cap_cents": 500, "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-websearch-skill) at $0.80 per 1,000 pages, and runs [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=web-search-websearch-skill): 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 engines for websearch-skill

### ddgs, the keyless default

A Python library that runs inside websearch-skill and reads nine providers: Google, Brave, DuckDuckGo, Yandex, Yahoo, Startpage, Mojeek, Wikipedia and Grokipedia. It needs no key and no account. With SpecStream as the second engine, each search also gets the results of a search API that scores 97.9 on SimpleQA Verified, at $0.001.

### Self-hosted SearXNG

The metasearch server websearch-skill starts with `websearch searxng up`: the first run clones SearXNG and builds a virtualenv, about 15 to 30 seconds and a few hundred MB, and the server then runs on your machine. SpecStream answers the same three addresses from `https://api.specstream.ai/searxng/<key>` with nothing to install or keep running. The whole comparison is on [SearXNG alternatives](https://specstream.ai/alternatives/searxng?utm_source=alternatives&utm_campaign=web-search-websearch-skill).

### Brave Search API

A search API on Brave's own index at $5 per 1,000 requests, with $5 in free credits every month. websearch-skill lists keyed engines such as Brave as planned, so it takes no Brave key today. SpecStream works in it now through the SearXNG address, at $1 per 1,000 searches.

### Tavily

A search API billed in credits at $0.008 a credit on pay as you go. websearch-skill lists it as planned too. On SpecStream a search is $0.001 with no credits to count.

### Exa

A search API at $7 per 1,000 requests on auto, also on websearch-skill's planned list. SpecStream answers today at $1 per 1,000 searches of up to 10 results.

## How to set SpecStream as the SearXNG of websearch-skill

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

2. Add the address to websearch-skill's settings file, with your key as its last part.

```
mkdir -p ~/.config/websearch
echo 'WEBSEARCH_SEARXNG_URL=https://api.specstream.ai/searxng/<YOUR_SPECSTREAM_KEY>' >> ~/.config/websearch/.env
```

3. Start the session with `websearch init --skip-searxng`. The report shows SearXNG as reachable with its result count. This step makes one search, $0.001.

4. Search as before. `web-search` asks `ddgs` and SpecStream and fuses the two rankings. To see SpecStream's results alone, name the engine:

```
websearch web-search "open source vector database 2026"
websearch search "open source vector database 2026" --engines searxng --json
```

5. If your agent's instructions say `websearch init`, change that line to `websearch init --skip-searxng`, so no session starts a local server.

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

### What do I set WEBSEARCH_SEARXNG_URL to?

The base address of a SearXNG that answers JSON. For SpecStream it is `https://api.specstream.ai/searxng/<key>`, and each search costs $0.001, $1 per 1,000.

### Do I need to run SearXNG for websearch-skill?

No. `ddgs` works with no server, and SpecStream answers the SearXNG address with 0 servers to run. Start with `websearch init --skip-searxng` so no local one is installed.

### How much does websearch-skill cost with SpecStream?

$0.001 a search, $1 per 1,000, plus one $0.001 test search each time `websearch init` runs. websearch-skill is free software, and new SpecStream accounts get $10 of credit, no card.

### Does websearch-skill need an API key?

Not by default: its 9 `ddgs` providers are keyless. A SpecStream key goes in the SearXNG address, in `~/.config/websearch/.env` or an exported variable, never in your repository.

### Where does websearch-skill read its settings from?

From 3 files in order: the file `WEBSEARCH_ENV_FILE` names, `.env` in the working directory, then `~/.config/websearch/.env`. An exported variable beats all of them.

### Does SpecStream replace ddgs in websearch-skill?

It joins it: `web-search` asks both and fuses the rankings with Reciprocal Rank Fusion at k=60. `websearch search --no-ddgs` asks SpecStream alone.

## Sources

SpecStream wrote this page. Each websearch-skill setting comes from its README and source on GitHub, and each figure on another provider from that company's own page.

- [websearch-skill README](https://github.com/hec-ovi/websearch-skill/blob/main/README.md), read Nov 13, 2026
- [websearch-skill install guide](https://github.com/hec-ovi/websearch-skill/blob/main/docs/INSTALL.md), read Nov 13, 2026
- [websearch-skill SearXNG adapter](https://github.com/hec-ovi/websearch-skill/blob/main/src/websearch/layer1_search/adapters/searxng.py), read Nov 13, 2026
- [websearch-skill doctor probes](https://github.com/hec-ovi/websearch-skill/blob/main/src/websearch/doctor/probes.py), read Nov 13, 2026
- [websearch-skill command line](https://github.com/hec-ovi/websearch-skill/blob/main/src/websearch/cli.py), read Nov 13, 2026
- [Brave Search API](https://brave.com/search/api/), read Nov 13, 2026
- [Tavily API credits](https://docs.tavily.com/documentation/api-credits.md), read Nov 13, 2026
- [Exa pricing](https://exa.ai/docs/admin/pricing.md), read Nov 13, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 13, 2026
- [SpecStream pricing](https://specstream.ai/pricing), read Nov 13, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 13, 2026
