Show HN: Qry – CLI web search that always outputs JSON, with swappable back ends
justEstif Sunday, March 08, 2026I wanted web search I could pipe. Every tool I found either had an interactive UI (ddgr, googler), required a single paid API, or returned HTML. I wanted something that composes: pipe to jq, feed to an agent, use in scripts, no friction.
So I built qry. It's a hub binary that routes queries to adapter binaries via stdin/stdout JSON. The hub knows nothing about search engines. Adapters know nothing about routing. You swap adapters in a config file.
Four adapters today, three require no API key:
- DDG Lite scraping
- Brave Search HTML scraping
- Exa AI via the public MCP endpoint
- Brave Search API (requires key)
``` $ qry "numpy latest version"
[{"title":"...","url":"...","snippet":"..."}]
```
Install:
```
mise use -g go:github.com/justestif/qry@latest
mise use -g go:github.com/justestif/qry/adapters/qry-adapter-ddg-scrape@latest
mise reshim ```
The adapter protocol is plain stdin/stdout JSON so adapters can be written in any language. Docs on building one are in the repo.
https://github.com/justEstif/qry