n8n-nodes-duckduckgo-search 31.0.1 → 32.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/LICENSE.md +25 -25
  2. package/README.md +102 -213
  3. package/dist/nodes/DuckDuckGo/DuckDuckGo.node.js +148 -2084
  4. package/dist/nodes/DuckDuckGo/__tests__/DuckDuckGo.test.js +69 -462
  5. package/dist/nodes/DuckDuckGo/errors.js +146 -271
  6. package/dist/nodes/DuckDuckGo/processors.js +77 -146
  7. package/dist/nodes/DuckDuckGo/reliability.js +139 -0
  8. package/dist/nodes/DuckDuckGo/utils.js +86 -55
  9. package/dist/nodes/DuckDuckGo/validation.js +133 -0
  10. package/dist/package.json +3 -17
  11. package/index.js +1 -1
  12. package/package.json +3 -17
  13. package/dist/credentials/DuckDuckGoApi.credentials.js +0 -24
  14. package/dist/nodes/DuckDuckGo/__tests__/errors.test.js +0 -156
  15. package/dist/nodes/DuckDuckGo/__tests__/locale.test.js +0 -259
  16. package/dist/nodes/DuckDuckGo/__tests__/proxy.test.js +0 -228
  17. package/dist/nodes/DuckDuckGo/__tests__/reliabilityManager.test.js +0 -335
  18. package/dist/nodes/DuckDuckGo/__tests__/reliabilityManagerIntegration.test.js +0 -297
  19. package/dist/nodes/DuckDuckGo/__tests__/searchOperators.test.js +0 -207
  20. package/dist/nodes/DuckDuckGo/__tests__/telemetry.test.js +0 -89
  21. package/dist/nodes/DuckDuckGo/__tests__/vqdPagination.test.js +0 -53
  22. package/dist/nodes/DuckDuckGo/apiClient.js +0 -230
  23. package/dist/nodes/DuckDuckGo/cache.js +0 -41
  24. package/dist/nodes/DuckDuckGo/directSearch.js +0 -197
  25. package/dist/nodes/DuckDuckGo/errorHandler.js +0 -73
  26. package/dist/nodes/DuckDuckGo/fallbackSearch.js +0 -194
  27. package/dist/nodes/DuckDuckGo/htmlParser.js +0 -51
  28. package/dist/nodes/DuckDuckGo/multiBackendSearch.js +0 -315
  29. package/dist/nodes/DuckDuckGo/proxy.js +0 -137
  30. package/dist/nodes/DuckDuckGo/rateLimiter.js +0 -181
  31. package/dist/nodes/DuckDuckGo/reliabilityManager.js +0 -235
  32. package/dist/nodes/DuckDuckGo/searchFilters.js +0 -222
  33. package/dist/nodes/DuckDuckGo/searchOperators.js +0 -420
  34. package/dist/nodes/DuckDuckGo/telemetry.js +0 -71
  35. package/dist/nodes/DuckDuckGo/vqdPagination.js +0 -268
package/LICENSE.md CHANGED
@@ -1,25 +1,25 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Sam Nodehi
4
- Project: n8n-nodes-duckduckgo
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in
14
- all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- THE SOFTWARE.
23
-
24
- Use at your own risk. The authors are not responsible for any damages or
25
- losses caused by the use of this software.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Sam Nodehi
4
+ Project: n8n-nodes-duckduckgo
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.
23
+
24
+ Use at your own risk. The authors are not responsible for any damages or
25
+ losses caused by the use of this software.
package/README.md CHANGED
@@ -1,46 +1,28 @@
1
1
  # DuckDuckGo Search Node for n8n
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/n8n-nodes-duckduckgo-search.svg?v=31.0.0)](https://www.npmjs.com/package/n8n-nodes-duckduckgo-search)
3
+ [![npm version](https://img.shields.io/npm/v/n8n-nodes-duckduckgo-search.svg?v=32.1.0)](https://www.npmjs.com/package/n8n-nodes-duckduckgo-search)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
- A powerful and comprehensive n8n community node that seamlessly integrates DuckDuckGo search capabilities into your workflows. Search the web, find images, discover news, and explore videos - all with privacy-focused, reliable results.
6
+ A professional-grade n8n community node for DuckDuckGo search with enterprise-level error handling, validation, and quality assurance. Search the web, find images, discover news, and explore videos with privacy-focused, reliable results.
7
7
 
8
8
  ## ✨ Features
9
9
 
10
- ### 🤖 **AI Agent Integration** (New in v31.0.0)
11
- - **Agent Tool Support**: Use as a tool in n8n AI Agent workflows
12
- - **LLM-Optimized**: Clean interface designed for AI agent consumption
13
- - **Structured Output**: Predictable format perfect for downstream AI processing
14
- - **Production-Ready**: Enterprise-grade reliability for agent workloads
15
- - **Enable**: Set `N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true` environment variable
16
-
17
- ### 🛡️ **Advanced Reliability System** (New in v31.0.0)
18
- - **Adaptive Backoff**: Automatically backs off on consecutive empty results
19
- - **Jittered Delays**: Prevents thundering herd in parallel execution
20
- - **Circuit Breaker**: Automatic failure detection and recovery
21
- - **Retry Logic**: Configurable retries with exponential backoff
22
- - **Metrics Tracking**: Monitor performance, failures, and circuit state
23
-
24
10
  ### 🔍 **Complete Search Coverage**
25
- - **Web Search**: Comprehensive web search with rich content extraction
11
+ - **Web Search**: Comprehensive web search with clean results
26
12
  - **Image Search**: High-quality image discovery with metadata
27
13
  - **News Search**: Real-time news from diverse sources worldwide
28
14
  - **Video Search**: Video content discovery across multiple platforms
29
15
 
30
- ### 🚀 **Advanced Capabilities**
31
- - **Smart Query Processing**: Intelligent query enhancement and optimization
32
- - **Rich Results**: Complete metadata including titles, descriptions, sources, and dates
33
- - **Multiple Formats**: Support for various content types and file formats
34
- - **Language Support**: 50+ language and region combinations
35
- - **Search Operators**: Advanced search syntax (`site:`, `intitle:`, `filetype:`, etc.)
36
- - **Safe Search**: Configurable content filtering options
16
+ ### 🚀 **Simple & Fast**
17
+ - **Lightweight Design**: Simplified codebase for better performance
18
+ - **Essential Parameters**: Only the settings you actually need
19
+ - **No Extra Overhead**: Removed complex features for speed
20
+ - **Clean Results**: Focused on delivering quality search results
37
21
 
38
- ### 🛡️ **Privacy & Performance**
22
+ ### 🛡️ **Privacy-Focused**
39
23
  - **No API Keys Required**: Completely free to use without registration
40
- - **Privacy-Focused**: No user tracking or data collection
41
- - **High Performance**: Optimized for speed and reliability under load
42
- - **Error Handling**: Robust error recovery and retry mechanisms
43
- - **Rate Limiting**: Intelligent protection against overuse
24
+ - **Privacy-First**: No user tracking or data collection
25
+ - **Direct Integration**: Uses DuckDuckGo's search directly
44
26
 
45
27
  ## 📦 Installation
46
28
 
@@ -57,38 +39,24 @@ npm install n8n-nodes-duckduckgo-search
57
39
 
58
40
  ## 🚀 Quick Start
59
41
 
60
- ### Standard Usage
61
-
62
42
  1. **Add Node**: Drag the **DuckDuckGo Search** node into your workflow
63
43
  2. **Choose Operation**: Select Web, Image, News, or Video search
64
44
  3. **Enter Query**: Type your search terms
65
45
  4. **Configure Options**: Set result limits, language, and filters
66
46
  5. **Execute**: Run your workflow and get results!
67
47
 
68
- ### AI Agent Usage
69
-
70
- Use DuckDuckGo Search as a tool in AI Agent workflows for intelligent, autonomous search:
71
-
72
- 1. **Enable Community Tools**: Set environment variable `N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true`
73
- 2. **Add AI Agent**: Create an AI Agent node in your workflow
74
- 3. **Connect Tool**: Add DuckDuckGo Search node as a tool to your agent
75
- 4. **Configure**: The agent will automatically use the search tool when needed
76
- 5. **Run**: Let your AI agent autonomously search and process results
77
-
78
- The node provides clean, structured output optimized for LLM consumption with automatic handling of parallel requests and rate limits.
79
-
80
48
  ## 🔧 Usage Examples
81
49
 
82
50
  ### Web Search
83
51
  ```json
84
52
  {
85
53
  "operation": "search",
86
- "query": "artificial intelligence trends 2025",
87
- "webSearchOptions": {
88
- "maxResults": 20,
89
- "region": "us-en",
90
- "safeSearch": 1
91
- }
54
+ "query": "artificial intelligence trends 2026",
55
+ "locale": "en-us",
56
+ "maxResults": 20,
57
+ "region": "us-en",
58
+ "safeSearch": -1,
59
+ "timePeriod": ""
92
60
  }
93
61
  ```
94
62
 
@@ -96,10 +64,12 @@ The node provides clean, structured output optimized for LLM consumption with au
96
64
  ```json
97
65
  [
98
66
  {
99
- "title": "AI Trends 2025: What to Expect",
100
- "url": "https://example.com/ai-trends-2025",
67
+ "position": 1,
68
+ "title": "AI Trends 2026: What to Expect",
101
69
  "description": "Comprehensive overview of artificial intelligence trends...",
102
- "hostname": "example.com"
70
+ "url": "https://example.com/ai-trends-2026",
71
+ "hostname": "example.com",
72
+ "sourceType": "web"
103
73
  }
104
74
  ]
105
75
  ```
@@ -108,14 +78,11 @@ The node provides clean, structured output optimized for LLM consumption with au
108
78
  ```json
109
79
  {
110
80
  "operation": "searchImages",
111
- "imageQuery": "sunset mountains landscape",
112
- "imageSearchOptions": {
113
- "maxResults": 15,
114
- "safeSearch": 1,
115
- "size": "large",
116
- "color": "color",
117
- "type": "photo"
118
- }
81
+ "query": "sunset mountains landscape",
82
+ "locale": "en-us",
83
+ "maxResults": 15,
84
+ "region": "us-en",
85
+ "safeSearch": -1
119
86
  }
120
87
  ```
121
88
 
@@ -124,11 +91,13 @@ The node provides clean, structured output optimized for LLM consumption with au
124
91
  [
125
92
  {
126
93
  "title": "Beautiful Mountain Sunset",
127
- "url": "https://example.com/mountain-sunset.jpg",
128
- "thumbnail": "https://example.com/thumb.jpg",
94
+ "url": "https://example.com/page",
95
+ "imageUrl": "https://example.com/mountain-sunset.jpg",
96
+ "thumbnailUrl": "https://example.com/thumb.jpg",
129
97
  "height": 1080,
130
98
  "width": 1920,
131
- "source": "Photography Site"
99
+ "source": "example.com",
100
+ "sourceType": "image"
132
101
  }
133
102
  ]
134
103
  ```
@@ -137,13 +106,12 @@ The node provides clean, structured output optimized for LLM consumption with au
137
106
  ```json
138
107
  {
139
108
  "operation": "searchNews",
140
- "newsQuery": "renewable energy breakthrough",
141
- "newsSearchOptions": {
142
- "maxResults": 10,
143
- "region": "us-en",
144
- "safeSearch": 1,
145
- "timePeriod": "d"
146
- }
109
+ "query": "renewable energy breakthrough",
110
+ "locale": "en-us",
111
+ "maxResults": 10,
112
+ "region": "us-en",
113
+ "safeSearch": -1,
114
+ "timePeriod": "d"
147
115
  }
148
116
  ```
149
117
 
@@ -152,10 +120,13 @@ The node provides clean, structured output optimized for LLM consumption with au
152
120
  [
153
121
  {
154
122
  "title": "Major Breakthrough in Solar Energy Efficiency",
155
- "url": "https://news.example.com/solar-breakthrough",
156
123
  "description": "Scientists announce 40% efficiency improvement...",
157
- "publishedDate": "2025-06-29",
158
- "source": "Tech News Daily"
124
+ "url": "https://news.example.com/solar-breakthrough",
125
+ "imageUrl": "https://news.example.com/solar.jpg",
126
+ "date": "2026-01-13T10:30:00.000Z",
127
+ "relativeTime": "2 hours ago",
128
+ "syndicate": "Tech News Daily",
129
+ "sourceType": "news"
159
130
  }
160
131
  ]
161
132
  ```
@@ -164,13 +135,11 @@ The node provides clean, structured output optimized for LLM consumption with au
164
135
  ```json
165
136
  {
166
137
  "operation": "searchVideos",
167
- "videoQuery": "machine learning tutorial",
168
- "videoSearchOptions": {
169
- "maxResults": 12,
170
- "safeSearch": 1,
171
- "duration": "medium",
172
- "resolution": "high"
173
- }
138
+ "query": "machine learning tutorial",
139
+ "locale": "en-us",
140
+ "maxResults": 12,
141
+ "region": "us-en",
142
+ "safeSearch": -1
174
143
  }
175
144
  ```
176
145
 
@@ -179,106 +148,64 @@ The node provides clean, structured output optimized for LLM consumption with au
179
148
  [
180
149
  {
181
150
  "title": "Complete Machine Learning Tutorial",
151
+ "description": "Learn machine learning from scratch...",
182
152
  "url": "https://video.example.com/ml-tutorial",
183
- "thumbnail": "https://video.example.com/thumb.jpg",
153
+ "imageUrl": "https://video.example.com/thumb.jpg",
184
154
  "duration": "15:30",
185
- "publishedDate": "2025-06-20",
186
- "views": "125000",
187
- "source": "Educational Channel"
155
+ "published": "2026-01-10",
156
+ "publisher": "Educational Channel",
157
+ "viewCount": "125000",
158
+ "sourceType": "video"
188
159
  }
189
160
  ]
190
161
  ```
191
162
 
192
163
  ## ⚙️ Configuration Options
193
164
 
194
- ### Reliability Settings (New in v31.0.0)
195
-
196
- Advanced reliability features for production workloads:
165
+ ### Parameters
197
166
 
198
- | Setting | Default | Description |
199
- |---------|---------|-------------|
200
- | **Enable Reliability** | true | Master switch for all reliability features |
201
- | **Empty Result Threshold** | 3 | Consecutive empty results before backoff |
202
- | **Initial Backoff** | 1000ms | Starting backoff delay |
203
- | **Max Backoff** | 30000ms | Maximum backoff delay |
204
- | **Min Jitter** | 100ms | Minimum random delay |
205
- | **Max Jitter** | 500ms | Maximum random delay |
206
- | **Failure Threshold** | 5 | Failures before circuit opens |
207
- | **Circuit Reset Timeout** | 60000ms | Time before retry after circuit opens |
208
- | **Max Retries** | 3 | Maximum retry attempts |
209
- | **Retry Delay** | 1000ms | Base delay between retries |
167
+ | Parameter | Type | Description | Default |
168
+ |-----------|------|-------------|---------|
169
+ | **Operation** | options | Type of search (search, searchImages, searchNews, searchVideos) | search |
170
+ | **Locale** | options | Search language/region locale | en-us |
171
+ | **Search Query** | string | Search terms to look for | Required |
172
+ | **Maximum Results** | number | Number of results to return (1-50) | 10 |
173
+ | **Region** | options | Geographic region for search results | wt-wt |
174
+ | **Safe Search** | options | Content filtering level (Strict=0, Moderate=-1, Off=-2) | -1 |
175
+ | **Time Period** | options | Time range for results (All Time='', Past Day='d', Week='w', Month='m', Year='y') | '' |
210
176
 
211
177
  ### Search Types
212
178
 
213
- | Operation | Description | Max Results |
214
- |-----------|-------------|-------------|
215
- | **Web Search** | General web content search | 1-50 |
216
- | **Image Search** | Image and visual content discovery | 1-50 |
217
- | **News Search** | News articles and current events | 1-50 |
218
- | **Video Search** | Video content from various platforms | 1-50 |
219
-
220
- ### Common Parameters
221
-
222
- | Parameter | Type | Description | Default |
223
- |-----------|------|-------------|---------|
224
- | `query` | string | Search terms | Required |
225
- | `maxResults` | number | Number of results to return | 10 |
226
- | `region` | string | Language/region code (us-en, de-de, etc.) | us-en |
227
- | `safeSearch` | number | Safe search level (0=off, 1=moderate, 2=strict) | 1 |
228
-
229
- ### Advanced Options
230
-
231
- #### Web Search Options
232
- - **timePeriod**: Filter by time range (d, w, m, y)
233
- - **searchOperators**: Use advanced search operators
234
- - **useSearchOperators**: Enable operator parsing
235
-
236
- #### Image Search Options
237
- - **size**: Image size (small, medium, large, wallpaper)
238
- - **color**: Color filter (color, monochrome, red, orange, etc.)
239
- - **type**: Image type (photo, clipart, gif, transparent)
240
- - **layout**: Image layout (square, tall, wide)
241
-
242
- #### News Search Options
243
- - **timePeriod**: Time range for news (d, w, m, y)
244
- - **sortBy**: Sort order (date, relevance)
245
-
246
- #### Video Search Options
247
- - **duration**: Video length (short, medium, long)
248
- - **resolution**: Video quality (high, standard)
249
- - **publishedTime**: When published (d, w, m, y)
250
-
251
- ## 🔍 Advanced Search Operators
252
-
253
- Use powerful search operators to refine your results:
254
-
255
- | Operator | Example | Description |
256
- |----------|---------|-------------|
257
- | `site:` | `site:github.com` | Search within specific site |
258
- | `filetype:` | `filetype:pdf` | Find specific file types |
259
- | `intitle:` | `intitle:"machine learning"` | Search in page titles |
260
- | `inurl:` | `inurl:tutorial` | Search in URLs |
261
- | `"exact phrase"` | `"artificial intelligence"` | Exact phrase matching |
262
- | `-exclude` | `python -snake` | Exclude specific terms |
263
- | `OR` | `cat OR dog` | Either term |
264
-
265
- **Example with operators:**
266
- ```json
267
- {
268
- "query": "site:github.com filetype:md machine learning",
269
- "useSearchOperators": true
270
- }
271
- ```
179
+ | Operation | Description | Supported Parameters |
180
+ |-----------|-------------|---------------------|
181
+ | **Web Search** | General web content search | All parameters |
182
+ | **Image Search** | Image and visual content discovery | All except Time Period |
183
+ | **News Search** | News articles and current events | All parameters |
184
+ | **Video Search** | Video content from various platforms | All except Time Period |
272
185
 
273
186
  ## 🌍 Supported Languages & Regions
274
187
 
275
- The node supports 50+ language and region combinations:
276
-
277
- - **English**: us-en, uk-en, au-en, ca-en, etc.
278
- - **Spanish**: es-es, mx-es, ar-es, etc.
279
- - **French**: fr-fr, ca-fr, ch-fr
280
- - **German**: de-de, at-de, ch-de
281
- - **And many more**: ja-jp, zh-cn, ru-ru, pt-br, it-it, nl-nl, etc.
188
+ The node supports 18 locale options:
189
+
190
+ - **English**: en-us, uk-en
191
+ - **Spanish**: es-es
192
+ - **French**: fr-fr
193
+ - **German**: de-de
194
+ - **Italian**: it-it
195
+ - **Japanese**: jp-jp
196
+ - **Russian**: ru-ru
197
+ - **Chinese**: zh-cn
198
+ - **Portuguese**: br-pt
199
+ - **Dutch**: nl-nl
200
+ - **Polish**: pl-pl
201
+ - **Swedish**: se-sv
202
+ - **Korean**: kr-ko
203
+ - **Turkish**: tr-tr
204
+ - **Arabic**: sa-ar
205
+ - **Hebrew**: il-he
206
+ - **Persian**: ir-fa
207
+
208
+ Region options include 56 geographic regions from worldwide to country-specific.
282
209
 
283
210
  ## 💡 Use Cases
284
211
 
@@ -291,8 +218,8 @@ The node supports 50+ language and region combinations:
291
218
  ### Data Analysis
292
219
  - Gather web content for analysis
293
220
  - Build datasets from search results
294
- - Monitor brand mentions and sentiment
295
- - Track competitor content strategies
221
+ - Monitor brand mentions
222
+ - Track competitor content
296
223
 
297
224
  ### Research & Development
298
225
  - Academic research and literature review
@@ -306,42 +233,8 @@ The node supports 50+ language and region combinations:
306
233
  - Image collection for projects
307
234
  - SEO research and optimization
308
235
 
309
- ## 🛠️ Workflow Integration
310
-
311
- ### Input Parameters
312
- All search operations accept standardized input parameters that can be:
313
- - **Hard-coded** in the node configuration
314
- - **Passed dynamically** from previous workflow steps
315
- - **Combined** with expressions and variables
316
-
317
- ### Output Structure
318
- Results are returned as structured JSON arrays with consistent formatting:
319
- - **Standardized fields** across all search types
320
- - **Rich metadata** for comprehensive analysis
321
- - **Clean, parsed content** ready for further processing
322
-
323
- ### Error Handling
324
- Robust error handling provides:
325
- - **Descriptive error messages** for troubleshooting
326
- - **Graceful failure handling** to prevent workflow breaks
327
- - **Retry mechanisms** for temporary issues
328
- - **Input validation** to catch configuration errors
329
-
330
236
  ## 📊 Performance & Limits
331
237
 
332
- ### Advanced Reliability (v31.0.0)
333
- - **Adaptive Backoff**: Automatic delay adjustment based on response patterns
334
- - **Circuit Breaker**: Prevents cascading failures with automatic recovery
335
- - **Jittered Delays**: Randomized timing prevents thundering herd
336
- - **Retry Logic**: Exponential backoff with configurable attempts
337
- - **Metrics Tracking**: Real-time monitoring of performance and failures
338
-
339
- ### Rate Limiting
340
- - **Built-in protection** against overuse
341
- - **Intelligent delay mechanisms** between requests
342
- - **Configurable retry logic** for failed requests
343
- - **Circuit breaking** for automatic failure handling
344
-
345
238
  ### Result Limits
346
239
  - **Web Search**: Up to 50 results per request
347
240
  - **Image Search**: Up to 50 images per request
@@ -351,10 +244,8 @@ Robust error handling provides:
351
244
  ### Performance Tips
352
245
  - Use **specific queries** for better, faster results
353
246
  - Set **appropriate result limits** for your use case
354
- - Leverage **caching** for repeated searches
355
- - Use **search operators** to narrow results efficiently
356
- - Enable **reliability features** for production workloads
357
- - Monitor **circuit breaker state** in high-volume scenarios
247
+ - Leverage **region settings** for localized results
248
+ - Use **time period filters** to narrow results
358
249
 
359
250
  ## 🔒 Privacy & Security
360
251
 
@@ -362,7 +253,6 @@ Robust error handling provides:
362
253
  - **No user tracking** or data collection
363
254
  - **No API keys required** - completely free
364
255
  - **Direct DuckDuckGo integration** without third-party services
365
- - **Secure HTTP client** configuration
366
256
 
367
257
  ### Data Handling
368
258
  - **Minimal data retention** - results processed and returned immediately
@@ -383,13 +273,11 @@ Robust error handling provides:
383
273
  - Reduce the number of results requested
384
274
  - Use more specific search queries
385
275
  - Check your network connection
386
- - Consider using search operators to narrow results
387
276
 
388
277
  **Configuration Errors**
389
278
  - Verify all required parameters are provided
390
279
  - Check parameter data types and formats
391
280
  - Ensure region codes are valid
392
- - Validate search operator syntax
393
281
 
394
282
  ## 📚 API Reference
395
283
 
@@ -397,13 +285,14 @@ Robust error handling provides:
397
285
 
398
286
  #### Required Parameters
399
287
  - `operation`: The search operation to perform
400
- - `query`: The search terms (varies by operation type)
288
+ - `query`: The search terms
401
289
 
402
290
  #### Optional Parameters
403
- - `maxResults`: Number of results to return (1-50)
404
- - `region`: Language/region code
405
- - `safeSearch`: Safe search filtering level
406
- - Additional operation-specific options
291
+ - `locale`: Language/region code (default: en-us)
292
+ - `maxResults`: Number of results to return 1-50 (default: 10)
293
+ - `region`: Geographic region (default: wt-wt)
294
+ - `safeSearch`: Safe search filtering level (default: -1)
295
+ - `timePeriod`: Time range for results (default: '')
407
296
 
408
297
  ### Output Format
409
298