[email protected]

Basics · Local AI for Business

Web search in Open WebUI: providers compared by data flow and cost

Editorial note: Versions, commands and prices may change. Please verify critical steps independently before production use. This guide does not replace individual professional, legal or tax advice.

Choosing web search for an AI chat? The AI platform with Open WebUI includes web search in the chat, from €149.90 excl. VAT per month. On request we integrate SearXNG (and Docling) into the platform. View the AI platform · SearXNG hosting & operations

Open WebUI separates two jobs: the search engine finds pages, the web loader reads them. Which search engine is entered decides cost, quality and what leaves the own network. This article compares the common providers based on the source code of Open WebUI v0.12.4 (released 25 Oct 2026) and the providers' pricing and privacy pages from 29 Oct 2026. Setting up your own SearXNG instance is covered in the guide Self-hosting SearXNG and not repeated here. As of October 2026.

Table of contents

What Open WebUI v0.12.4 supports

The function search_web in the router retrieval.py knows 32 values for the search engine in v0.12.4, and the documentation lists 28 provider pages (Web Search). Six routes matter for the selection, plus two entries that are still present but can no longer be obtained:

Entry (WEB_SEARCH_ENGINE) Type Status on 29 Oct 2026
searxng own metasearch, URL of the service freely available, operated by the customer
brave, brave_llm_context hosted API, one key for both available
tavily hosted API available
serper hosted API with Google results available
kagi hosted API available, billed by usage
duckduckgo (shown as "DDGS" in the interface) library inside Open WebUI, no key not available in the slim variant
google_pse Google Custom Search JSON API closed to new customers, existing customers until 1 Jan 2027 (Google)
bing Bing Search API v7 retired on 11 Aug 2025 (Microsoft)

Further entries include exa, linkup, serpapi, searchapi, perplexity_search, jina, mojeek, yacy, firecrawl and external for an endpoint of your own. The Open WebUI documentation recommends hosted search APIs for the strongest results and considers SearXNG useful where a self-hosted, privacy-preserving metasearch is wanted, with quality depending heavily on the upstream engines, rate limits and configuration. The provider pages for Brave, Tavily, Serper and Kagi are community contributions and not supported by the Open WebUI team.

Data flow: what leaves the network

A web search has three steps, and only two of them leave the network.

  1. Formulate the query (local). In classic mode (legacy) the model creates search queries from the chat. The default template DEFAULT_QUERY_GENERATION_PROMPT_TEMPLATE passes the last six messages ({{MESSAGES:END:6}}) and prefers 1 to 3 search queries, an empty list is allowed (config.py). If the call to the generator fails or returns an empty query, chat_web_search_handler uses the last user message unchanged as the search term; if the model's answer is not valid JSON, its text is sent out as the search term (middleware.py). In native mode (default since v0.10.0) the model calls the tool search_web with a search term it wrote itself (Agentic Search).
  2. Search term to the provider (external). The Open WebUI server sends the request with its IP address and the operator's key.
  3. Load result pages (external). In classic mode the web loader fetches the hit pages itself when BYPASS_WEB_SEARCH_WEB_LOADER is off; in native mode search_web returns only hits with an excerpt, and the model loads pages on demand with the tool fetch_url. The target site sees the IP address of the Open WebUI server, not that of the user.

What the request in step 2 contains is defined in the modules under backend/open_webui/retrieval/web/ (directory v0.12.4):

Provider Fields sent (source v0.12.4) Chat history or user identity?
Brave q, count; header X-Subscription-Token no
Tavily query, max_results, search_depth; bearer key no
Serper q; header X-API-KEY (the result count is only applied after the response) no
Kagi query, limit; bearer key no
SearXNG q, format, pageno, safesearch, language, time_range, categories, theme, image_proxy; user agent "Open WebUI … RAG Bot" no
Google PSE cx, q, key, num, start; optionally a Referer no
DDGS search term via the ddgs library, proxy from the environment no
external query, count; headers with the user's name, ID, email address and role (or a JWT), without checking ENABLE_FORWARD_USER_INFO_HEADERS; a header X-OpenWebUI-Chat-Id is intended user data yes; chat ID intended, see below

On the header X-OpenWebUI-Chat-Id: external.py reads the chat ID from request.state.chat_id. Nothing in the v0.12.4 backend sets this value, so the header is probably not sent in this version (read from the source code, not confirmed by traffic capture); the documentation lists it "when a chat id is present". The provider yandex contains the same logic and the user headers; perplexity_search and microsoft_web_iq send only the user headers.

It follows that the chat history does not leave the network as such. What leaves is the search term, and it can contain names, file numbers or product data from the chat if the model carries them into the query. To limit this, enable ENABLE_WEB_SEARCH_CONFIRMATION so users confirm every search, and release web search only to groups that need it. The model that formulates the query sees the latest messages. If it runs at an external provider, that is a separate data path unrelated to web search.

Data protection by provider

All statements come from the provider pages, retrieved on 29 Oct 2026. They replace neither the review of the data processing agreement nor legal advice.

Provider Processing of search terms according to the provider page
SearXNG (own instance) With the operator; the engines see the instance's IP and the search term, see the SearXNG guide
Brave Search API Provider is Brave Software Inc. in the USA. Search queries of an API account are retained for 90 days at most for billing and troubleshooting; "Zero Data Retention" is mentioned for the enterprise offer (Privacy Notice, pricing)
Tavily Account, support and billing data sit in shared US systems. An EU endpoint with processing in the EU and optional "zero query retention" is in evaluation for selected customers only and not generally available (Tavily EU). The privacy policy covers website and platform. It names no fixed retention period for queries (retention "for the period necessary to provide and improve the Services"), but allows parts of the query data to be used to improve future responses unless the contract says otherwise, and queries to be shared with third-party search index providers in limited cases
Serper The privacy policy describes account and website data and mentions possible transfers outside the EEA, but no retention of search queries. It states that the services should normally not lead to the processing of personal data; in exceptional cases the customer is controller and Serper processor
Kagi API queries are not stored against the account; queries may be logged briefly without account link for debugging and abuse prevention and are purged automatically (load balancer and VM logs 7 days, error samples 90 days). The data processing addendum for the API is described there as being finalised (Privacy Policy)
DDGS No account; the search engines receive the query with the server's IP, and by default (auto) the library picks a provider at random (DDGS page)

For context: with hosted interfaces, the operator of the Open WebUI instance is responsible for notices to users and the legal basis. Brave states this in its Privacy Notice for API customers, referring to its terms of service. The review criteria are in the article GDPR-compliant AI: checklist and criteria.

Costs and limits with a worked calculation

Provider prices, net, in US dollars, retrieved on 29 Oct 2026:

Provider Price Free allowance Limit according to the provider
Brave Search API $5.00 per 1,000 requests (web search and LLM context) $5 credit per month, i.e. 1,000 requests 50 requests per second
Tavily $0.008 per credit; basic search 1 credit, advanced 2 credits; Project plan $30 for 4,000 credits 1,000 credits per month on the free plan "higher rate limits" on the Project plan
Serper $1.00 per 1,000 queries in the pack of 50,000 credits ($50, valid 6 months) 2,500 queries for testing 50 queries per second in the 50,000 pack
Kagi $12 per 1,000 requests, billed every 30 days or at $100 pricing page names none not checked
Google PSE $5 per 1,000 queries, up to 10,000 per day 100 queries per day existing customers only
SearXNG, DDGS no charge for the interface not applicable limiter and engine suspensions of the instance

Sources: Brave, Tavily and API credits, Serper, Kagi, Google.

Calculation. Assumption: a web search in the chat creates on average 2 queries in classic mode (template: 1 to 3), and each query equals one API request. The monthly volumes are 5 users with 5 web searches per working day (1,000 queries), 25 users with 5 (5,000) and 25 users with 20 (20,000), each over 20 working days. Price per query times volume, without free allowance:

Queries per month Brave Tavily (basic, pay as you go) Serper (50,000 pack) Kagi
1,000 $5 $8 $1 $12
5,000 $25 $40 $5 $60
20,000 $100 $160 $20 $240

The Brave credit lowers each row by $5 per month. Serper's pack is bought in advance ($50 for 50,000 credits, valid 6 months); the table value applies if the pack is used up. Tavily advanced doubles the values. Running a SearXNG instance replaces the rows with server and maintenance costs, which depend on the environment and are not quantified here. For comparison with licence and model costs, see the calculation in Internal AI chatbot: costs with a worked calculation.

On Brave's limit: the Open WebUI documentation describes 1 request per second for the free tier and recommends WEB_SEARCH_CONCURRENT_REQUESTS=1, while the pricing page lists 50 requests per second for the prepaid model. On HTTP 429 Open WebUI repeats the request once after one second.

Licence and self-hosting

Component Licence or model Self-hosting
Open WebUI Open WebUI License: clauses 1 to 3 match the BSD-3-Clause text, clause 4 restricts changes to the branding (LICENSE v0.12.4, details in Open WebUI licence 2026) yes
SearXNG GNU AGPL version 3 (LICENSE) yes, details in the SearXNG guide
DDGS (library ddgs) MIT (LICENSE); the project describes itself as a library "for educational purposes only" runs inside Open WebUI
Brave, Tavily, Serper, Kagi hosted services under the provider's terms no

DDGS adds this: the library queries the search engines through their public pages, not through a paid interface, and the Open WebUI documentation points to an interface with its own key for reliability and quota.

Quality and configuration parameters

Result quality cannot be read from the source code. Only what the providers and Open WebUI describe is documented: Brave offers brave_llm_context, a second endpoint that returns pre-extracted passages and can save the page fetch. Tavily describes itself as a search API for AI applications. With SearXNG the results depend on the enabled engines. Own measurement before deciding: put 20 real questions from the department to two candidates and check the sources.

Parameter (default in v0.12.4) Effect
WEB_SEARCH_RESULT_COUNT (3) number of results per query
WEB_SEARCH_CONCURRENT_REQUESTS (0, unlimited) parallel queries per search; set to 1 with rate limits
BYPASS_WEB_SEARCH_WEB_LOADER (off) use snippets only, do not load result pages
TAVILY_SEARCH_DEPTH (basic) ultra-fast, fast, basic, advanced; advanced costs 2 credits
BRAVE_SEARCH_CONTEXT_TOKENS (8192) size of the passages with brave_llm_context, 1,024 to 32,768
DDGS_BACKEND (auto) search engine behind DDGS
ENABLE_WEB_SEARCH_CONFIRMATION (off) users confirm every search
WEB_SEARCH_DOMAIN_FILTER_LIST (empty) allowed or blocked domains, applied after retrieval

The domain filter acts after the provider's response. The search term has gone out regardless. Web content is untrusted and can contain instructions for the model, see Protecting against prompt injection.

Decision rule

Check from top to bottom, the first matching row decides:

Condition Recommendation
Search terms must not reach any additional API provider, and operation with a fallback is feasible SearXNG as a separate service, with a second engine group or an API as fallback
A contractual relationship with processing in the EU is mandatory choose a hosted provider by data processing agreement and location; Tavily EU is not generally available on 29 Oct 2026
Reliable results for few users, cost by usage Brave (the credit covers about 1,000 requests per month) or Tavily
Google results wanted Serper; Google PSE is closed to new customers
Only a test without an account DDGS; for reliability the Open WebUI documentation recommends an interface with its own key
New projects with bing or google_pse do not plan, both routes are ended or closed

Status and method

  • Status: 29 Oct 2026. Source code and documentation of Open WebUI v0.12.4 (released 25 Oct 2026) and the linked pricing and privacy pages were retrieved on 29 Oct 2026.
  • Data flow: read from the modules brave.py, tavily.py, serper.py, kagi.py, searxng.py, google_pse.py, duckduckgo.py, external.py and retrieval.py, middleware.py, config.py, not confirmed by capturing network traffic.
  • Prices: in US dollars as published, without taxes or exchange rate. The calculations assume one request per query and contain no free allowance.
  • Limits: result quality was not measured. Provider prices and terms change; open the linked pages again before deciding. Not legal advice.

Tables and figures may be reused with attribution and a link to this article.

Our approach at WZ-IT

The AI platform is a dedicated Open WebUI instance and includes web search in the chat. The price starts at €149.90 excl. VAT per month (as of October 2026). On request we integrate SearXNG as the search service and Docling for document processing into the platform. Anyone who wants SearXNG operated independently of that will find the offer at SearXNG hosting & operations.

Further guides

Planning web search for your own AI? We work out with you which search service fits data flow, budget and operations. AI platform · SearXNG hosting & operations

Rather have it operated?

You'd rather not run Local AI for Business yourself? WZ-IT handles setup, operations and maintenance - privacy-focused from Germany.

Enquiry

Assess local AI for your use case

Start with the AI Cube or have us assess a custom AI platform, knowledge connection, or integration.

  • Straight with Timo and Robin - no sales team, no pitch
  • A professional assessment of your situation
  • Concrete next steps for infrastructure, software or AI

The conversation is free and non-binding.

I got to know Timo and Robin as dedicated and professional partners who make a lot of things possible for their clients that initially seem impossible. I felt very well advised. The services offered have thoroughly convinced me. (translated)
Andrea PawlowskiCommunications Manager, Golem.de, Germany
Timo and Robin, founders of WZ-IT

Assess local AI for your use case

I got to know Timo and Robin as dedicated and professional partners who make a lot of things possible for their clients that initially seem impossible. I felt very well advised. The services offered have thoroughly convinced me. (translated)
Andrea PawlowskiCommunications Manager, Golem.de, Germany

Frequently Asked Questions

Answers to the most important questions

Knowledge

More on Local AI for Business

All Local AI for Business articles

Companies worldwide trust WZ-IT

  • Stadtwerke Brühl
  • DGHO e.V.
  • solarwerkstatt berlin
  • Krüger Dirndl
  • ABCO Water Systems
  • Golem.de
  • EVADXB
  • nextGYM
  • AInergy
  • ml&s
  • Odiseo Solutions
  • Annota
  • ARGE
  • SweetConnect GmbH
  • Aphy AG
  • CORGOS
  • Rekorder
  • SolidProof
  • Yonju
  • Keymate
  • Paritel
  • Mr. Clipart
  • Millenium
  • Negosh
  • Führerscheinmacher
  • BTI
  • Deutsche Gesellschaft für Datenschutz
Read client reviews