Changes for version 0.003 - 2026-09-19

  • Google CSE provider now pages over `start` to satisfy `limit > 10` (searches previously returned at most 10 Google results regardless of `limit`); merges pages of 10 up to CSE's 100-result ceiling and trims the last page to the exact limit
  • New provider Net::Async::WebSearch::Provider::Tavily — Tavily Search API (POST/JSON, Bearer key, free tier); honors language/region
  • New provider Net::Async::WebSearch::Provider::Exa — Exa neural search API (POST/JSON, x-api-key, free tier); requests page text so results carry snippets
  • New provider Net::Async::WebSearch::Provider::Marginalia — Marginalia independent English-only index (GET/JSON; `public` key, or a free key by e-mail); results are CC-BY-NC-SA licensed
  • New provider Net::Async::WebSearch::Provider::Mojeek — Mojeek independent index (GET/JSON, api_key query param, fmt=json); commercial API key required

Modules

IO::Async multi-provider web search aggregator
Base class for Net::Async::WebSearch providers
Brave Search API provider
DuckDuckGo HTML endpoint provider (keyless)
Exa neural search API provider
Google Programmable Search (CSE) JSON API provider
Marginalia Search API provider
Mojeek Search API provider
Reddit search provider (keyless JSON endpoint)
Reddit search provider using the OAuth2 endpoint
SearxNG/Searx JSON endpoint provider
Serper.dev Google Search API provider
Tavily Search API provider
Yandex Search API (XML) provider
Single web search result record