Skip to main content
This page takes you from install to a working search and extract in four steps. No key is needed to start: the default provider uses the backends that offer an anonymous tier.
1

Install

The package is webrouter; the import name is web_router. Put the keys you hold in your environment or a .env file; none is required. .env.example names each variable.
2

Search with no key

quickstart.py
Run with no keys set. Results and the answering provider vary from run to run.
3

Read the pages you found

4

Name a provider

Once you have a key for one, name it. Provider is an enum of the built-in backends, so your editor completes it and a typo is caught where you type it.
A backend that does not map an option you set, such as country, raises UnsupportedParameterError rather than quietly running the search unfiltered. See Providers for which keys unlock which backends.

Install options

You can install fewer extras by naming them in place of all. Extras are named after the methods you call, not the backends behind them: search brings in every provider that can serve one, so choosing between them stays a runtime decision. open_browser needs no Playwright: a vendor session opens over httpx, which [all] installs, and local needs only the standard library and a Chrome or Chromium.
For contributors or to track main: the one prerequisite is uv, which fetches the right Python itself.
Using a coding agent? Tell it “clone https://github.com/Nimbleway/webrouter and set it up”. CLAUDE.md walks it through the rest. To use the clone from another project, install it in editable mode (uv add --editable "/path/to/webrouter[all]" or pip install -e "/path/to/webrouter[all]"), so git pull && make setup in the clone is the whole update.

Runnable examples

examples/ has a script per topic (routing, every error and its fix, depth measured across backends, adding your own provider), and most need no credentials, routing through the keyless backends; browser_session.py drives a local Chromium with none. main.py is a guided tour of search and extract in one file: