npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ddg-rs

v0.3.1

Published

A fast, privacy-respecting Node.js library for DuckDuckGo searches, powered by Rust.

Readme

🦆 Duckduckgo

DDG

Crates.io Docs.rs npm PyPI MIT License

duckduckgo is a multi-language toolkit for searching DuckDuckGo from code or the command line. The core is written entirely in Rust and compiled to a native extension, so Python and Node.js callers enjoy the same performance and correctness guarantees as the Rust library, with no runtime dependencies beyond the native extension itself 🗿.

| 🐧 Linux (Recommended) | 🪟 Windows | 🐳 Docker | 📦 Linux Distros | | :------: | :--------: | :--------: | :--------: | | ddg-tui-linux | ddg-tui-windows | ddg-tui-linux | ddg-tui-linux | | Download ddg binary | Download ddg.exe binary | docker pull wiseaidev/ddg | apt install ddg-rs (TODO: Publish)| | cargo install duckduckgo --features rust-binary | cargo install duckduckgo --features rust-binary | docker run -it wiseaidev/ddg | dnf install ddg-rs (TODO: Publish)| | ddg ← launches TUI | ddg ← launches TUI | Read DOCKER.md | Read PACKAGING.md |

🤔 What does this crate provide?

The library exposes 4 search backends:

  • Instant Answer: the official api.duckduckgo.com JSON endpoint, which returns structured data including abstracts, definitions, direct answers, and related topics.
  • Lite: the minimal lite.duckduckgo.com HTML interface, which returns plain text results without JavaScript.
  • Images: paginated image results via duckduckgo.com/i.js.
  • News: paginated news articles via duckduckgo.com/news.js.

A comprehensive SearchParams builder covers every documented DuckDuckGo URL parameter: region, safe-search, theme, colours, fonts, header behaviour, and more.

🦀 Rust

The Rust crate is available on crates.io. For a complete API reference, installation guide, and worked examples, visit the Rust Usage Guide.

The crate ships the following Cargo features:

| Feature | Description | | ------------- | ---------------------------------------------------- | | rust-binary | Enables the standalone ddg terminal CLI executable | | python | Python extension module via pyo3 | | node | Node.js native add-on via napi-derive |

🌐 WebAssembly (WASM)

duckduckgo natively supports the wasm32-unknown-unknown target! Because it uses reqwest under the hood, it seamlessly switches to the fetch API when deployed in the browser.

This makes it perfect for client-side search inside Rust frontend frameworks like Yew, Dioxus, and Leptos. We actively use this technique in the llm/examples/chat application.

For CORS considerations, code examples, and usage details, read the WASM usage guide.

🐍 Python

The Python bindings are published to PyPI as ddg-rs and can be installed with pip install ddg-rs. The package is built with maturin and ships pre-compiled wheels for the major CPython versions.

The Python module exposes the Browser, SearchParams, LiteSearchResult, ImageResult, and NewsResult types. All network methods are synchronous - they drive an embedded Tokio runtime so callers do not need an event loop.

For installation instructions, configuration options, and full method signatures, read the Python usage guide.

🟩 Node.js

The Node.js bindings are published to npm as ddg-rs and can be installed with npm install ddg-rs. The package is built with napi-rs and ships a pre-compiled .node add-on.

The module exposes the Browser class, SearchParams builder, and plain object result types (LiteSearchResult, ImageResult, NewsResult, InstantAnswerResponse). Like the Python API, all network calls are synchronous within the binding.

For installation instructions, type definitions, and examples, read the Node.js usage guide.

💻 Command-line interface

The ddg binary supports full-text, image, news, and Instant Answer searches directly from the terminal. It accepts a rich set of options including user-agent selection, cookie storage, HTTP proxy support, safe-search, and a choice of result backends.

For the full option reference and usage examples, see the CLI documentation or run ddg --help after installing with cargo install duckduckgo --features rust-binary.

🐳 Docker Deployment

duckduckgo is completely containerized and includes the CLI and TUI pre-installed.

For instructions on pulling the container and usage, refer to the Docker usage guide.

📦 Linux Distros Packaging (TODO)

For system-wide installations that rely on native package managers, the project includes .deb and .rpm packaging pipelines. This enables installation via apt (Debian/Ubuntu/Kali) and dnf (RedHat/Fedora).

For packaging instructions and build flows, refer to the Linux Packaging guide.

🔒 Privacy

DuckDuckGo does not track users or personalise results. This library makes direct HTTPS requests to the same public endpoints that the browser does. No API key, account, or authentication token is required.

For more information about DuckDuckGo's privacy practices, visit duckduckgo.com/privacy.

📚 Further reading

📄 License

Licensed under the MIT License.

⭐ Star us

If you use or enjoy this toolkit, please leave us a star on GitHub! It helps others discover the project and keeps the momentum going and the coffee flowing ☕.

Star History Chart