> ## Documentation Index
> Fetch the complete documentation index at: https://docs.webrouter.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> An open source standard that connects your agent to the internet.

![The WebRouter router mascot, an orange cable plugged into its search port](https://mintcdn.com/webrouter/nSto_khDpXPdU0h5/assets/webrouter-mascot.png?fit=max\&auto=format\&n=nSto_khDpXPdU0h5\&q=85\&s=6347b02eeffe00d30c20821a3649bb60)

WebRouter connects your agent to the internet's primitives (search, extract, answer, research and browser sessions) through one interface, across many providers.

* **No vendor lock-in.** The same call and result shape on every provider that serves a method; switching is one argument. Apache 2.0, and you hold your own keys.
* **Routing and fallback.** `auto` tries the providers you hold keys for, best benchmarked first, and falls back to the next. An experimental [router](https://github.com/Nimbleway/webrouter/blob/main/README.md#smart-routing-experimental) can pick the tool and provider for each task within a cost and time budget.
* **Many providers.** Tavily, Exa, Brave, Firecrawl, Nimble and more: see [Providers](https://docs.webrouter.net/providers.md).
* **Security by default.** WebRouter never logs or stores your keys, and sends each key only to its own provider. An option a provider cannot honour raises instead of being dropped.

```bash theme={null}
pip install "webrouter[all]"
```

```python quickstart.py theme={null}
from web_router import Provider, WebRouter

WebRouter().search("what is retrieval augmented generation")  # no key needed
WebRouter(Provider.TAVILY).search("...")  # same call, same result shape
WebRouter().extract("https://example.com")  # page contents, also keyless
```

## Get started

> [card] [Quickstart](https://docs.webrouter.net/quickstart.md)
>
> Install, then your first search and extract, with no key.

> [card] [How it works](https://docs.webrouter.net/how-it-works.md)
>
> One call shape, normalized results, nothing dropped.

> [card] [Providers](https://docs.webrouter.net/providers.md)
>
> Which provider serves which method, and its key.

## Methods

> [card] [Search](https://docs.webrouter.net/search.md)
>
> Web results from any search provider.

> [card] [Extract](https://docs.webrouter.net/extract.md)
>
> Page contents for URLs you already have.

> [card] [Answer](https://docs.webrouter.net/answer.md)
>
> A written answer with its sources.

> [card] [Research](https://docs.webrouter.net/research.md)
>
> An agentic run that reasons over several turns.

> [card] [Browser](https://docs.webrouter.net/browser.md)
>
> Drive a browser session, or hand a task to an agent.

## Get help

* [Discord](https://discord.gg/MGztFWSjZh): questions in #help, chatting with other builders and the maintainers, and showing what you built in #showcase.
* [GitHub Issues](https://github.com/Nimbleway/webrouter/issues): bugs and gaps in a provider's support.
* [GitHub Discussions](https://github.com/Nimbleway/webrouter/discussions): proposals and design ideas.
* [SECURITY.md](https://github.com/Nimbleway/webrouter/blob/main/SECURITY.md): vulnerabilities. Never in a public channel.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.