[GH-ISSUE #20936] issue: Error in External search: 'SearchResultWeb' object has no attribute 'get' #57999

Closed
opened 2026-05-05 22:09:03 -05:00 by GiteaMirror · 2 comments
Owner

Originally created by @freeNestor on GitHub (Jan 26, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/20936

Check Existing Issues

  • I have searched for any existing and/or related issues.
  • I have searched for any existing and/or related discussions.
  • I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!).
  • I am using the latest version of Open WebUI.

Installation Method

Pip Install

Open WebUI Version

0.7.2

Ollama Version (if applicable)

0.14.1

Operating System

macOS Tahoe

Browser (if applicable)

No response

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using the latest version of both Open WebUI and Ollama.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have provided every relevant configuration, setting, and environment variable used in my setup.
  • I have clearly listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
  • I have documented step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation. My steps:
  • Start with the initial platform/version/OS and dependencies used,
  • Specify exact install/launch/configure commands,
  • List URLs visited, user input (incl. example values/emails/passwords if needed),
  • Describe all options and toggles enabled or changed,
  • Include any files or environmental changes,
  • Identify the expected and actual result at each stage,
  • Ensure any reasonably skilled user can follow and hit the same issue.

Expected Behavior

open-webui should have no errors and support firecrawl web search api.

Actual Behavior

open-webui logs show errors and chat page shows:An error occurred while searching the web

2026-01-26 11:03:56.506 | ERROR    | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get'
2026-01-26 11:03:56.761 | ERROR    | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get'
2026-01-26 11:03:57.048 | ERROR    | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get'
2026-01-26 11:03:57.051 | ERROR    | open_webui.utils.middleware:chat_web_search_handler:897 - 404: [ERROR: No results found from web search]
Traceback (most recent call last):

  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/bin/open-webui", line 7, in <module>
    sys.exit(app())
    │   │    └ <typer.main.Typer object at 0x102dc70d0>
    │   └ <built-in function exit>
    └ <module 'sys' (built-in)>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/main.py", line 319, in __call__
    return get_command(self)(*args, **kwargs)
           │           │      │       └ {}
           │           │      └ ()
           │           └ <typer.main.Typer object at 0x102dc70d0>
           └ <function get_command at 0x1030e7e20>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1485, in __call__
    return self.main(*args, **kwargs)
           │    │     │       └ {}
           │    │     └ ()
           │    └ <function TyperGroup.main at 0x1032b3740>
           └ <TyperGroup >
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/core.py", line 814, in main
    return _main(
           └ <function _main at 0x1032b22a0>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/core.py", line 190, in _main
    rv = self.invoke(ctx)
         │    │      └ <click.core.Context object at 0x105b00410>
         │    └ <function Group.invoke at 0x1031828e0>
         └ <TyperGroup >
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1873, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
           │               │       │       │      └ <click.core.Context object at 0x1035398d0>
           │               │       │       └ <function Command.invoke at 0x1031816c0>
           │               │       └ <TyperCommand serve>
           │               └ <click.core.Context object at 0x1035398d0>
           └ <function Group.invoke.<locals>._process_result at 0x105ae6700>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1269, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           │   │      │    │           │   └ {'port': 9090, 'host': '0.0.0.0'}
           │   │      │    │           └ <click.core.Context object at 0x1035398d0>
           │   │      │    └ <function serve at 0x105ae63e0>
           │   │      └ <TyperCommand serve>
           │   └ <function Context.invoke at 0x103180900>
           └ <click.core.Context object at 0x1035398d0>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 824, in invoke
    return callback(*args, **kwargs)
           │         │       └ {'port': 9090, 'host': '0.0.0.0'}
           │         └ ()
           └ <function serve at 0x105ae63e0>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/main.py", line 706, in wrapper
    return callback(**use_params)
           │          └ {'host': '0.0.0.0', 'port': 9090}
           └ <function serve at 0x10532f060>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/__init__.py", line 78, in serve
    uvicorn.run(
    │       └ <function run at 0x10538f740>
    └ <module 'uvicorn' from '/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/__init__...
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/main.py", line 594, in run
    server.run()
    │      └ <function Server.run at 0x10538efc0>
    └ <uvicorn.server.Server object at 0x32ee12b50>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run
    return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory())
           │           │    │             │                      │    │      └ <function Config.get_loop_factory at 0x10532ede0>
           │           │    │             │                      │    └ <uvicorn.config.Config object at 0x105b014d0>
           │           │    │             │                      └ <uvicorn.server.Server object at 0x32ee12b50>
           │           │    │             └ None
           │           │    └ <function Server.serve at 0x10538f060>
           │           └ <uvicorn.server.Server object at 0x32ee12b50>
           └ <function asyncio_run at 0x105303f60>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/_compat.py", line 30, in asyncio_run
    return runner.run(main)
           │      │   └ <coroutine object Server.serve at 0x32ec56890>
           │      └ <function Runner.run at 0x105104180>
           └ <asyncio.runners.Runner object at 0x32ec64250>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           │    │     │                  └ <Task pending name='Task-1' coro=<Server.serve() running at /opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/pytho...
           │    │     └ <cyfunction Loop.run_until_complete at 0x32f5d9900>
           │    └ <uvloop.Loop running=True closed=False debug=False>
           └ <asyncio.runners.Runner object at 0x32ec64250>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/main.py", line 1710, in process_chat
    form_data, metadata, events = await process_chat_payload(
    │          │                        └ <function process_chat_payload at 0x32ee140e0>
    │          └ {'user_id': '21f1b354-fbdc-4652-a590-050d7519fea9', 'chat_id': 'ddf6808b-9d8b-4f45-bcdb-184a013d4c82', 'message_id': 'd88f746...
    └ {'stream': True, 'model': 'deepseek-r1:32b', 'messages': [{'role': 'system', 'content': 'User Context:\n\n'}, {'role': 'user'...
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/utils/middleware.py", line 1581, in process_chat_payload
    form_data = await chat_web_search_handler(
                      └ <function chat_web_search_handler at 0x32ebe3ba0>
> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/utils/middleware.py", line 834, in chat_web_search_handler
    results = await process_web_search(
                    └ <function process_web_search at 0x32a9abf60>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/routers/retrieval.py", line 2293, in process_web_search
    raise HTTPException(
          └ <class 'fastapi.exceptions.HTTPException'>

fastapi.exceptions.HTTPException: 404: [ERROR: No results found from web search]

Steps to Reproduce

  1. Install ollama and open-webui by using conda.
  2. Download firecrawl-2.7.0 from github.com.
  3. Unpack and run docker compose up --build, firecrawl will be taken up and serviced locally at port 3002.
  4. In open-webui admin pannel, set web search using firecrawl and set api address with http://loaclhost:3002.
  5. Use curl test firecrawl search api if it works.
  6. Go to chat and click web search,start a question with modal.
  7. Chat page shows error : An error occurred while searching the web.
  8. Logs show: ERROR | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get'.

Logs & Screenshots

Image

curl test:

Image

open-webui logs:

v0.7.2 - building the best AI user interface.

https://github.com/open-webui/open-webui

INFO:     Started server process [23733]
INFO:     Waiting for application startup.
2026-01-26 11:02:04.318 | INFO     | open_webui.utils.logger:start_logger:166 - GLOBAL_LOG_LEVEL: INFO
2026-01-26 11:02:04.318 | INFO     | open_webui.main:lifespan:604 - Installing external dependencies of functions and tools...
2026-01-26 11:02:04.326 | INFO     | open_webui.utils.plugin:install_frontmatter_requirements:286 - No requirements found in frontmatter.
2026-01-26 11:02:08.240 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET / HTTP/1.1" 304
2026-01-26 11:02:08.281 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55322 - "GET /static/splash.png HTTP/1.1" 200
2026-01-26 11:02:08.283 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /static/loader.js HTTP/1.1" 200
2026-01-26 11:02:08.284 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /static/custom.css HTTP/1.1" 200
2026-01-26 11:02:08.468 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55322 - "GET /api/config HTTP/1.1" 200
2026-01-26 11:02:08.469 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /opensearch.xml HTTP/1.1" 200
2026-01-26 11:02:08.471 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /static/favicon.png HTTP/1.1" 200
2026-01-26 11:02:08.485 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /api/v1/auths/ HTTP/1.1" 200
2026-01-26 11:02:08.491 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55322 - "GET /api/version HTTP/1.1" 200
2026-01-26 11:02:08.492 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55328 - "GET /api/config HTTP/1.1" 200
2026-01-26 11:02:08.493 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /static/favicon.ico HTTP/1.1" 200
2026-01-26 11:02:08.494 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /api/v1/users/user/settings HTTP/1.1" 200
2026-01-26 11:02:08.515 | INFO     | open_webui.utils.plugin:install_frontmatter_requirements:286 - No requirements found in frontmatter.
2026-01-26 11:02:08.518 | INFO     | open_webui.utils.plugin:load_tool_module_by_id:102 - Loaded module: tool_perplexica_search_
2026-01-26 11:02:08.518 | INFO     | open_webui.utils.plugin:install_frontmatter_requirements:286 - No requirements found in frontmatter.
2026-01-26 11:02:08.519 | INFO     | open_webui.utils.plugin:load_tool_module_by_id:102 - Loaded module: tool_add_to_mem
2026-01-26 11:02:08.519 | INFO     | open_webui.utils.plugin:install_frontmatter_requirements:286 - No requirements found in frontmatter.
2026-01-26 11:02:08.520 | INFO     | open_webui.utils.plugin:load_tool_module_by_id:102 - Loaded module: tool_read_logs
2026-01-26 11:02:08.522 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /api/v1/configs/banners HTTP/1.1" 200
2026-01-26 11:02:08.524 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/v1/tools/ HTTP/1.1" 200
2026-01-26 11:02:08.524 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55328 - "GET /api/v1/users/user/settings HTTP/1.1" 200
2026-01-26 11:02:08.525 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55322 - "GET /api/v1/users/21f1b354-fbdc-4652-a590-050d7519fea9/profile/image HTTP/1.1" 200
2026-01-26 11:02:08.531 | INFO     | open_webui.routers.ollama:get_all_models:331 - get_all_models()
2026-01-26 11:02:08.546 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/models HTTP/1.1" 200
2026-01-26 11:02:08.733 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55328 - "GET /api/v1/tools/ HTTP/1.1" 200
2026-01-26 11:02:08.733 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /api/v1/functions/ HTTP/1.1" 200
2026-01-26 11:02:08.734 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55322 - "GET /api/v1/models/model/profile/image?id=undefined&lang=zh-CN HTTP/1.1" 200
2026-01-26 11:02:08.736 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55338 - "GET /api/v1/models/model/profile/image?id=deepseek-r1:32b&lang=zh-CN HTTP/1.1" 200
2026-01-26 11:02:08.743 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55340 - "GET /api/v1/functions/ HTTP/1.1" 200
2026-01-26 11:02:09.548 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/version/updates HTTP/1.1" 200
2026-01-26 11:02:13.904 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/usage HTTP/1.1" 200
2026-01-26 11:02:14.911 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /static/favicon.png HTTP/1.1" 304
2026-01-26 11:02:14.970 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/v1/users/?page=1&order_by=created_at&direction=asc HTTP/1.1" 200
2026-01-26 11:02:14.981 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/v1/users/21f1b354-fbdc-4652-a590-050d7519fea9 HTTP/1.1" 200
2026-01-26 11:02:15.910 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55439 - "GET /api/v1/auths/admin/config HTTP/1.1" 200
2026-01-26 11:02:15.910 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55441 - "GET /api/webhook HTTP/1.1" 200
2026-01-26 11:02:15.911 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55442 - "GET /api/v1/auths/admin/config/ldap/server HTTP/1.1" 200
2026-01-26 11:02:15.912 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55443 - "GET /api/v1/groups/ HTTP/1.1" 200
2026-01-26 11:02:15.916 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55445 - "GET /static/favicon.png HTTP/1.1" 304
2026-01-26 11:02:15.920 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55439 - "GET /api/v1/auths/admin/config HTTP/1.1" 200
2026-01-26 11:02:15.921 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55441 - "GET /api/webhook HTTP/1.1" 200
2026-01-26 11:02:15.921 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55442 - "GET /api/v1/auths/admin/config/ldap/server HTTP/1.1" 200
2026-01-26 11:02:15.925 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55443 - "GET /api/v1/groups/ HTTP/1.1" 200
2026-01-26 11:02:15.926 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55445 - "GET /api/v1/auths/admin/config/ldap HTTP/1.1" 200
2026-01-26 11:02:15.944 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55445 - "GET /api/v1/auths/admin/config/ldap HTTP/1.1" 200
2026-01-26 11:02:16.613 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/version/updates HTTP/1.1" 200
2026-01-26 11:02:17.251 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55445 - "GET /api/version/updates HTTP/1.1" 200
2026-01-26 11:02:19.990 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55445 - "GET /api/changelog HTTP/1.1" 200
2026-01-26 11:02:26.487 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55585 - "POST /api/v1/users/user/settings/update HTTP/1.1" 200
2026-01-26 11:02:30.098 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55585 - "GET /api/v1/retrieval/config HTTP/1.1" 200
2026-01-26 11:02:30.103 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55633 - "GET /static/favicon.png HTTP/1.1" 304
2026-01-26 11:02:36.559 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55718 - "GET /api/v1/auths/admin/config HTTP/1.1" 200
2026-01-26 11:02:36.559 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55719 - "GET /api/webhook HTTP/1.1" 200
2026-01-26 11:02:36.560 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55720 - "GET /api/v1/auths/admin/config/ldap/server HTTP/1.1" 200
2026-01-26 11:02:36.564 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55722 - "GET /api/v1/groups/ HTTP/1.1" 200
2026-01-26 11:02:36.565 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55724 - "GET /static/favicon.png HTTP/1.1" 304
2026-01-26 11:02:36.577 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55724 - "GET /api/v1/auths/admin/config/ldap HTTP/1.1" 200
2026-01-26 11:02:37.199 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55714 - "GET /api/version/updates HTTP/1.1" 200
2026-01-26 11:02:41.611 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55714 - "GET /api/v1/tools/ HTTP/1.1" 200
2026-01-26 11:02:41.618 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55790 - "GET /static/favicon.png HTTP/1.1" 304
2026-01-26 11:03:03.131 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "POST /api/v1/chats/new HTTP/1.1" 200
2026-01-26 11:03:03.149 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "GET /api/v1/tools/ HTTP/1.1" 200
2026-01-26 11:03:03.188 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56060 - "GET /static/favicon.png HTTP/1.1" 304
2026-01-26 11:03:03.192 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200
2026-01-26 11:03:03.202 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "POST /api/v1/chats/ddf6808b-9d8b-4f45-bcdb-184a013d4c82 HTTP/1.1" 200
2026-01-26 11:03:03.208 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200
2026-01-26 11:03:03.229 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "POST /api/chat/completions HTTP/1.1" 200
2026-01-26 11:03:03.236 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200
2026-01-26 11:03:08.303 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56139 - "GET /_app/version.json HTTP/1.1" 200
2026-01-26 11:03:56.506 | ERROR    | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get'
2026-01-26 11:03:56.761 | ERROR    | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get'
2026-01-26 11:03:57.048 | ERROR    | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get'
2026-01-26 11:03:57.051 | ERROR    | open_webui.utils.middleware:chat_web_search_handler:897 - 404: [ERROR: No results found from web search]
Traceback (most recent call last):

  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/bin/open-webui", line 7, in <module>
    sys.exit(app())
    │   │    └ <typer.main.Typer object at 0x102dc70d0>
    │   └ <built-in function exit>
    └ <module 'sys' (built-in)>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/main.py", line 319, in __call__
    return get_command(self)(*args, **kwargs)
           │           │      │       └ {}
           │           │      └ ()
           │           └ <typer.main.Typer object at 0x102dc70d0>
           └ <function get_command at 0x1030e7e20>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1485, in __call__
    return self.main(*args, **kwargs)
           │    │     │       └ {}
           │    │     └ ()
           │    └ <function TyperGroup.main at 0x1032b3740>
           └ <TyperGroup >
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/core.py", line 814, in main
    return _main(
           └ <function _main at 0x1032b22a0>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/core.py", line 190, in _main
    rv = self.invoke(ctx)
         │    │      └ <click.core.Context object at 0x105b00410>
         │    └ <function Group.invoke at 0x1031828e0>
         └ <TyperGroup >
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1873, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
           │               │       │       │      └ <click.core.Context object at 0x1035398d0>
           │               │       │       └ <function Command.invoke at 0x1031816c0>
           │               │       └ <TyperCommand serve>
           │               └ <click.core.Context object at 0x1035398d0>
           └ <function Group.invoke.<locals>._process_result at 0x105ae6700>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1269, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           │   │      │    │           │   └ {'port': 9090, 'host': '0.0.0.0'}
           │   │      │    │           └ <click.core.Context object at 0x1035398d0>
           │   │      │    └ <function serve at 0x105ae63e0>
           │   │      └ <TyperCommand serve>
           │   └ <function Context.invoke at 0x103180900>
           └ <click.core.Context object at 0x1035398d0>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 824, in invoke
    return callback(*args, **kwargs)
           │         │       └ {'port': 9090, 'host': '0.0.0.0'}
           │         └ ()
           └ <function serve at 0x105ae63e0>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/main.py", line 706, in wrapper
    return callback(**use_params)
           │          └ {'host': '0.0.0.0', 'port': 9090}
           └ <function serve at 0x10532f060>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/__init__.py", line 78, in serve
    uvicorn.run(
    │       └ <function run at 0x10538f740>
    └ <module 'uvicorn' from '/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/__init__...
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/main.py", line 594, in run
    server.run()
    │      └ <function Server.run at 0x10538efc0>
    └ <uvicorn.server.Server object at 0x32ee12b50>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run
    return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory())
           │           │    │             │                      │    │      └ <function Config.get_loop_factory at 0x10532ede0>
           │           │    │             │                      │    └ <uvicorn.config.Config object at 0x105b014d0>
           │           │    │             │                      └ <uvicorn.server.Server object at 0x32ee12b50>
           │           │    │             └ None
           │           │    └ <function Server.serve at 0x10538f060>
           │           └ <uvicorn.server.Server object at 0x32ee12b50>
           └ <function asyncio_run at 0x105303f60>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/_compat.py", line 30, in asyncio_run
    return runner.run(main)
           │      │   └ <coroutine object Server.serve at 0x32ec56890>
           │      └ <function Runner.run at 0x105104180>
           └ <asyncio.runners.Runner object at 0x32ec64250>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           │    │     │                  └ <Task pending name='Task-1' coro=<Server.serve() running at /opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/pytho...
           │    │     └ <cyfunction Loop.run_until_complete at 0x32f5d9900>
           │    └ <uvloop.Loop running=True closed=False debug=False>
           └ <asyncio.runners.Runner object at 0x32ec64250>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/main.py", line 1710, in process_chat
    form_data, metadata, events = await process_chat_payload(
    │          │                        └ <function process_chat_payload at 0x32ee140e0>
    │          └ {'user_id': '21f1b354-fbdc-4652-a590-050d7519fea9', 'chat_id': 'ddf6808b-9d8b-4f45-bcdb-184a013d4c82', 'message_id': 'd88f746...
    └ {'stream': True, 'model': 'deepseek-r1:32b', 'messages': [{'role': 'system', 'content': 'User Context:\n\n'}, {'role': 'user'...
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/utils/middleware.py", line 1581, in process_chat_payload
    form_data = await chat_web_search_handler(
                      └ <function chat_web_search_handler at 0x32ebe3ba0>
> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/utils/middleware.py", line 834, in chat_web_search_handler
    results = await process_web_search(
                    └ <function process_web_search at 0x32a9abf60>
  File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/routers/retrieval.py", line 2293, in process_web_search
    raise HTTPException(
          └ <class 'fastapi.exceptions.HTTPException'>

fastapi.exceptions.HTTPException: 404: [ERROR: No results found from web search]
2026-01-26 11:04:08.335 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56928 - "GET /_app/version.json HTTP/1.1" 200
2026-01-26 11:05:08.999 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:57687 - "GET /_app/version.json HTTP/1.1" 200
2026-01-26 11:06:09.003 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:58504 - "GET /_app/version.json HTTP/1.1" 200
2026-01-26 11:07:04.045 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:59291 - "GET /static/favicon.png HTTP/1.1" 304
2026-01-26 11:07:04.045 | INFO     | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:59289 - "POST /api/chat/completed HTTP/1.1" 200

Additional Information

No response

Originally created by @freeNestor on GitHub (Jan 26, 2026). Original GitHub issue: https://github.com/open-webui/open-webui/issues/20936 ### Check Existing Issues - [x] I have searched for any existing and/or related issues. - [x] I have searched for any existing and/or related discussions. - [x] I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!). - [x] I am using the latest version of Open WebUI. ### Installation Method Pip Install ### Open WebUI Version 0.7.2 ### Ollama Version (if applicable) 0.14.1 ### Operating System macOS Tahoe ### Browser (if applicable) _No response_ ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have **provided every relevant configuration, setting, and environment variable used in my setup.** - [x] I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc). - [x] I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps: - Start with the initial platform/version/OS and dependencies used, - Specify exact install/launch/configure commands, - List URLs visited, user input (incl. example values/emails/passwords if needed), - Describe all options and toggles enabled or changed, - Include any files or environmental changes, - Identify the expected and actual result at each stage, - Ensure any reasonably skilled user can follow and hit the same issue. ### Expected Behavior open-webui should have no errors and support firecrawl web search api. ### Actual Behavior open-webui logs show errors and chat page shows:An error occurred while searching the web ``` 2026-01-26 11:03:56.506 | ERROR | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get' 2026-01-26 11:03:56.761 | ERROR | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get' 2026-01-26 11:03:57.048 | ERROR | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get' 2026-01-26 11:03:57.051 | ERROR | open_webui.utils.middleware:chat_web_search_handler:897 - 404: [ERROR: No results found from web search] Traceback (most recent call last): File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/bin/open-webui", line 7, in <module> sys.exit(app()) │ │ └ <typer.main.Typer object at 0x102dc70d0> │ └ <built-in function exit> └ <module 'sys' (built-in)> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/main.py", line 319, in __call__ return get_command(self)(*args, **kwargs) │ │ │ └ {} │ │ └ () │ └ <typer.main.Typer object at 0x102dc70d0> └ <function get_command at 0x1030e7e20> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1485, in __call__ return self.main(*args, **kwargs) │ │ │ └ {} │ │ └ () │ └ <function TyperGroup.main at 0x1032b3740> └ <TyperGroup > File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/core.py", line 814, in main return _main( └ <function _main at 0x1032b22a0> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/core.py", line 190, in _main rv = self.invoke(ctx) │ │ └ <click.core.Context object at 0x105b00410> │ └ <function Group.invoke at 0x1031828e0> └ <TyperGroup > File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1873, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) │ │ │ │ └ <click.core.Context object at 0x1035398d0> │ │ │ └ <function Command.invoke at 0x1031816c0> │ │ └ <TyperCommand serve> │ └ <click.core.Context object at 0x1035398d0> └ <function Group.invoke.<locals>._process_result at 0x105ae6700> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1269, in invoke return ctx.invoke(self.callback, **ctx.params) │ │ │ │ │ └ {'port': 9090, 'host': '0.0.0.0'} │ │ │ │ └ <click.core.Context object at 0x1035398d0> │ │ │ └ <function serve at 0x105ae63e0> │ │ └ <TyperCommand serve> │ └ <function Context.invoke at 0x103180900> └ <click.core.Context object at 0x1035398d0> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 824, in invoke return callback(*args, **kwargs) │ │ └ {'port': 9090, 'host': '0.0.0.0'} │ └ () └ <function serve at 0x105ae63e0> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/main.py", line 706, in wrapper return callback(**use_params) │ └ {'host': '0.0.0.0', 'port': 9090} └ <function serve at 0x10532f060> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/__init__.py", line 78, in serve uvicorn.run( │ └ <function run at 0x10538f740> └ <module 'uvicorn' from '/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/__init__... File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/main.py", line 594, in run server.run() │ └ <function Server.run at 0x10538efc0> └ <uvicorn.server.Server object at 0x32ee12b50> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory()) │ │ │ │ │ │ └ <function Config.get_loop_factory at 0x10532ede0> │ │ │ │ │ └ <uvicorn.config.Config object at 0x105b014d0> │ │ │ │ └ <uvicorn.server.Server object at 0x32ee12b50> │ │ │ └ None │ │ └ <function Server.serve at 0x10538f060> │ └ <uvicorn.server.Server object at 0x32ee12b50> └ <function asyncio_run at 0x105303f60> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/_compat.py", line 30, in asyncio_run return runner.run(main) │ │ └ <coroutine object Server.serve at 0x32ec56890> │ └ <function Runner.run at 0x105104180> └ <asyncio.runners.Runner object at 0x32ec64250> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/asyncio/runners.py", line 118, in run return self._loop.run_until_complete(task) │ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/pytho... │ │ └ <cyfunction Loop.run_until_complete at 0x32f5d9900> │ └ <uvloop.Loop running=True closed=False debug=False> └ <asyncio.runners.Runner object at 0x32ec64250> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/main.py", line 1710, in process_chat form_data, metadata, events = await process_chat_payload( │ │ └ <function process_chat_payload at 0x32ee140e0> │ └ {'user_id': '21f1b354-fbdc-4652-a590-050d7519fea9', 'chat_id': 'ddf6808b-9d8b-4f45-bcdb-184a013d4c82', 'message_id': 'd88f746... └ {'stream': True, 'model': 'deepseek-r1:32b', 'messages': [{'role': 'system', 'content': 'User Context:\n\n'}, {'role': 'user'... File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/utils/middleware.py", line 1581, in process_chat_payload form_data = await chat_web_search_handler( └ <function chat_web_search_handler at 0x32ebe3ba0> > File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/utils/middleware.py", line 834, in chat_web_search_handler results = await process_web_search( └ <function process_web_search at 0x32a9abf60> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/routers/retrieval.py", line 2293, in process_web_search raise HTTPException( └ <class 'fastapi.exceptions.HTTPException'> fastapi.exceptions.HTTPException: 404: [ERROR: No results found from web search] ``` ### Steps to Reproduce 1. Install ollama and open-webui by using conda. 2. Download firecrawl-2.7.0 from github.com. 3. Unpack and run docker compose up --build, firecrawl will be taken up and serviced locally at port 3002. 4. In open-webui admin pannel, set web search using firecrawl and set api address with http://loaclhost:3002. 5. Use curl test firecrawl search api if it works. 6. Go to chat and click web search,start a question with modal. 7. Chat page shows error : An error occurred while searching the web. 8. Logs show: ERROR | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get'. ### Logs & Screenshots <img width="1373" height="330" alt="Image" src="https://github.com/user-attachments/assets/a1b7789e-7d84-4a0d-a8af-189454b7571f" /> curl test: <img width="1799" height="264" alt="Image" src="https://github.com/user-attachments/assets/b1efe228-1b1c-45aa-9732-83255219b276" /> open-webui logs: ``` v0.7.2 - building the best AI user interface. https://github.com/open-webui/open-webui INFO: Started server process [23733] INFO: Waiting for application startup. 2026-01-26 11:02:04.318 | INFO | open_webui.utils.logger:start_logger:166 - GLOBAL_LOG_LEVEL: INFO 2026-01-26 11:02:04.318 | INFO | open_webui.main:lifespan:604 - Installing external dependencies of functions and tools... 2026-01-26 11:02:04.326 | INFO | open_webui.utils.plugin:install_frontmatter_requirements:286 - No requirements found in frontmatter. 2026-01-26 11:02:08.240 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET / HTTP/1.1" 304 2026-01-26 11:02:08.281 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55322 - "GET /static/splash.png HTTP/1.1" 200 2026-01-26 11:02:08.283 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /static/loader.js HTTP/1.1" 200 2026-01-26 11:02:08.284 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /static/custom.css HTTP/1.1" 200 2026-01-26 11:02:08.468 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55322 - "GET /api/config HTTP/1.1" 200 2026-01-26 11:02:08.469 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /opensearch.xml HTTP/1.1" 200 2026-01-26 11:02:08.471 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /static/favicon.png HTTP/1.1" 200 2026-01-26 11:02:08.485 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /api/v1/auths/ HTTP/1.1" 200 2026-01-26 11:02:08.491 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55322 - "GET /api/version HTTP/1.1" 200 2026-01-26 11:02:08.492 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55328 - "GET /api/config HTTP/1.1" 200 2026-01-26 11:02:08.493 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /static/favicon.ico HTTP/1.1" 200 2026-01-26 11:02:08.494 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /api/v1/users/user/settings HTTP/1.1" 200 2026-01-26 11:02:08.515 | INFO | open_webui.utils.plugin:install_frontmatter_requirements:286 - No requirements found in frontmatter. 2026-01-26 11:02:08.518 | INFO | open_webui.utils.plugin:load_tool_module_by_id:102 - Loaded module: tool_perplexica_search_ 2026-01-26 11:02:08.518 | INFO | open_webui.utils.plugin:install_frontmatter_requirements:286 - No requirements found in frontmatter. 2026-01-26 11:02:08.519 | INFO | open_webui.utils.plugin:load_tool_module_by_id:102 - Loaded module: tool_add_to_mem 2026-01-26 11:02:08.519 | INFO | open_webui.utils.plugin:install_frontmatter_requirements:286 - No requirements found in frontmatter. 2026-01-26 11:02:08.520 | INFO | open_webui.utils.plugin:load_tool_module_by_id:102 - Loaded module: tool_read_logs 2026-01-26 11:02:08.522 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /api/v1/configs/banners HTTP/1.1" 200 2026-01-26 11:02:08.524 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/v1/tools/ HTTP/1.1" 200 2026-01-26 11:02:08.524 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55328 - "GET /api/v1/users/user/settings HTTP/1.1" 200 2026-01-26 11:02:08.525 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55322 - "GET /api/v1/users/21f1b354-fbdc-4652-a590-050d7519fea9/profile/image HTTP/1.1" 200 2026-01-26 11:02:08.531 | INFO | open_webui.routers.ollama:get_all_models:331 - get_all_models() 2026-01-26 11:02:08.546 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/models HTTP/1.1" 200 2026-01-26 11:02:08.733 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55328 - "GET /api/v1/tools/ HTTP/1.1" 200 2026-01-26 11:02:08.733 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55318 - "GET /api/v1/functions/ HTTP/1.1" 200 2026-01-26 11:02:08.734 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55322 - "GET /api/v1/models/model/profile/image?id=undefined&lang=zh-CN HTTP/1.1" 200 2026-01-26 11:02:08.736 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55338 - "GET /api/v1/models/model/profile/image?id=deepseek-r1:32b&lang=zh-CN HTTP/1.1" 200 2026-01-26 11:02:08.743 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55340 - "GET /api/v1/functions/ HTTP/1.1" 200 2026-01-26 11:02:09.548 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/version/updates HTTP/1.1" 200 2026-01-26 11:02:13.904 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/usage HTTP/1.1" 200 2026-01-26 11:02:14.911 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /static/favicon.png HTTP/1.1" 304 2026-01-26 11:02:14.970 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/v1/users/?page=1&order_by=created_at&direction=asc HTTP/1.1" 200 2026-01-26 11:02:14.981 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/v1/users/21f1b354-fbdc-4652-a590-050d7519fea9 HTTP/1.1" 200 2026-01-26 11:02:15.910 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55439 - "GET /api/v1/auths/admin/config HTTP/1.1" 200 2026-01-26 11:02:15.910 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55441 - "GET /api/webhook HTTP/1.1" 200 2026-01-26 11:02:15.911 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55442 - "GET /api/v1/auths/admin/config/ldap/server HTTP/1.1" 200 2026-01-26 11:02:15.912 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55443 - "GET /api/v1/groups/ HTTP/1.1" 200 2026-01-26 11:02:15.916 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55445 - "GET /static/favicon.png HTTP/1.1" 304 2026-01-26 11:02:15.920 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55439 - "GET /api/v1/auths/admin/config HTTP/1.1" 200 2026-01-26 11:02:15.921 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55441 - "GET /api/webhook HTTP/1.1" 200 2026-01-26 11:02:15.921 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55442 - "GET /api/v1/auths/admin/config/ldap/server HTTP/1.1" 200 2026-01-26 11:02:15.925 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55443 - "GET /api/v1/groups/ HTTP/1.1" 200 2026-01-26 11:02:15.926 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55445 - "GET /api/v1/auths/admin/config/ldap HTTP/1.1" 200 2026-01-26 11:02:15.944 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55445 - "GET /api/v1/auths/admin/config/ldap HTTP/1.1" 200 2026-01-26 11:02:16.613 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55317 - "GET /api/version/updates HTTP/1.1" 200 2026-01-26 11:02:17.251 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55445 - "GET /api/version/updates HTTP/1.1" 200 2026-01-26 11:02:19.990 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55445 - "GET /api/changelog HTTP/1.1" 200 2026-01-26 11:02:26.487 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55585 - "POST /api/v1/users/user/settings/update HTTP/1.1" 200 2026-01-26 11:02:30.098 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55585 - "GET /api/v1/retrieval/config HTTP/1.1" 200 2026-01-26 11:02:30.103 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55633 - "GET /static/favicon.png HTTP/1.1" 304 2026-01-26 11:02:36.559 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55718 - "GET /api/v1/auths/admin/config HTTP/1.1" 200 2026-01-26 11:02:36.559 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55719 - "GET /api/webhook HTTP/1.1" 200 2026-01-26 11:02:36.560 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55720 - "GET /api/v1/auths/admin/config/ldap/server HTTP/1.1" 200 2026-01-26 11:02:36.564 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55722 - "GET /api/v1/groups/ HTTP/1.1" 200 2026-01-26 11:02:36.565 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55724 - "GET /static/favicon.png HTTP/1.1" 304 2026-01-26 11:02:36.577 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55724 - "GET /api/v1/auths/admin/config/ldap HTTP/1.1" 200 2026-01-26 11:02:37.199 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55714 - "GET /api/version/updates HTTP/1.1" 200 2026-01-26 11:02:41.611 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55714 - "GET /api/v1/tools/ HTTP/1.1" 200 2026-01-26 11:02:41.618 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:55790 - "GET /static/favicon.png HTTP/1.1" 304 2026-01-26 11:03:03.131 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "POST /api/v1/chats/new HTTP/1.1" 200 2026-01-26 11:03:03.149 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "GET /api/v1/tools/ HTTP/1.1" 200 2026-01-26 11:03:03.188 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56060 - "GET /static/favicon.png HTTP/1.1" 304 2026-01-26 11:03:03.192 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 2026-01-26 11:03:03.202 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "POST /api/v1/chats/ddf6808b-9d8b-4f45-bcdb-184a013d4c82 HTTP/1.1" 200 2026-01-26 11:03:03.208 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 2026-01-26 11:03:03.229 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "POST /api/chat/completions HTTP/1.1" 200 2026-01-26 11:03:03.236 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56057 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 2026-01-26 11:03:08.303 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56139 - "GET /_app/version.json HTTP/1.1" 200 2026-01-26 11:03:56.506 | ERROR | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get' 2026-01-26 11:03:56.761 | ERROR | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get' 2026-01-26 11:03:57.048 | ERROR | open_webui.retrieval.web.firecrawl:search_firecrawl:38 - Error in External search: 'SearchResultWeb' object has no attribute 'get' 2026-01-26 11:03:57.051 | ERROR | open_webui.utils.middleware:chat_web_search_handler:897 - 404: [ERROR: No results found from web search] Traceback (most recent call last): File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/bin/open-webui", line 7, in <module> sys.exit(app()) │ │ └ <typer.main.Typer object at 0x102dc70d0> │ └ <built-in function exit> └ <module 'sys' (built-in)> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/main.py", line 319, in __call__ return get_command(self)(*args, **kwargs) │ │ │ └ {} │ │ └ () │ └ <typer.main.Typer object at 0x102dc70d0> └ <function get_command at 0x1030e7e20> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1485, in __call__ return self.main(*args, **kwargs) │ │ │ └ {} │ │ └ () │ └ <function TyperGroup.main at 0x1032b3740> └ <TyperGroup > File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/core.py", line 814, in main return _main( └ <function _main at 0x1032b22a0> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/core.py", line 190, in _main rv = self.invoke(ctx) │ │ └ <click.core.Context object at 0x105b00410> │ └ <function Group.invoke at 0x1031828e0> └ <TyperGroup > File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1873, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) │ │ │ │ └ <click.core.Context object at 0x1035398d0> │ │ │ └ <function Command.invoke at 0x1031816c0> │ │ └ <TyperCommand serve> │ └ <click.core.Context object at 0x1035398d0> └ <function Group.invoke.<locals>._process_result at 0x105ae6700> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 1269, in invoke return ctx.invoke(self.callback, **ctx.params) │ │ │ │ │ └ {'port': 9090, 'host': '0.0.0.0'} │ │ │ │ └ <click.core.Context object at 0x1035398d0> │ │ │ └ <function serve at 0x105ae63e0> │ │ └ <TyperCommand serve> │ └ <function Context.invoke at 0x103180900> └ <click.core.Context object at 0x1035398d0> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/click/core.py", line 824, in invoke return callback(*args, **kwargs) │ │ └ {'port': 9090, 'host': '0.0.0.0'} │ └ () └ <function serve at 0x105ae63e0> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/typer/main.py", line 706, in wrapper return callback(**use_params) │ └ {'host': '0.0.0.0', 'port': 9090} └ <function serve at 0x10532f060> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/__init__.py", line 78, in serve uvicorn.run( │ └ <function run at 0x10538f740> └ <module 'uvicorn' from '/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/__init__... File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/main.py", line 594, in run server.run() │ └ <function Server.run at 0x10538efc0> └ <uvicorn.server.Server object at 0x32ee12b50> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory()) │ │ │ │ │ │ └ <function Config.get_loop_factory at 0x10532ede0> │ │ │ │ │ └ <uvicorn.config.Config object at 0x105b014d0> │ │ │ │ └ <uvicorn.server.Server object at 0x32ee12b50> │ │ │ └ None │ │ └ <function Server.serve at 0x10538f060> │ └ <uvicorn.server.Server object at 0x32ee12b50> └ <function asyncio_run at 0x105303f60> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/uvicorn/_compat.py", line 30, in asyncio_run return runner.run(main) │ │ └ <coroutine object Server.serve at 0x32ec56890> │ └ <function Runner.run at 0x105104180> └ <asyncio.runners.Runner object at 0x32ec64250> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/asyncio/runners.py", line 118, in run return self._loop.run_until_complete(task) │ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/pytho... │ │ └ <cyfunction Loop.run_until_complete at 0x32f5d9900> │ └ <uvloop.Loop running=True closed=False debug=False> └ <asyncio.runners.Runner object at 0x32ec64250> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/main.py", line 1710, in process_chat form_data, metadata, events = await process_chat_payload( │ │ └ <function process_chat_payload at 0x32ee140e0> │ └ {'user_id': '21f1b354-fbdc-4652-a590-050d7519fea9', 'chat_id': 'ddf6808b-9d8b-4f45-bcdb-184a013d4c82', 'message_id': 'd88f746... └ {'stream': True, 'model': 'deepseek-r1:32b', 'messages': [{'role': 'system', 'content': 'User Context:\n\n'}, {'role': 'user'... File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/utils/middleware.py", line 1581, in process_chat_payload form_data = await chat_web_search_handler( └ <function chat_web_search_handler at 0x32ebe3ba0> > File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/utils/middleware.py", line 834, in chat_web_search_handler results = await process_web_search( └ <function process_web_search at 0x32a9abf60> File "/opt/homebrew/Caskroom/miniforge/base/envs/ollama-webui/lib/python3.11/site-packages/open_webui/routers/retrieval.py", line 2293, in process_web_search raise HTTPException( └ <class 'fastapi.exceptions.HTTPException'> fastapi.exceptions.HTTPException: 404: [ERROR: No results found from web search] 2026-01-26 11:04:08.335 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:56928 - "GET /_app/version.json HTTP/1.1" 200 2026-01-26 11:05:08.999 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:57687 - "GET /_app/version.json HTTP/1.1" 200 2026-01-26 11:06:09.003 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:58504 - "GET /_app/version.json HTTP/1.1" 200 2026-01-26 11:07:04.045 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:59291 - "GET /static/favicon.png HTTP/1.1" 304 2026-01-26 11:07:04.045 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 127.0.0.1:59289 - "POST /api/chat/completed HTTP/1.1" 200 ``` ### Additional Information _No response_
GiteaMirror added the bug label 2026-05-05 22:09:03 -05:00
Author
Owner

@owui-terminator[bot] commented on GitHub (Jan 26, 2026):

🔍 Similar Issues Found

I found some existing issues that might be related to this one. Please check if any of these are duplicates or contain helpful solutions:

  1. #20595 issue: "search_web" tool executed even when "Web Search" control disabled
    by SlavikCA • Jan 11, 2026 • bug

  2. #20641 issue: Web Search and Builtin Tools permissions break search
    by HenkieTenkie62 • Jan 13, 2026 • bug

  3. #20621 issue: WebSearch not working properly on the manul mode.
    by calebrio02 • Jan 12, 2026 • bug

  4. #19698 issue: .41 web based search and webpages - RAG - are not fixed
    by frenzybiscuit • Dec 02, 2025 • bug

  5. #19925 issue: Model responses stop after web searches
    by tm-coder-484 • Dec 13, 2025 • bug

Show 5 more related issues
  1. #20003 issue: Web Search with BRAVE API does not work.
    by tigran123 • Dec 17, 2025 • bug

  2. #20230 Bocha:Max retries exceeded with url: /v1/web-search?utm_source=ollama (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1006)')))
    by gongshaojie12 • Dec 29, 2025 • bug

  3. #11721 issue: Web Search not working!
    by Hashah2311 • Mar 15, 2025 • bug

  4. #19733 issue: AttributeError: 'str' object has no attribute 'get' when using Bocha search engine
    by Sorkai • Dec 04, 2025 • bug

  5. #19755 issue: Error: 404, message='Not Found', url='http://ollama:11434/api/embed'
    by stevewillett • Dec 04, 2025 • bug


💡 Tips:

  • If this is a duplicate, please consider closing this issue and adding any additional details to the existing one
  • If you found a solution in any of these issues, please share it here to help others

This comment was generated automatically by a bot. Please react with a 👍 if this comment was helpful, or a 👎 if it was not.

<!-- gh-comment-id:3797766155 --> @owui-terminator[bot] commented on GitHub (Jan 26, 2026): 🔍 **Similar Issues Found** I found some existing issues that might be related to this one. Please check if any of these are duplicates or contain helpful solutions: 1. [#20595](https://github.com/open-webui/open-webui/issues/20595) **issue: "search_web" tool executed even when "Web Search" control disabled** *by SlavikCA • Jan 11, 2026 • `bug`* 2. [#20641](https://github.com/open-webui/open-webui/issues/20641) **issue: Web Search and Builtin Tools permissions break search** *by HenkieTenkie62 • Jan 13, 2026 • `bug`* 3. [#20621](https://github.com/open-webui/open-webui/issues/20621) **issue: WebSearch not working properly on the manul mode.** *by calebrio02 • Jan 12, 2026 • `bug`* 4. [#19698](https://github.com/open-webui/open-webui/issues/19698) **issue: .41 web based search and webpages - RAG - are not fixed** *by frenzybiscuit • Dec 02, 2025 • `bug`* 5. [#19925](https://github.com/open-webui/open-webui/issues/19925) **issue: Model responses stop after web searches** *by tm-coder-484 • Dec 13, 2025 • `bug`* <details> <summary>Show 5 more related issues</summary> 6. [#20003](https://github.com/open-webui/open-webui/issues/20003) **issue: Web Search with BRAVE API does not work.** *by tigran123 • Dec 17, 2025 • `bug`* 7. [#20230](https://github.com/open-webui/open-webui/issues/20230) **Bocha:Max retries exceeded with url: /v1/web-search?utm_source=ollama (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1006)')))** *by gongshaojie12 • Dec 29, 2025 • `bug`* 8. [#11721](https://github.com/open-webui/open-webui/issues/11721) **issue: Web Search not working!** *by Hashah2311 • Mar 15, 2025 • `bug`* 9. [#19733](https://github.com/open-webui/open-webui/issues/19733) **issue: AttributeError: 'str' object has no attribute 'get' when using Bocha search engine** *by Sorkai • Dec 04, 2025 • `bug`* 10. [#19755](https://github.com/open-webui/open-webui/issues/19755) **issue: Error: 404, message='Not Found', url='http://ollama:11434/api/embed'** *by stevewillett • Dec 04, 2025 • `bug`* </details> --- 💡 **Tips:** - If this is a duplicate, please consider closing this issue and adding any additional details to the existing one - If you found a solution in any of these issues, please share it here to help others *This comment was generated automatically by a bot.* Please react with a 👍 if this comment was helpful, or a 👎 if it was not.
Author
Owner

@freeNestor commented on GitHub (Jan 28, 2026):

solved by myself. Need to modify the source file (ollama-webui/lib/python3.11/site-packages/open_webui/retrieval/web/main.py) to fit firecrawl's response.

<!-- gh-comment-id:3808377066 --> @freeNestor commented on GitHub (Jan 28, 2026): solved by myself. Need to modify the source file (ollama-webui/lib/python3.11/site-packages/open_webui/retrieval/web/main.py) to fit firecrawl's response.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#57999