Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔍 Easy Search

A visual DuckDuckGo query builder built with Streamlit — designed for data professionals. Compose advanced search queries by combining operators, run them across multiple sources, compare results side by side, and export everything to CSV or JSON.

Python Streamlit License


✨ Features

Feature Description
🛠️ Visual query builder Add operator blocks from the sidebar, reorder with ↑ ↓ arrows, edit values
🎯 Query templates Pre-built stacks for datasets, papers, GitHub repos, API docs, tutorials, and files
💾 Saved queries Name and save any operator stack, reload it later in one click
⚖️ Side-by-side compare Build two independent queries and compare results in two columns
🌐 Batch search Run one query across up to 10 data/research sites simultaneously
📚 Search history Last 50 searches auto-saved with timestamp and result count; reload any past query
⬇️ Export Download results as CSV or JSON per query or per batch site
🔎 Domain filter Filter result cards by domain without re-searching
♻️ Deduplicate Strip duplicate URLs from result sets
🕐 Date range filter Restrict results to past day / week / month / year
🌍 Region filter Target results by country/language

🧩 Supported Operators

Operator Example Description
🔍 Keyword python tutorial Plain search term
🌐 site: site:github.com Restrict to a domain
💬 "Exact phrase" "open source software" Words must appear together
🚫 -Exclude -spam Remove results with this word
+Include +free Force-include a word
📄 filetype: filetype:pdf Match a specific file type
🔤 intitle: intitle:login Word must be in the page title
🔗 inurl: inurl:admin Word must be in the URL
🔄 related: related:nytimes.com Find similar websites
OR cat OR dog Match either term
🌟 * Wildcard "how to * python" Wildcard inside a quoted phrase

🎯 Query Templates

Templates load a pre-built operator stack. Fill in the keyword block and search immediately.

Template Searches on
📊 Find Dataset Kaggle, Hugging Face, data.gov
📄 Find Research Paper arXiv, Papers With Code
💻 Find GitHub Repo GitHub
📁 Find CSV / Excel File Any site, filetype:csv or xlsx
📖 Find API Docs Pages with "API" or "documentation" in title
🎓 Find Tutorial Pages with "tutorial" in title, excluding paid

🌐 Batch Search Sites

Site Domain
🤗 Hugging Face huggingface.co
📊 Kaggle kaggle.com
📄 Papers With Code paperswithcode.com
🔬 arXiv arxiv.org
💻 GitHub github.com
🏛️ data.gov data.gov
🌐 UCI ML Repo archive.ics.uci.edu
🔷 Stack Overflow stackoverflow.com
📰 Medium medium.com
📝 Towards Data Science towardsdatascience.com

🌍 Supported Regions

Label Code
🌍 Worldwide wt-wt
🇺🇸 USA us-en
🇬🇧 UK uk-en
🇩🇪 Germany de-de
🇫🇷 France fr-fr
🇯🇵 Japan jp-ja
🇧🇷 Brazil br-pt
🇮🇳 India in-en
🇦🇺 Australia au-en
🇨🇦 Canada ca-en

🚀 Getting Started

Prerequisites

  • Python 3.10+
  • uv (recommended) — or any virtual environment tool

Installation

git clone https://github.com/49mg/easy-search.git
cd easy-search

# Install dependencies with uv
uv sync

Or with pip:

python -m venv .venv
source .venv/bin/activate
pip install streamlit ddgs duckduckgo-search

Run

uv run streamlit run app.py

Then open http://localhost:8501 in your browser.


🖥️ Usage

Sidebar

The sidebar has five collapsible sections — all visible at once:

Section Default Purpose
➕ Add Operators Open Click Add next to any operator to add it to the Builder
🎯 Query Templates Collapsed One-click pre-built operator stacks
⚙️ Search Filters Collapsed Date range, region, deduplicate toggle
💾 Saved Queries Collapsed Save/load named operator stacks
📖 Operator Reference Collapsed Description, example, and tip for every operator

Builder tab

  1. Add operators from the sidebar ➕ section, or open 🎯 Templates and load a full stack
  2. Edit values — fill in the input field on each operator card
  3. Reorder — use ↑ ↓ arrows to change operator positions
  4. Set filters — open ⚙️ Search Filters to set date range, region, and deduplication
  5. Search — adjust the max results slider (1–30), then click Search
  6. Copy query — the Query Preview box has a built-in copy button in its top-right corner
  7. Export results as CSV or JSON with the download buttons above the result cards
    — Both formats contain three columns/fields: title, url, snippet
  8. Filter by domain — type a domain (e.g. github.com) to narrow displayed results without re-searching

Compare tab

  • Build Query A and Query B independently in two columns
  • Each side has its own template loader, operator picker, full builder, and results with export

Batch Search tab

  • Enter a base query (e.g. sentiment analysis dataset)
  • Select one or more target sites from the multiselect
  • Set Results per site (1–10) with the slider
  • Click Run Batch Search — searches run concurrently (up to 5 in parallel) and results are grouped by site
  • Export each site's results individually as CSV or JSON

History tab

  • Every search from the Builder tab is automatically saved (last 50)
  • Click Reload to restore any past query's blocks back into the Builder
  • Click 🗑️ to delete individual entries, or Clear history to wipe all

📁 Project Structure

easy-search/
├── app.py          # Streamlit UI — all features
├── pyproject.toml  # Project metadata and dependencies
├── uv.lock         # Locked dependency versions
└── README.md

🛠️ Tech Stack

Package Role
Streamlit Web UI framework
ddgs DuckDuckGo search API

📄 License

MIT — see LICENSE for details.

About

Visual DuckDuckGo query builder built with Streamlit. Combine search operators with a block editor, use data-focused templates, batch search across Kaggle/arXiv/GitHub/HuggingFace, compare two queries side by side, and export results as CSV or JSON.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages