Search the web using DuckDuckGo's API to find information across web pages, news articles, images, and videos. Returns results in multiple formats (text, markdown, JSON) with filtering options for time range, region, and safe search.
Use this skill when users request:
Install the required dependency:
bash
pip install duckduckgo-search
This library provides a simple Python interface to DuckDuckGo's search API without requiring API keys or authentication.
Search for web pages and information:
bash
python scripts/search.py "<query>"
Example:
bash
python scripts/search.py "python asyncio tutorial"
Returns the top 10 web results with titles, URLs, and descriptions in a clean text format.
Control the number of results returned:
bash
python scripts/search.py "<query>" --max-results <N>
Example:
bash
python scripts/search.py "machine learning frameworks" --max-results 20
Useful for:
Filter results by recency:
bash
python scripts/search.py "<query>" --time-range <d|w|m|y>
Time range options:
d - Past dayw - Past weekm - Past monthy - Past yearExample:
bash
python scripts/search.py "artificial intelligence news" --time-range w
Great for:
Search specifically for news articles:
bash
python scripts/search.py "<query>" --type news
Example:
bash
python scripts/search.py "climate change" --type news --time-range w --max-results 15
News results include:
Search for images:
bash
python scripts/search.py "<query>" --type images
Example:
bash
python scripts/search.py "sunset over mountains" --type images --max-results 20
Image filtering options:
Size filters:
bash
python scripts/search.py "landscape photos" --type images --image-size Large
Options: Small, Medium, Large, Wallpaper
Color filters:
bash
python scripts/search.py "abstract art" --type images --image-color Blue
Options: color, Monochrome, Red, Orange, Yellow, Green, Blue, Purple, Pink, Brown, Black, Gray, Teal, White
Type filters:
bash
python scripts/search.py "icons" --type images --image-type transparent
Options: photo, clipart, gif, transparent, line
Layout filters:
bash
python scripts/search.py "wallpapers" --type images --image-layout Wide
Options: Square, Tall, Wide
Image results include:
Search for videos:
bash
python scripts/search.py "<query>" --type videos
Example:
bash
python scripts/search.py "python tutorial" --type videos --max-results 15
Video filtering options:
Duration filters:
bash
python scripts/search.py "cooking recipes" --type videos --video-duration short
Options: short, medium, long
Resolution filters:
bash
python scripts/search.py "documentary" --type videos --video-resolution high
Options: high, standard
Video results include:
Search with region-specific results:
bash
python scripts/search.py "<query>" --region <region-code>
Common region codes:
us-en - United States (English)uk-en - United Kingdom (English)ca-en - Canada (English)au-en - Australia (English)de-de - Germany (German)fr-fr - France (French)wt-wt - Worldwide (default)Example:
bash
python scripts/search.py "local news" --region us-en --type news
Control safe search filtering:
bash
python scripts/search.py "<query>" --safe-search <on|moderate|off>
Options:
on - Strict filteringmoderate - Balanced filtering (default)off - No filteringExample:
bash
python scripts/search.py "medical information" --safe-search on
Choose how results are formatted:
Text format (default):
bash
python scripts/search.py "quantum computing"
Clean, readable plain text with numbered results.
Markdown format:
bash
python scripts/search.py "quantum computing" --format markdown
Formatted markdown with headers, bold text, and links.
JSON format:
bash
python scripts/search.py "quantum computing" --format json
Structured JSON data for programmatic processing.
Save search results to a file:
bash
python scripts/search.py "<query>" --output <file-path>
Example:
bash
python scripts/search.py "artificial intelligence" --output ai_results.txt
python scripts/search.py "AI news" --type news --format markdown --output ai_news.md
python scripts/search.py "AI research" --format json --output ai_data.json
The file format is determined by the --format flag, not the file extension.
text
1. Page Title Here
URL: https://example.com/page
Brief description of the page content...
2. Another Result
URL: https://example.com/another
Another description...
markdown
## 1. Page Title Here
**URL:** https://example.com/page
Brief description of the page content...
## 2. Another Result
**URL:** https://example.com/another
Another description...
json
[
{
"title": "Page Title Here",
"href": "https://example.com/page",
"body": "Brief description of the page content..."
},
{
"title": "Another Result",
"href": "https://example.com/another",
"body": "Another description..."
}
]
Gather comprehensive information about a subject:
bash
# Get overview from web
python scripts/search.py "machine learning basics" --max-results 15 --output ml_web.txt
# Get recent news
python scripts/search.py "machine learning" --type news --time-range m --output ml_news.txt
# Find tutorial videos
python scripts/search.py "machine learning tutorial" --type videos --max-results 10 --output ml_videos.txt
Track news on specific topics:
bash
python scripts/search.py "climate summit" --type news --time-range d --format markdown --output daily_climate_news.md
Search for images with specific criteria:
bash
python scripts/search.py "data visualization examples" --type images --image-type photo --image-size Large --max-results 25 --output viz_images.txt
Verify information with recent sources:
bash
python scripts/search.py "specific claim to verify" --time-range w --max-results 20
Find resources on scholarly topics:
bash
python scripts/search.py "quantum entanglement research" --time-range y --max-results 30 --output quantum_research.txt
Gather information about products or companies:
bash
python scripts/search.py "electric vehicle market 2025" --max-results 20 --format markdown --output ev_market.md
python scripts/search.py "EV news" --type news --time-range m --output ev_news.txt
When users request web searches:
--type)--time-range)--max-results)Command structure:
bash
python scripts/search.py "<query>" [options]
Essential options:
-t, --type - Search type (web, news, images, videos)-n, --max-results - Maximum results (default: 10)--time-range - Time filter (d, w, m, y)-r, --region - Region code (e.g., us-en, uk-en)--safe-search - Safe search level (on, moderate, off)-f, --format - Output format (text, markdown, json)-o, --output - Save to fileImage-specific options:
--image-size - Size filter (Small, Medium, Large, Wallpaper)--image-color - Color filter--image-type - Type filter (photo, clipart, gif, transparent, line)--image-layout - Layout filter (Square, Tall, Wide)Video-specific options:
--video-duration - Duration filter (short, medium, long)--video-resolution - Resolution filter (high, standard)Get full help:
bash
python scripts/search.py --help
--time-range for current information--output to preserve resultsCommon issues:
pip install duckduckgo-searchLimitations:
Gather comprehensive information by combining search types:
bash
# Web overview
python scripts/search.py "topic" --max-results 15 --output topic_web.txt
# Recent news
python scripts/search.py "topic" --type news --time-range w --output topic_news.txt
# Images
python scripts/search.py "topic" --type images --max-results 20 --output topic_images.txt
Use JSON output for automated processing:
bash
python scripts/search.py "research topic" --format json --output results.json
# Then process with another script
python analyze_results.py results.json
Create searchable documentation from web results:
bash
# Search multiple related topics
python scripts/search.py "topic1" --format markdown --output kb/topic1.md
python scripts/search.py "topic2" --format markdown --output kb/topic2.md
python scripts/search.py "topic3" --format markdown --output kb/topic3.md
The main search tool implementing DuckDuckGo search functionality. Key features:
The script can be executed directly and includes comprehensive command-line help via --help.