Search anywhere.
In your language.

Pick your SDK. Choose your provider.
Keep the sources and every attempt.

From your server
to their screen.

Twelve SDKs. One shared search contract.
Alpha packages, available from source.

Compare support

On your server

Normalized search and provider-native APIs.

In your app

Your HTTPS gateway. Your provider keys stay server-side.

Your language.
The same source trail.

Choose a starter for your SDK.
Run the TypeScript fixture to see explicit fallback.

How fallback works
The route in this demoDeterministic fixtures
  1. Your queryOne search request
  2. PrimaryMock rate limit
  3. FallbackMock source returned
  4. The responseSource + attempt trail
import { createSearch } from '@belweave/search-sdk';import { context } from '@belweave/search-sdk/context';import { tinyfish } from '@belweave/search-sdk/tinyfish'; const { web } = createSearch({  provider: context({ apiKey: process.env.CONTEXT_API_KEY! }),  fallback: [tinyfish({ apiKey: process.env.TINYFISH_API_KEY! })],  timeoutMs: 10_000,  attemptTimeoutMs: 4_000,}); const response = await web.search({  query: 'SQLite write concurrency',  limit: 3,});

Server-side example. Supply your own provider credentials. Install TypeScript / JavaScript

TypeScript fixture · no key

See what happens
when a provider says no.

Run the SDK with mock providers. The first returns a rate limit; the fallback returns a source.

Your sources. Your choice.

14 web-search adapters, plus provider-native APIs.
WonderSearch connects your own document corpus.

Compare providers