We ran 20 queries through Tavily, Telnyx Web Search, DuckDuckGo, and Brave. Brave was fastest at 561ms avg with zero errors. Tavily returned the richest snippets. DuckDuckGo failed 8 out of 20 times.
An agent that cannot look things up answers from memory. Memory goes stale. It hallucinates pricing, cites outdated docs, and confidently answers questions the world has already moved past. If you are building agents, at some point you will wire in web search, and then you will have to pick one.
We picked wrong once. We wired a search provider into an internal agent, paid for a separate account, managed a second API key, and waited on latency every time the agent needed a fact. When we built the Web Search API to fix that for our own agents, we needed to know whether it could hold up against the standalone providers developers actually use. So we benchmarked it.
We benchmarked four APIs: Tavily, Brave, DuckDuckGo, and Telnyx Web Search. We ran twenty queries across five categories, from competitive intelligence to domain-filtered technical lookups, and compared latency, snippet depth, coverage, reliability, and cost.
Each query went to all four APIs with identical parameters. Latency was measured end to end from one machine, one run per query. Client-side routing layers, proxy hops, and network paths differ between APIs, so treat the latency numbers as relative to this setup rather than absolute provider speed.
Brave returned results in an average of 561ms across all 20 queries with zero errors. The slowest single query was 908ms. The fastest was 361ms.
Telnyx averaged 1,027ms, also with zero errors. The slowest was 1,236ms. The fastest was 638ms.
DuckDuckGo averaged 2,328ms, but with high variance. The fastest query returned in 319ms. The slowest took 3,830ms. Eight queries errored out entirely with an intermittent connection protocol error.
Tavily averaged 4,452ms. The slowest query took 5,543ms. The fastest took 3,818ms. Zero errors.
A portion of Tavily's measured latency comes from the proxy rather than Tavily itself. Tavily's response_time field was about 1.1 seconds in these runs, putting a direct request closer to 1,000 to 1,500ms. Brave and Telnyx were both faster here. The claim we can defend is that they were faster in our setup.
DuckDuckGo is in the middle on speed but is not reliable enough for production. Eight out of twenty queries failed with no retry path. For a free baseline, it is usable. For an agent that needs to answer a user, it is a liability.
When a user is waiting on a live path, the difference between 500ms and 4,000ms is noticeable. In background research or batch workflows, latency matters less.
| Metric | Tavily | Telnyx | DuckDuckGo | Brave |
|---|---|---|---|---|
| Average latency | 4,452ms | 1,027ms | 2,328ms | 561ms |
| Minimum latency | 3,818ms | 638ms | 319ms | 361ms |
| Maximum latency | 5,543ms | 1,236ms | 3,830ms | 908ms |
| Errors (out of 20) | 0 | 0 | 8 | 0 |
Telnyx returned 10 results per query consistently, totaling 190 results across 20 queries. Tavily returned 4 to 10 results per query, averaging 8.3, totaling 167. Brave returned 10 on most queries, averaging 8.1, totaling 161. DuckDuckGo returned 0 to 10, averaging 6.0, totaling 120.
Tavily's strongest advantage is snippet depth. Tavily snippets average 1,081 characters, enough text to answer many questions without fetching the full page. Telnyx snippets average 322 characters. Brave averages 257. DuckDuckGo averages 220, barely a sentence. To get full page content from Telnyx, you need a follow-up call to /v1/contents. From Brave or DuckDuckGo, you would need to fetch every page yourself.
The practical difference is that one search call can sometimes give the agent enough text to answer on its own. With Telnyx, the agent typically searches first, then calls /v1/contents for the pages it picked. That is a better path when the agent needs speed and control over what it reads next. It is extra work when the answer was already sitting in Tavily's result.
Brave and DuckDuckGo force the second fetch every time because their snippets are too short to answer from.
| Metric | Tavily | Telnyx | DuckDuckGo | Brave |
|---|---|---|---|---|
| Average snippet length | 1,081 chars | 322 chars | 220 chars | 257 chars |
| Total snippet characters | 180,541 | 61,265 | 26,486 | 41,464 |
Across all 20 queries, Tavily and Telnyx shared 37 URLs in common. Tavily returned 125 URLs that Telnyx did not. Telnyx returned 153 URLs that Tavily did not. Brave and DuckDuckGo returned different sets again, with even less overlap to either.
That is a 13% exact-URL overlap between Tavily and Telnyx. The sample is too small to rank either index, but big enough to show that treating all four APIs as one source of web coverage is wrong.
If you are doing competitive research or source discovery, querying two APIs and deduplicating the results is reasonable. For an ordinary lookup, it is probably overkill. Four APIs is almost certainly overkill unless missing a source is genuinely expensive.
| Metric | Tavily | Telnyx | DuckDuckGo | Brave |
|---|---|---|---|---|
| Total URLs returned | 167 | 190 | 120 | 161 |
| Avg results per query | 8.3 | 9.5 | 6.0 | 8.1 |
| Total unique domains | 132 | 130 | 111 | 129 |
| Tavily-Telnyx URL overlap | 37 shared |
Latency alone gives the wrong answer. Brave clusters at the fast end with short snippets, similar to Telnyx. Telnyx takes roughly twice as long but returns more results. Tavily takes longer but often gives the model far more to work with immediately. DuckDuckGo is fast on some queries but its snippets are uniformly thin and it fails often. The real choice is between a first call rich enough to answer from and a fast call followed by a second retrieval step. Which one wins depends on whether that second step costs less than the saved latency.
Tavily uses a credit-based pricing model. Basic search costs 1 credit, advanced search costs 2 credits. At pay-as-you-go rates ($0.008/credit), 1,000 basic searches cost $8. On the Growth plan ($500/month for 100,000 credits), the effective rate drops to $5 per 1,000 searches.
Telnyx Web Search costs $5 per 1,000 calls, billed through the Telnyx account you already have. No new billing relationship.
DuckDuckGo is free and unlimited, but you pay for it in reliability and depth.
Brave charges $0.003 per query after the free tier. At 10,000 queries per month, that is $30. At 100,000, it is $300. It is the cheapest paid option and the fastest, with zero errors in our test.
| Operation | Tavily | Telnyx | DuckDuckGo | Brave |
|---|---|---|---|---|
| Basic search | 1 credit ($0.005-$0.008) | $5 / 1K calls | Free | $0.003/query |
| Advanced search | 2 credits ($0.010-$0.016) | N/A | N/A | N/A |
| Page extract | 1 credit per 5 URLs | $5 / 1K calls | N/A (fetch yourself) | N/A |
| Deep research | 15-250 credits | $5 / 1K calls | N/A | N/A |
| Cost per 1K searches | $5-$8 | $5 | $0 | $3 |
| Pricing model | Credit-based | $5 / 1K calls | Free (unofficial) | $0.003 / query |
| Feature | Tavily | Telnyx | DuckDuckGo | Brave |
|---|---|---|---|---|
| Web search | Yes | Yes | Yes (unofficial) | Yes |
| Domain include filter | Yes | Yes | No (post-filter only) | No (post-filter only) |
| Domain exclude filter | Yes | Yes | No | No |
| Include + exclude together | Yes | No (returns 400) | No | No |
| Freshness filter | Yes | Yes | No | No |
| Country filter | No | Yes | No | Yes |
| Safesearch filter | No | Yes | No | Yes |
| Livecrawl | Yes | Yes (fixed) | No | No |
| Page extract (HTML/Markdown) | Yes | Yes | No | No |
| Batch extract | Up to 20 URLs | Up to 20 public, 50 internal | No | No |
| Deep research with citations | Yes | Yes | No | No |
| Background research polling | No | Yes (task_id polling) | No | No |
| Answer generation | Yes | No | No | No |
| Raw content in search results | Yes | No | No | No |
| Image search | Yes | No | No | Yes |
| Provider abstraction | No | Yes (swappable backend) | No | No |
| Authentication | Separate API key | Telnyx API key (shared with voice, messaging) | None (unofficial) | Separate API key |
| Reliability (errors/20) | 0 | 0 | 8 | 0 |
Tavily completed all 20 queries with zero errors. Telnyx completed all 20 with zero errors. Brave completed all 20 with zero errors. DuckDuckGo failed on 8 of 20.
The DuckDuckGo failures all came from the same source: the ddgs library scrapes DuckDuckGo's unofficial endpoint, and there is no retry path or error message a caller can handle gracefully. A free baseline can absorb that. An agent answering a user cannot.
If your agent retries on failure, DuckDuckGo's effective error rate drops. If it does not, Tavily, Telnyx, and Brave are the three APIs that completed every query on the first try in this test.
Use Brave when you need the fastest reliable search and can tolerate thin snippets. At $0.003 per query, it is the cheapest paid option and the fastest in this benchmark. Zero errors across 20 queries. The tradeoff is no page extract, no answer generation, and no background research polling.
Use Telnyx Web Search when you need fast search with a Telnyx API key or want background research with async polling. At $5 per 1,000 calls it is cheaper than Tavily and lands on the same bill as your voice, messaging, and inference usage.
Use Tavily when you need the search response to carry enough context to answer without a follow-up fetch, want answer generation or image search, or need combined include and exclude domain filters. Its 1,081-character average snippet length meant the agent could often work from the result itself.
Use DuckDuckGo when cost is the only constraint and you can tolerate failures. It is free and fast on a good day, but eight out of twenty queries failed, its snippets are too short to answer from, and it does not support domain filtering, freshness, or any structured parameters.
Use two of them when missing a source is more expensive than another request. This sample returned materially different pages from each provider. For competitive intelligence, that can be worth the added latency and credits. Brave plus Tavily covers speed and depth. Telnyx plus Tavily covers depth on one bill. Adding DuckDuckGo to any pair adds little; the other three cover its use cases.
This was 20 queries across five categories, one run per query per API, measured from a single machine. URL overlap uses exact URL-string matching. Snippet length is the character count of the primary result field. Each API was called through its standard client path. The latency result belongs to this setup. Telnyx ran the benchmark and paid for Tavily. DuckDuckGo and Brave were free.
This benchmark does not settle index quality for good. It shows the decision agent builders actually have to make: get more context from the first search call, get a fast result and decide what to read next, or get a free result and accept that it will be thin and occasionally absent.
Learn more: Web Search API product page | Developer docs