Best Web Search APIs for AI Agents | LLM Token Efficiency Benchmark (2026)
Best web search API by token efficiency in this benchmark: TinyFish, with 208 accuracy points per 1,000 snippet tokens, 92.0% accuracy and 441 average snippet tokens. Fastest search: Parallel (mode=turbo), 348ms average search time. Cheapest search: TinyFish, $0 per 1,000 queries within plan limits. LLM costs are additional. Compare the best web search APIs for AI agents and RAG from 11 providers, including Exa, Tavily, Brave, Parallel, Firecrawl, by token efficiency, accuracy, speed and cost per 1,000 queries.
The main comparison measures how much useful evidence search returns for the context it consumes. Ranked by accuracy per 1,000 snippet tokens across 300 questions and 11 providers; higher is better.
- Best by token efficiency: TinyFish, 208 accuracy points per 1,000 snippet tokens, with 92.0% accuracy.
- Fastest search: Parallel (mode=turbo), 348ms average search time.
- Cheapest search: TinyFish, $0 per 1,000 queries within plan limits. LLM costs are additional.
Compare token-efficient search APIs → · Agentic search tokens · Deep search tokens
Updated 26 Sept 2026.
Best web search APIs for token efficiency: accuracy, speed and cost
The token-efficiency score is accuracy in percentage points ÷ average snippet tokens × 1,000. A score can exceed 100 because it is a ratio. Read the separate accuracy percentage and context size alongside it.
| Rank | Search API & configuration | Accuracy points / 1,000 tokens | Accuracy | Average snippet tokens | Average search time | Search / 1,000 queries | Official docs |
|---|---|---|---|---|---|---|---|
| 1 | TinyFishapi.search.tinyfish.ai free · 30 req/min cap | 208 | 92.0% | 441 | 2.62s | $0Within plan limits | Official docs ↗ |
| 2 | Perplexity/search search_context_size=low | 205 | 97.3% | 476 | 1.38s | $5.00 | Official docs ↗ |
| 3 | SERP (RapidAPI)google-search74.p.rapidapi.com limit=10 | 193 | 96.0% | 497 | 751ms | $3.00 | Official docs ↗ |
| 4 | Firecrawl/v2/search | 141 | 95.3% | 678 | 510ms | $5.00 | Official docs ↗ |
| 5 | Brave Search (count=10)/res/v1/web/search count=10 · result_filter=web | 114 | 93.3% | 817 | 630ms | $5.00 | Official docs ↗ |
| 6 | Nimble (search_depth=lite)/v2/search search_depth=lite · full_content=false · focus=general | 110 | 94.3% | 860 | 2.46s | $1.10 | Official docs ↗ |
| 7 | Tavily (search_depth=basic)/search search_depth=basic | 53.5 | 87.7% | 1,639 | 1.88s | $8.00 | Official docs ↗ |
| 8 | Exa (type=fast)/search type=fast | 50.0 | 99.3% | 1,987 | 652ms | $7.00 | Official docs ↗ |
| 9 | Parallel (mode=fast)/v1/search mode=fast | 46.8 | 86.0% | 1,839 | 942ms | $1.00 | Official docs ↗ |
| 10 | Exa (type=instant)/search type=instant | 45.9 | 97.7% | 2,128 | 398ms | $7.00 | Official docs ↗ |
| 11 | Brave Search (count=10)/res/v1/llm/context count=10 | 45.6 | 94.0% | 2,064 | 601ms | $5.00 | Official docs ↗ |
| 12 | Tavily (search_depth=advanced)/search search_depth=advanced | 42.1 | 93.0% | 2,210 | 4.29s | $16.00 | Official docs ↗ |
| 13 | Parallel (mode=basic)/v1/search mode=basic | 40.1 | 93.3% | 2,330 | 1.68s | $5.00 | Official docs ↗ |
| 14 | Parallel (mode=turbo)/v1/search mode=turbo | 38.5 | 71.3% | 1,853 | 348ms | $1.00 | Official docs ↗ |
| 15 | Nimble (search_depth=standard)/v2/search search_depth=standard · full_content=false · focus=general | 34.1 | 93.0% | 2,730 | 861ms | $5.00 | Official docs ↗ |
| 16 | You (extraction_mode=highlights)/v1/search extraction_mode=highlights · knowledge=core | 32.1 | 92.0% | 2,862 | 889ms | $5.00 | Official docs ↗ |
| 17 | Linkup (depth=fast)/v1/search depth=fast · outputType=searchResults | 32.0 | 96.7% | 3,022 | 1.57s | $5.00 | Official docs ↗ |
| 18 | You (extraction_mode=highlights)/v1/search extraction_mode=highlights | 32.0 | 90.7% | 2,837 | 628ms | $5.00 | Official docs ↗ |
| 19 | Linkup (depth=standard)/v1/search depth=standard · outputType=searchResults | 30.8 | 92.0% | 2,983 | 2.55s | $5.00 | Official docs ↗ |
How to choose the best web search API for your token budget
Start with answer accuracy per 1,000 tokens, then check the underlying accuracy, returned context size, search speed and API price. A compact response is useful when it preserves the evidence your AI agent or RAG app needs. Use the supporting agentic and deep-search boards for full-agent token usage.
Exa (type=fast) has the highest search accuracy at 99.3% on this board. Token efficiency balances that accuracy with context size. Pick a minimum accuracy target for your application, then compare token efficiency, speed and cost among the qualifying APIs.
Search API pricing per 1,000 queries is separate from LLM token billing. Estimate search requests, input tokens and output tokens using their respective rates; account for model caching and scraping charges where applicable. TinyFish’s recorded free search plan allows 30 requests per minute and 500 per hour. Official pricing links show current plans and limits.
Best web search APIs for AI → · Compare APIs for LLM apps and RAG → · Compare pricing per 1,000 queries →
Supporting results: token-efficient APIs for agentic search
Find an answer deep within a unique page, across very similar pages. Ranked by Acc / 1k tokens: grounded task-completion percentage divided by median LLM task tokens, times 1,000. Higher is better. Tokens include input and output across every agent turn on the same held-out tasks.
| Rank | Vendor | Endpoint & configuration | Official docs | Acc / 1k tokens | Task completion | Median task tokens |
|---|---|---|---|---|---|---|
| 1 | Firecrawl | POST /v2/search | Official docs ↗ | 9.43 | 70.3 ± 1.5 | 7,456 |
| 2 | Perplexity | POST /search search_context_size=low | Official docs ↗ | 8.82 | 77.3 ± 2.1 | 8,765 |
| 3 | TinyFish | GET api.search.tinyfish.ai | Official docs ↗ | 7.94 | 59.3 ± 1.5 | 7,469 |
| 4 | Nimble | POST /v2/search search_depth=lite · full_content=false · focus=general | Official docs ↗ | 5.36 | 46.7 ± 3.8 | 8,713 |
| 5 | Parallel fast | POST /v1/search mode=fast | Official docs ↗ | 5.35 | 66.7 ± 1.5 | 12,460 |
| 6 | Parallel turbo | POST /v1/search mode=turbo | Official docs ↗ | 4.58 | 64.7 ± 2.1 | 14,130 |
| 7 | Tavily basic | POST /search search_depth=basic | Official docs ↗ | 3.13 | 51.0 ± 5.3 | 16,299 |
| 8 | Exa fast | POST /search type=fast | Official docs ↗ | 2.97 | 66.3 ± 1.5 | 22,344 |
| 9 | Nimble | POST /v2/search search_depth=standard · full_content=false · focus=general | Official docs ↗ | 2.85 | 42.3 ± 2.5 | 14,859 |
| 10 | Exa instant | POST /search type=instant | Official docs ↗ | 2.74 | 61.3 ± 2.9 | 22,423 |
| 11 | Brave | POST /res/v1/llm/context | Official docs ↗ | 2.69 | 38.0 ± 2.6 | 14,103 |
| 12 | You | POST /v1/search extraction_mode=highlights | Official docs ↗ | 2.03 | 41.3 ± 3.1 | 20,333 |
| 13 | You | POST /v1/search extraction_mode=highlights · knowledge=core | Official docs ↗ | 1.84 | 38.3 ± 3.2 | 20,786 |
| 14 | Linkup fast | POST /v1/search depth=fast | Official docs ↗ | 1.80 | 43.3 ± 1.1 | 24,057 |
Task completion is mean ± sample SD across three runs of 100 tasks. Acc / 1k tokens = task-completion percentage ÷ median LLM input + output tokens × 1,000; higher is better. Median tokens are pooled across those runs.
| Rank | Vendor | Endpoint & configuration | Official docs | Acc / 1k tokens | Task completion | Median task tokens |
|---|---|---|---|---|---|---|
| 1 | TinyFish | GET api.search.tinyfish.aiPOST api.fetch.tinyfish.ai format=markdown | Official docs ↗ | 6.15 | 79.0 ± 2.0 | 12,844 |
| 2 | Firecrawl | POST /v2/searchPOST /v2/scrape | Official docs ↗ | 4.37 | 76.0 ± 1.0 | 17,379 |
| 3 | Perplexity | POST /search search_context_size=highPOST /search search_context_size=high | Official docs ↗ | 3.87 | 77.7 ± 1.5 | 20,062 |
| 4 | Nimble | POST /v2/search search_depth=lite · full_content=false · focus=generalPOST /v2/extract formats=[markdown] | Official docs ↗ | 3.59 | 60.3 ± 2.5 | 16,828 |
| 5 | Exa deep | POST /search type=deepPOST /contents | Official docs ↗ | 3.51 | 83.0 ± 1.0 | 23,660 |
| 6 | Exa auto | POST /search type=autoPOST /contents | Official docs ↗ | 2.98 | 81.7 ± 1.1 | 27,433 |
| 7 | Parallel advanced | POST /v1/search mode=advancedPOST /v1/extract | Official docs ↗ | 2.84 | 77.0 ± 1.0 | 27,092 |
| 8 | Parallel basic | POST /v1/search mode=basicPOST /v1/extract | Official docs ↗ | 2.32 | 76.0 ± 0.0 | 32,809 |
| 9 | Tavily advanced | POST /search search_depth=advancedPOST /extract extract_depth=advanced | Official docs ↗ | 2.28 | 60.0 ± 2.0 | 26,269 |
| 10 | Tavily basic | POST /search search_depth=basicPOST /extract extract_depth=basic | Official docs ↗ | 2.15 | 59.0 ± 1.7 | 27,405 |
| 11 | Nimble | POST /v2/search search_depth=standard · full_content=false · focus=generalPOST /v2/extract formats=[markdown] | Official docs ↗ | 1.57 | 45.0 ± 1.0 | 28,586 |
| 12 | You | POST /v1/search extraction_mode=highlights · knowledge=corePOST /v1/contents | Official docs ↗ | 1.44 | 54.0 ± 2.0 | 37,453 |
| 13 | You | POST /v1/search extraction_mode=highlightsPOST /v1/contents | Official docs ↗ | 1.28 | 55.0 ± 1.7 | 42,806 |
| 14 | Linkup standard | POST /v1/search depth=standardPOST /v1/fetch mode=standard | Official docs ↗ | 0.84 | 48.3 ± 4.9 | 57,791 |
Task completion is mean ± sample SD across three runs of 100 tasks. Acc / 1k tokens = task-completion percentage ÷ median LLM input + output tokens × 1,000; higher is better. Median tokens are pooled across those runs.
Supporting results: token-efficient APIs for deep search
Combine evidence from several searches. The agent builds its answer from multiple searches. Ranked by Precision / 1k tokens: precision percentage divided by median LLM task tokens, times 1,000. Higher is better. Precision measures the share of returned answers that match the reference set. Each provider runs 45 questions 3 times per tool mode.
| Provider | Endpoint & configuration | Official docs | Precision / 1k tokens | Precision | Median task tokens |
|---|---|---|---|---|---|
| Firecrawl | POST /v2/searchfirecrawl | Official docs ↗ | 1.53 | 77.3 ± 4.4 | 50,596 |
| Brave Search | GET /res/v1/web/searchbrave | Official docs ↗ | 1.37 | 66.9 ± 8.5 | 49,005 |
| TinyFish | GET api.search.tinyfish.aitinyfish | Official docs ↗ | 1.27 | 64.7 ± 1.5 | 51,091 |
| Perplexity | POST /searchsearch_context_size=low | Official docs ↗ | 1.18 | 79.3 ± 5.7 | 66,928 |
| Nimble | POST /v2/searchsearch_depth=lite · full_content=false · focus=general | Official docs ↗ | 1.18 | 62.8 ± 1.9 | 53,219 |
| Parallel turbo | POST /v1/search mode=turboparallel-turbo | Official docs ↗ | 0.72 | 80.0 ± 5.2 | 110,844 |
| Parallel fast | POST /v1/search mode=fastparallel-fast | Official docs ↗ | 0.67 | 79.9 ± 4.6 | 119,953 |
| Nimble | POST /v2/searchsearch_depth=standard · full_content=false · focus=general | Official docs ↗ | 0.64 | 70.3 ± 3.3 | 109,000 |
| Tavily basic | POST /search search_depth=basictavily-basic | Official docs ↗ | 0.58 | 82.5 ± 1.9 | 142,692 |
| Parallel advanced | POST /v1/search mode=advancedparallel-advanced | Official docs ↗ | 0.55 | 87.6 ± 3.4 | 159,733 |
| Exa deep | POST /search type=deepexa-deep | Official docs ↗ | 0.54 | 83.2 ± 3.0 | 153,061 |
| Exa instant | POST /search type=instantexa-instant | Official docs ↗ | 0.54 | 82.6 ± 3.8 | 152,622 |
| Tavily advanced | POST /search search_depth=advancedtavily-advanced | Official docs ↗ | 0.35 | 83.7 ± 4.2 | 237,706 |
| Linkup standard | POST /v1/search depth=standardlinkup-standard | Official docs ↗ | 0.34 | 84.0 ± 7.9 | 249,382 |
| You | POST /v1/searchextraction_mode=highlights · knowledge=core | Official docs ↗ | 0.33 | 80.9 ± 1.6 | 244,245 |
| Linkup fast | POST /v1/search depth=fastlinkup-fast | Official docs ↗ | 0.32 | 82.8 ± 1.0 | 259,642 |
| You | POST /v1/searchextraction_mode=highlights | Official docs ↗ | 0.30 | 79.3 ± 4.9 | 264,016 |
| Parallel basic | POST /v1/search mode=basicparallel-basic | Official docs ↗ | 0.29 | 88.7 ± 0.9 | 303,467 |
| Seltz | POST /v1/search scope=companiesseltz-companies | — | 0.08 | 40.0 ± 3.1 | 500,633 |
| SERP (RapidAPI) | GET google-search74.p.rapidapi.comserp | Official docs ↗ | 0.07 | 0.7 ± 1.3 | 10,890 |
Acc / 1k tokens = precision percentage ÷ median task tokens × 1,000; higher is better. Accuracy on this table uses precision: the share of returned answers that match the reference set. Median task tokens sum LLM input and output across every turn, then take the median across all repeats. Missing measurements are shown as —. Precision is mean ± sample SD in percentage points.
| Provider | Endpoint & configuration | Official docs | Precision / 1k tokens | Precision | Median task tokens |
|---|---|---|---|---|---|
| Firecrawl | POST /v2/searchfirecrawl | Official docs ↗ | 1.51 | 83.3 ± 0.8 | 55,069 |
| Brave Search | GET /res/v1/web/searchbrave | Official docs ↗ | 1.35 | 73.5 ± 5.8 | 54,482 |
| TinyFish | GET api.search.tinyfish.aitinyfish | Official docs ↗ | 1.32 | 70.9 ± 11.3 | 53,654 |
| Nimble | POST /v2/searchsearch_depth=lite · full_content=false · focus=general · extract formats=[markdown] | Official docs ↗ | 1.17 | 68.5 ± 4.4 | 58,732 |
| Parallel turbo | POST /v1/search mode=turboparallel-turbo | Official docs ↗ | 0.77 | 83.6 ± 4.0 | 108,358 |
| Perplexity | POST /searchsearch_context_size=high | Official docs ↗ | 0.72 | 87.7 ± 5.9 | 121,239 |
| Parallel fast | POST /v1/search mode=fastparallel-fast | Official docs ↗ | 0.69 | 82.3 ± 6.6 | 119,278 |
| Nimble | POST /v2/searchsearch_depth=standard · full_content=false · focus=general · extract formats=[markdown] | Official docs ↗ | 0.62 | 73.2 ± 1.9 | 117,345 |
| Exa deep | POST /search type=deepexa-deep | Official docs ↗ | 0.61 | 89.4 ± 1.2 | 147,079 |
| Parallel advanced | POST /v1/search mode=advancedparallel-advanced | Official docs ↗ | 0.58 | 87.6 ± 0.3 | 152,116 |
| Tavily basic | POST /search search_depth=basictavily-basic | Official docs ↗ | 0.57 | 81.2 ± 5.9 | 141,892 |
| Exa instant | POST /search type=instantexa-instant | Official docs ↗ | 0.55 | 85.9 ± 2.5 | 156,796 |
| Tavily advanced | POST /search search_depth=advancedtavily-advanced | Official docs ↗ | 0.43 | 89.4 ± 6.0 | 208,974 |
| Linkup standard | POST /v1/search depth=standardlinkup-standard | Official docs ↗ | 0.36 | 90.7 ± 2.0 | 254,078 |
| You | POST /v1/searchextraction_mode=highlights | Official docs ↗ | 0.35 | 85.2 ± 2.7 | 241,834 |
| Linkup fast | POST /v1/search depth=fastlinkup-fast | Official docs ↗ | 0.35 | 85.3 ± 3.6 | 246,395 |
| You | POST /v1/searchextraction_mode=highlights · knowledge=core | Official docs ↗ | 0.31 | 78.2 ± 2.5 | 250,679 |
| Parallel basic | POST /v1/search mode=basicparallel-basic | Official docs ↗ | 0.27 | 81.3 ± 2.8 | 304,826 |
| Seltz | POST /v1/search scope=companiesseltz-companies | — | 0.10 | 49.5 ± 2.4 | 502,391 |
| SERP (RapidAPI) | GET google-search74.p.rapidapi.comserp | Official docs ↗ | 0.00 | 0.0 ± 0.0 | 11,051 |
Acc / 1k tokens = precision percentage ÷ median task tokens × 1,000; higher is better. Accuracy on this table uses precision: the share of returned answers that match the reference set. Median task tokens sum LLM input and output across every turn, then take the median across all repeats. Missing measurements are shown as —. Precision is mean ± sample SD in percentage points.
How we measure web search API token efficiency
Divide accuracy in percentage points by average snippet tokens and multiply by 1,000. For example, 90% accuracy with 500 tokens gives a score of 180. That score is a ratio, not 180% accuracy. Snippet tokens estimate title plus excerpt at roughly four characters per token. The search comparison uses the same 300 company-news questions, one request and up to 10 results.
The primary search dataset contains company-news questions covering funding, acquisitions, layoffs, launches and leadership. The answer model and judge stay fixed while the search API changes. Supporting agentic search uses held-out developer documentation tasks; deep search uses company-discovery questions with multiple constraints.
Agentic search ranks task-completion percentage divided by median task tokens, times 1,000. Deep search ranks precision percentage divided by median task tokens, times 1,000. These task tokens include LLM input and output across the complete agent run, pooled across repeats. Compare providers within the same workload and tool mode. Search-result context and full-agent LLM tokens use different accounting scopes, so each board has its own ranking.
Open source: Search benchmark · Agentic search benchmark · Public search dataset sample
Most token-efficient search API: questions and answers
What is the most token-efficient search API in this benchmark?
TinyFish leads the search-result comparison at 208 accuracy points per 1,000 snippet tokens, with 92.0% accuracy and 441 average snippet tokens across 300 questions. Compare accuracy and context size together when choosing a web search API.
How do you choose the best web search API for token efficiency?
Start with answer accuracy per 1,000 tokens, then check the underlying accuracy, returned context size, search speed and API price. A compact response is useful when it preserves the evidence your AI agent or RAG app needs. Use the supporting agentic and deep-search boards for full-agent token usage.
How is accuracy per 1,000 snippet tokens calculated?
Divide accuracy in percentage points by average snippet tokens and multiply by 1,000. For example, 90% accuracy with 500 tokens gives a score of 180. That score is a ratio, not 180% accuracy. Snippet tokens estimate title plus excerpt at roughly four characters per token. The search comparison uses the same 300 company-news questions, one request and up to 10 results.
How are agentic search and deep search tokens measured?
Agentic search ranks task-completion percentage divided by median task tokens, times 1,000. Deep search ranks precision percentage divided by median task tokens, times 1,000. These task tokens include LLM input and output across the complete agent run, pooled across repeats. Compare providers within the same workload and tool mode.
Does the most token-efficient search API also have the highest accuracy?
Exa (type=fast) has the highest search accuracy at 99.3% on this board. Token efficiency balances that accuracy with context size. Pick a minimum accuracy target for your application, then compare token efficiency, speed and cost among the qualifying APIs.
How do tokens affect search API and RAG costs?
Search API pricing per 1,000 queries is separate from LLM token billing. Estimate search requests, input tokens and output tokens using their respective rates; account for model caching and scraping charges where applicable. TinyFish’s recorded free search plan allows 30 requests per minute and 500 per hour. Official pricing links show current plans and limits.
Why are search and search + scrape compared separately?
Scraping supplies additional page content and changes the agent’s evidence and token consumption. The supporting comparisons show both modes separately with the same model and task setup within each board.










