Web search
The openrouter_web_search node searches the web through OpenRouter and returns both the model’s answer and the sources themselves, with text excerpts. That is what separates it from the free websearch node (DuckDuckGo), which is agent-tool only and gives no such excerpts.
OpenRouter has no standalone search endpoint: search always rides along with a model call. That is why the node has a Model field, and it is always a model from the OpenRouter catalog.
- Execute + Data
- Extension
Two modes
- One search — exactly one search per node run. Works with any catalog model, including
models without tool-calling and
:freeones, and the cost is known in advance. - Agentic — the model decides whether to search and how many times. Requires a tool-calling model and must be capped: Max searches and Spend ceiling per run (a dollar ceiling that overrides the search counter).
Engine
The Search engine field: auto (the provider’s own search when the model has one,
otherwise Exa), native, exa, parallel, perplexity. native is available only to
models whose provider can search on its own — for the rest the node refuses before the
call, rather than surfacing an opaque provider error.
What the node returns
| Field | What is inside |
|---|---|
| answer | The model's written answer. Empty when “Write an answer” is off. |
| context | A Markdown digest of the sources — the thing to drop into a prompt. |
| results | The sources: index, title, url, content (excerpt). |
| query | The query that was searched. |
| engine / model | The requested engine and the model that ran the request. |
| count / searches | How many sources came back and how many searches ran. |
Turn Write an answer off when you only need the sources: the model writes nothing, and you pay for the search and the inserted excerpts but not for generation. The sources arrive either way.
As an agent tool (a link_extension wire into ai_agent) the node
hands the model exactly that context — the sources themselves, not somebody’s summary.
Tuning
- Max results — how many sources to take (up to 25).
- Excerpt size per source — how much page text to keep.
0leaves it to the engine. In “one search” mode the trimming happens after the response arrives: it caps the payload downstream, not the token cost. - Search depth — the only depth control that reaches a provider’s native search.
- Domains — an allow list and a block list. Some engines accept only one of the two, and the node says so before the call.
Cost
Web search produces two independent charges:
- Tokens — at the chosen model’s ordinary rate. Source excerpts are inserted into the request, so those are real input tokens (five Exa results run about 1,900 of them).
- The search itself — its own line in the ledger. When the provider separates the search fee from the generation cost, that number is used; when it does not, a flat rate applies. A zero difference is read as “could not separate”, not as “the search was free”.
In “one search” mode the search is charged structurally — even when nothing was found: OpenRouter ran the search and billed for it. In agentic mode the model may not search at all, and then there is no extra line.
If the node runs on your own OpenRouter integration, neither the tokens nor the search are billed here — your key already paid for both halves of the request.