openclaw - 💡(How to fix) Fix feat(web_search): consider DuckDuckGo-compatible provider [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#50967Fetched 2026-04-08 01:06:09
View on GitHub
Comments
1
Participants
2
Timeline
2
Reactions
0
Timeline (top)
commented ×1cross-referenced ×1

OpenClaw already supports web_search providers like Brave, Perplexity, Gemini, Grok, and Kimi. A useful addition would be a DuckDuckGo-compatible provider for users who want a lower-friction search option without depending on Brave API setup.

Root Cause

This would make web search more accessible to contributors and users who want a simpler default or an alternative to Brave.

RAW_BUFFERClick to expand / collapse

Summary

OpenClaw already supports web_search providers like Brave, Perplexity, Gemini, Grok, and Kimi. A useful addition would be a DuckDuckGo-compatible provider for users who want a lower-friction search option without depending on Brave API setup.

Motivation

Some contributors and users want:

  • a web search option that does not require Brave Search configuration
  • a simpler onboarding path for lightweight research tasks
  • more provider diversity in web_search

Important note

This should fit the current OpenClaw architecture as a web_search provider, not as a standalone skill.

Suggested direction

If maintainers consider it acceptable from a compliance and maintenance perspective, add a new web_search provider for DuckDuckGo-compatible search.

Possible scope:

  • tools.web.search.provider: "duckduckgo"
  • structured results with title, url, and snippet
  • same web_search interface used by existing providers
  • provider-specific docs and onboarding guidance
  • clear guardrails if the source has reliability / policy limitations

Acceptance criteria

  • provider can be selected in config and onboarding
  • web_search works through the new provider with the standard tool contract
  • docs explain setup, limitations, and expected result quality
  • tests cover config resolution, request/response parsing, and failure modes

Why this matters

This would make web search more accessible to contributors and users who want a simpler default or an alternative to Brave.

extent analysis

Fix Plan

To add a DuckDuckGo-compatible provider for web_search, follow these steps:

  • Add a new provider configuration:
    • Create a new file duckduckgo.py in the web_search/providers directory
    • Define a DuckDuckGoProvider class that inherits from the base WebSearchProvider class
  • Implement the search method:
    • Use the requests library to send a GET request to the DuckDuckGo API
    • Parse the response JSON to extract the title, URL, and snippet for each result
  • Update the web_search interface:
    • Add a new duckduckgo provider option to the tools.web.search.provider configuration
    • Update the web_search function to use the new provider
  • Add provider-specific documentation and onboarding guidance:
    • Create a new Markdown file in the docs directory to document the DuckDuckGo provider
    • Update the onboarding process to include the new provider option

Example code:

# duckduckgo.py
import requests

class DuckDuckGoProvider(WebSearchProvider):
    def search(self, query):
        url = "https://api.duckduckgo.com/"
        params = {"q": query, "format": "json"}
        response = requests.get(url, params=params)
        results = []
        for result in response.json()["RelatedTopics"]:
            title = result["Text"]
            url = result["FirstURL"]
            snippet = result["Text"]
            results.append({"title": title, "url": url, "snippet": snippet})
        return results

Verification

To verify that the fix worked:

  • Test the new provider by setting tools.web.search.provider to duckduckgo and running a search query
  • Verify that the search results are displayed correctly with title, URL, and snippet
  • Test the onboarding process to ensure that the new provider option is available and functional

Extra Tips

  • Make sure to handle errors and exceptions properly, such as API rate limits or invalid responses
  • Consider adding additional features, such as support for multiple search parameters or result filtering
  • Update the tests to cover the new provider and ensure that it works correctly in different scenarios.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix feat(web_search): consider DuckDuckGo-compatible provider [1 comments, 2 participants]