{"record":{"id":"8638b177e089ef86","repo":"zeroclaw-labs/zeroclaw","slug":"duckduckgo-blocked-the-automated-search-request-t","errorCode":null,"errorMessage":"DuckDuckGo blocked the automated search request. Try configuring SearXNG, Brave, or Tavily as the web search provider.","messagePattern":"DuckDuckGo blocked the automated search request\\. Try configuring SearXNG, Brave, or Tavily as the web search provider\\.","errorType":"http","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-tools/src/web_search_tool.rs","lineNumber":204,"sourceCode":"    ) -> anyhow::Result<String> {\n        let encoded_query = urlencoding::encode(query);\n        let search_url = format!(\"{}?q={}\", endpoint_url, encoded_query);\n\n        let builder = reqwest::Client::builder()\n            .timeout(Duration::from_secs(self.timeout_secs))\n            .user_agent(\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36\");\n        let builder =\n            zeroclaw_config::schema::apply_runtime_proxy_to_builder(builder, \"tool.web_search\");\n        let client = builder.build()?;\n\n        let response = client.get(&search_url).send().await?;\n        let status = response.status();\n        let final_url_is_block =\n            contains_ascii_case_insensitive(response.url().as_str(), \"/wr.do?\");\n\n        if !status.is_success() {\n            if let Some(message) = duckduckgo_block_message(status, final_url_is_block, false) {\n                anyhow::bail!(message);\n            }\n            return Err(http_search_failure(\"duckduckgo\", status));\n        }\n\n        let html = response.text().await?;\n        let html_contains_block = contains_ascii_case_insensitive(&html, \"/wr.do?\")\n            || contains_ascii_case_insensitive(&html, \"anomaly-modal\");\n        if let Some(message) =\n            duckduckgo_block_message(status, final_url_is_block, html_contains_block)\n        {\n            anyhow::bail!(message);\n        }\n        self.parse_duckduckgo_results(&html, query)\n    }\n\n    fn parse_duckduckgo_results(&self, html: &str, query: &str) -> anyhow::Result<String> {\n        // Extract result links: <a class=\"result__a\" href=\"...\">Title</a>\n        let link_regex = Regex::new(","sourceCodeStart":186,"sourceCodeEnd":222,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-tools/src/web_search_tool.rs#L186-L222","documentation":"Error \"DuckDuckGo blocked the automated search request. Try configuring SearXNG, Brave, or Tavily as the web search provider.\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-tools/src/web_search_tool.rs:204 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Configure SearXNG, Brave, or Tavily as the web search provider via `zeroclaw config set tools.web_search.provider <name>` and set its API key/URL.","Reduce request rate or retry later if DuckDuckGo rate-limited the request."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}