Tavily is the default answer to “how do I give my agent web search?” It has a clean API, good retrieval quality, and a free tier. But it also has a separate account, a separate API key, and a separate dollar-denominated bill.
The friction is not the dollar part. It is the second of everything: a second signup, a second key, a second dashboard, a second line on your statement. This post compares the realistic alternatives — what they replace, how they bill, and where each one fits.
Note on terminology: this post talks about paying in cryptocurrency. The supported option today is Bitcoin (BTC) on the network shown in your dashboard. There is no minimum top-up. Other coins may be added later; check the dashboard for the current list.
The Tavily pattern
A typical Tavily integration looks like this:
import os
from tavily import TavilyClient
tavily = TavilyClient(api_key=os.getenv("TAVILY_API_KEY"))
results = tavily.search(
query="What changed in EU AI regulation this week?",
search_depth="advanced"
)
# Then you manually stuff results into the model prompt...
That works. But it means:
- A Tavily account and API key
- A dollar balance or subscription
- Manual prompt construction on every request
- A second usage dashboard to monitor
If your model provider also bills in dollars, you now have two card charges and two rate limits to manage.
The alternatives
| Alternative | What it replaces | How billing works | Best fit |
|---|---|---|---|
| Gateway with built-in search | Tavily + model provider | One balance, Bitcoin or card | Teams already on OpenAI SDK |
| Self-hosted search (SearXNG, etc.) | Tavily only | Your own infra cost | Maximum control, high maintenance |
| Bing / Google Search API | Tavily | Card, provider billing | Enterprise with existing cloud accounts |
| Perplexity API | Tavily + model | Card, per request | Want an answer, not raw search results |
The rest of this post focuses on the first option, because it is the one that changes the billing model.
Gateway with built-in search
Instead of calling Tavily and then a model, you call one endpoint that does both:
from openai import OpenAI
# Same OpenAI SDK — no Tavily import, no second key
client = OpenAI(
api_key="your-easyrouterai-key",
base_url="https://easyrouterai.com/v1"
)
# Search happens automatically; results are global, not China-centric
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "What changed in EU AI regulation this week?"}]
)
print(response.choices[0].message.content)
What changed compared to Tavily:
| Tavily + model | Gateway with built-in search | |
|---|---|---|
| API keys | 2 (Tavily + model) | 1 |
| Billing | 2 balances | 1 balance |
| Payment methods | Card | Cryptocurrency (Bitcoin) or card |
| Search setup | Client + manual prompt | None — automatic |
| Search source | Your Tavily index | Global open web (advanced retrieval) |
| Model choice | Any model you wire up | Multiple open weights, one endpoint |
When to keep Tavily
Be fair to Tavily: it is the right choice in some cases.
- You need structured search results (title, URL, score) as JSON — not a prose answer
- You build a search UI (cards, result lists, snippets) where the model is not involved
- You need fine-grained control over query parameters, result count, domain filtering
- You already have a Tavily subscription and the seat cost is negligible
In those cases, Tavily is a search API. A gateway with built-in search is not trying to replace that.
When the alternative is simpler
- Your product calls a model and wants web-grounded answers — not raw result lists
- You want one balance, paid in Bitcoin
- You want to swap models (DeepSeek, Qwen, GLM, Kimi) without rewiring search
- You serve users outside China and need global web sources, not a China-indexed search
- You do not want to maintain an agent loop that calls search, then builds a prompt, then calls the model
The test is simple: if your code has both tavily.search() and client.chat.completions.create() in the same function, the gateway version replaces both.
What you give up
Be explicit about the trade-off:
- No structured citations. The model returns sources embedded in prose, not a JSON array of URLs
- No per-result scoring. You cannot sort or filter search hits before the model sees them
- No raw result list. If you need to display “10 search results” to the user, use a search API
- Search is always on. There is no flag to disable it per request
These are the same constraints as the rest of the “built-in search” design — they follow from search being automatic rather than manual.
Crypto billing: what it changes
The practical difference is the checkout and the number of invoices:
| Tavily + OpenAI-compatible model | Gateway alternative | |
|---|---|---|
| Accounts | 2 | 1 |
| KYC / card | Usually required | Not required for Bitcoin tier |
| Top-up | Dollars | Bitcoin |
| Monthly items | Model bill + Tavily bill | One credit balance |
For a team holding Bitcoin, that is the entire reason to switch.
FAQ
Is this a Tavily replacement in every case?
No. This is not a statement that Tavily is bad — it is a statement that you do not need a second account and a second bill. Under the hood, the gateway uses advanced retrieval (the same Tavily-powered search) over the global open web. What changes is the billing: one endpoint, one balance, paid in cryptocurrency. If you need structured search results as JSON to build a search UI, keep Tavily as a standalone search API.
Do I still need a Tavily API key?
No. You do not sign up for Tavily, do not manage a Tavily key, and do not monitor a Tavily dashboard. The gateway handles retrieval internally. Your code has one api_key field.
Which cryptocurrencies are supported?
Payments are in cryptocurrency. The supported option today is Bitcoin (BTC) on the network shown in your dashboard; no minimum top-up is required. Check the dashboard for the current list as more options are added.
Can I disable search and call the model raw?
No. Search is always on by design. For raw model calls, use a separate endpoint or provider.
Is the search source really global?
Yes. Retrieval runs over the global open web — English news, academic papers, official documentation, primary sources — not limited to the model’s training region.
Which models can I use?
DeepSeek V4-Flash, Qwen3.8 (Max / Plus / Flash), GLM-5.3-Flash, Kimi K3, MiniMax, and more. Switch by changing one string.
How do I migrate from Tavily?
Delete the Tavily client import, point the OpenAI SDK at the gateway’s base_url, and remove the manual prompt-building step. The request and response shapes stay the same.
The bottom line
Tavily is a search API. A gateway with built-in search is a model + search bundle. They overlap when your goal is “give the model current web context,” and they diverge when your goal is “show the user a list of search results.”
If your team pays in Bitcoin and your model already speaks OpenAI SDK, the bundle removes two keys, two balances, and one manual step from the request path.
Related
- How to Add Web Search to Any OpenAI-Compatible API
- Pay for LLM API with Bitcoin: A Developer Workflow
- Why “Model From China” ≠ “Search Results From China”