--- title: "Best AI Web Search and Answer APIs for Agents" type: "Ranking" url: "https://aidemos.com/best/web-search-apis" description: "For agent builders who need live web grounding, this comparison tests which APIs surface the right pages, current facts, usable page text, honest citations, and acceptable latency/cost when all tools are fed the same 52-query ground-truth set." readTime: "15 min read" tested: "Exa vs SerpAPI vs You.com vs Serper vs OpenAI web_search vs Tavily vs Linkup vs Valyu vs Olostep vs Jina" testedDate: "2026-08-25" category: "developer-tools" published: "2026-08-21T11:49:27.098621+00:00" updated: "2026-08-27T11:10:43.868746+00:00" evidenceCount: 107 verifiedCount: 83 coverage: "dense" --- # Best AI Web Search and Answer APIs for Agents `10 Tools Tested` · `52-Query Ground Truth` · `Answer Modes Tested` · `Citation Honesty` · `Live Web Search` **Tested:** Exa vs SerpAPI vs You.com vs Serper vs OpenAI web_search vs Tavily vs Linkup vs Valyu vs Olostep vs Jina · 2026-08-25 > For agent builders who need live web grounding, this comparison tests which APIs surface the right pages, current facts, usable page text, honest citations, and acceptable latency/cost when all tools are fed the same 52-query ground-truth set. ## Our Verdict **#1 pick: Exa** (Best) — Best overall balance of retrieval, answer quality, freshness, measured cost, and usable page text, with one citation-honesty blemish on Q43. - #2 SerpAPI — Fast, stable search with middling ranking depth and weak abstention on unanswerable prompts. - #3 You.com — Strong answer API, but the search side is pricey and slow, so it shines on answering and abstaining rather than on cheap, fast retrieval. - #4 Serper — Fastest and cheapest search API, with strong disambiguation, but it needs a separate content layer. - #5 OpenAI web_search — Strong on answer honesty, weak as a retrieval layer. - #6 Tavily — Best at returning full-page text, but unsafe in answer mode and only middling on ranking - #7 Linkup — Useful content extractor, but weak at ranking and holding back on unanswerables. - #8 Valyu — Strong retrieval engine, but weak on honesty and cost control - #9 Olostep — Workable search retrieval, but weak at disambiguation and unusable answer API behavior. - #10 Jina — Huge raw-text returns when it works, but free-tier quota blocks most of the benchmark. ## How We Tested I ran the same frozen 52-query ground-truth set through each vendor’s tested search or answer mode in ap-south-1 with the same top-k and client timeout, then scored results against human-verified supporting URLs captured before the run. The set includes 47 answerable queries and 5 unanswerable probes, weighted toward freshness, niche technical coverage, ambiguity/entity collisions, multi-source questions, content-depth questions, and no-answer behavior. Where a vendor offered both search and answer modes, I tested and scored them separately; I also reran a stability subset later to measure churn. Cost and latency came from raw usage data, billed usage, or published rate cards where the vendor exposed them. **What we evaluated:** | Criterion | Description | | --- | --- | | Relevance @ top-k | Does a supporting page appear in the top results? Report top-1 and top-3. | | Freshness | Does it surface content from the last 7 days? How stale is the index? | | Long-tail coverage | Niche / technical queries where big indexes thin out. | | Ambiguity handling | Does it resolve entity collisions or return the wrong "Apollo"? | | No-answer behaviour | Returns nothing / low confidence vs. confidently returning junk. | | Stability | Same query, later: reproducible, or does ranking churn? | | Extraction quality | Usable clean full text, or a snippet you must re-crawl (extra latency + cost)? | | Citation accuracy (answer APIs) | Does the cited URL genuinely contain the claim? Verify by opening it. | | Answer quality (answer APIs) | Correct, and does it abstain when it should? | | Cost per 1k queries | Normalized, including whether extracted content costs extra. | | p50 / p95 latency | Measured, from a stated region; agents feel p95, not p50. | ## The Ranking 10 tools tested head-to-head on the same input. ### 1. Exa — Best *Strong on freshness, extraction, and answer quality; weaker on ambiguity and long-tail niche queries.* Best overall balance of retrieval, answer quality, freshness, measured cost, and usable page text, with one citation-honesty blemish on Q43. ### 2. SerpAPI — Usable *Fast, stable search with middling ranking depth and weak abstention on unanswerable prompts.* A solid search-only option with a free tier that survived two full runs intact, good dates coverage, and decent ambiguity handling, but no answer mode and a steep paid cliff. ### 3. You.com — Usable *Strong answer API, but the search side is pricey and slow, so it shines on answering and abstaining rather than on cheap, fast retrieval.* Search accuracy is strong, the answer API was the cleanest small-panel result in the benchmark, but the search product’s real billing is much higher than the first-pass model suggested. ### 4. Serper — Usable *Fastest and cheapest search API, with strong disambiguation, but it needs a separate content layer.* The cheapest and fastest search API here, with the best ambiguity handling, but its snippets are too thin to serve as the only content layer. ### 5. OpenAI web_search — Usable *Strong on answer honesty, weak as a retrieval layer.* The cleanest citation and abstention record in the set, but too weak on retrieval freshness to be the main web-search layer for an agent. ### 6. Tavily — Needs work *Best at returning full-page text, but unsafe in answer mode and only middling on ranking* The search modes return rich text and the advanced tier finally justifies itself on extraction, but `include_answer` can fabricate confident wrong answers on no-answer queries. ### 7. Linkup — Needs work *Useful content extractor, but weak at ranking and holding back on unanswerables.* Its returned text is often good enough to answer from, but ranking is weak, deep search costs far more than standard, and the answer mode is only mid-pack on a small supplementary panel. ### 8. Valyu — Unstable *Strong retrieval engine, but weak on honesty and cost control* It finds the right material and returns strong content, but its citation honesty is the worst in the benchmark and the real bill is far above the headline rate. ### 9. Olostep — Unstable *Workable search retrieval, but weak at disambiguation and unusable answer API behavior.* The search endpoint completes all queries, but extraction is weak, the answers endpoint is quota-blocked, and the cost basis is only estimated. ### 10. Jina — Unstable *Huge raw-text returns when it works, but free-tier quota blocks most of the benchmark.* The free tier exhausted mid-run, so most of the benchmark could not be completed and the answer-capable DeepSearch endpoint is blocked by the same exhausted balance. ## Full Breakdown ### Exa Exa was tested in `/search` and `/answer` on the frozen 52-query set, with raw responses and citation checks saved for review. ![Exa screenshot showing Frozen query set](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--query-set-ground-truth-5eaaa90ae51d.csv) *Screenshot — Frozen 52-query ground-truth set used for Exa; 47 answerable queries were scored for retrieval and 5 unanswerable queries were reserved for abstention checks.* **What worked:** - Exa delivered the strongest large-sample answer score in the benchmark, kept all six freshness probes correct, and returned full page text so the model could answer from the payload even when ranking missed. It also had the tightest latency distribution in the set and a measured per-call cost field. **Where it struggled:** - Q43 cited `aiohttp` release notes for a Python release question, so the answer was right while the citation was wrong. `exa/answer` also moved more than `exa/search` on rerun, and the answer mode handled ambiguity much worse than the search mode. **What came out:** ![Exa output showing Scored run export](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--exa-scored-run-export-b227a9373aca.csv) *Output — Full scored export for Exa’s search and answer runs across the frozen benchmark.* ![Exa output showing Answer-grade audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--exa-answer-grades-84c56e7b0e48.csv) *Output — Per-query answer grades for Exa’s `/answer` mode, including the answerable and unanswerable blocks.* ![Exa output showing Citation-verdict audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--exa-citation-verdicts-b97a22498a54.csv) *Output — Opened-citation verdicts for Exa, showing the single false citation on Q43 and the rest of the citation checks.* ![Exa output showing Verification summary](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--exa-verification-summary-8e2a15e2c02e.md) *Output — Compact evidence summary for Exa, including the Q43 citation-grade conflict resolution.* ![Exa output showing Per-query results](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--exa-per-query-output-7611c8588ffd.md) *Output — Per-query outputs for all 52 Exa queries, including the freshness block and unanswerable probes.* ### SerpAPI SerpAPI was tested as a search-only API and its no-answer and pricing behavior were audited separately. ![SerpAPI screenshot showing Frozen query set](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--query-set-ground-truth-6-e9467af4fb32.csv) *Screenshot — Frozen 52-query ground-truth set used for SerpAPI; 47 answerable queries were scored for retrieval and 5 unanswerable queries were reserved for no-answer checks.* **What worked:** - SerpAPI completed both runs intact on the free tier, stayed fast, kept published dates on most results, and handled ambiguity better than most of the field. It is a reliable search-only baseline. **Where it struggled:** - It has no answer mode, no quota field in the search response itself, and the paid tiers jump sharply in price. On unanswerable probes it also returns speculative or conflicting specifics often enough to matter. **What came out:** ![SerpAPI output showing Scored run export](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--serpapi-scored-run-export-cbb57fa6a5f7.csv) *Output — Search run export for SerpAPI across the frozen benchmark.* ![SerpAPI output showing Per-query results](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--serpapi-per-query-output-68408fd768a2.md) *Output — Per-query outputs for SerpAPI search results across the 52-query benchmark.* ![SerpAPI output showing No-answer audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--serpapi-no-answer-behaviour-e6c9d6ce5080.md) *Output — Audit of SerpAPI’s behavior on the five unanswerable probes, including speculative or conflicting specific numbers on 3 of 5.* ![SerpAPI output showing Answer-field audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--serpapi-answer-field-absence-audit-7ed8cec1a0f3.md) *Output — Run-wide audit confirming that SerpAPI search responses carry no `answer_text` or `citations` field across all 52 calls.* ![SerpAPI output showing Pricing snapshot](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--serpapi-pricing-snapshot-2026-08-21-567b2be88442.md) *Output — Primary-source pricing capture showing the monthly bucket ladder and confirming the paid cliff.* ![SerpAPI output showing Pricing cross-check](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--serpapi-pricing-thirdparty-crosscheck-20-a20c13d809af.md) *Output — Third-party pricing cross-check that independently matches the captured SerpAPI ladder for the lower tiers.* ![SerpAPI output showing Raw response sample](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--serpapi-q01-raw-response-b4df9df63cfa.json) *Output — Single raw response used as the trigger for the missing-credits-field finding; the run-wide absence is documented separately.* ### You.com You.com was tested as a search API and also as a separate answer API, with live billing evidence attached to resolve the cost model. ![You.com screenshot showing Frozen query set](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--query-set-ground-truth-10-e81d73cd9c1c.csv) *Screenshot — Frozen 52-query ground-truth set used for You.com; 47 answerable queries were scored for retrieval and 5 unanswerable queries were reserved for abstention checks.* **What worked:** - The search API had the best top-1 retrieval in the benchmark and strong top-3 coverage, while the answer API produced the cleanest small-panel answer-mode result in the entire benchmark: exact or correct on the answerable sample and cleanly abstaining on the unanswerable sample. The Search API also returns full-page text with published dates. **Where it struggled:** - The search billing model was wrong by a wide margin because the crawl add-on bills per page, not per search. The `news` array is effectively empty for non-news intent, and the search latency spread is looser than most competitors. **What came out:** ![You.com output showing Scored run export](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--youcom-scored-run-export-b09462f7e583.csv) *Output — Search and news run export for You.com across the frozen benchmark.* ![You.com output showing Per-query results](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--youcom-per-query-output-2b768ba041a3.md) *Output — Per-query outputs for You.com search and news results across the 52-query benchmark.* ![You.com output showing Answer API test](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--youcom-answer-api-test-2026-08-25-f61490aa3c46.md) *Output — Supplementary 11-query answer-mode panel showing 6/6 correct answerable answers and 5/5 clean abstentions.* ![You.com output showing Latency backing](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--youcom-latency-backing-082a468ff828.md) *Output — Latency evidence and summary for You.com, including the Search API’s p50/p95 spread.* ![You.com output showing Call-count audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--youcom-callcount-audit-95c9c17d15a3.md) *Output — Audit resolving the earlier missing-calls discrepancy for You.com usage and run accounting.* ![You.com output showing Billing dashboard snapshot](https://cdn.futuresmart.ai/public/aidemos/447c41b530c1453cbe8933611564cfa4.png?v=1) *Output — You.com usage dashboard for Aug 16, 2026 showing 99 Web Search API calls and 1,165 Live Crawl Contents calls, which supports the measured all-in search cost.* ![You.com output showing Billing dashboard snapshot](https://cdn.futuresmart.ai/public/aidemos/af1b9867935048668db984c08a923a89.png?v=1) *Output — You.com usage dashboard for Aug 17, 2026 showing minimal additional activity; together with the Aug 16 snapshot it corroborates the page-level crawl billing model.* ### Serper Serper was tested as a search-only API with the same frozen query set and no answer mode. ![Serper screenshot showing Frozen query set](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--query-set-ground-truth-7-4c01b7c093d4.csv) *Screenshot — Frozen 52-query ground-truth set used for Serper; 47 answerable queries were scored for retrieval and 5 unanswerable queries were reserved for no-answer checks.* **What worked:** - Serper was the fastest and cheapest search API in the benchmark, with the best ambiguity handling, full published-date coverage, and zero errors across both runs. Its rank order was stable enough that the rerun confirmed the earlier tie was noise. **Where it struggled:** - Its snippets are too thin to serve as the only content layer, and the unanswerable probes often returned a confident but unsupported specific number instead of abstaining. The pricing page also 404s to a plain fetch, which makes cost reasoning awkward for agents. **What came out:** ![Serper output showing Scored run export](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--serper-scored-run-export-2ffc5faeab2a.csv) *Output — Search run export for Serper across the frozen benchmark.* ![Serper output showing Per-query results](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--serper-per-query-output-aff874620262.md) *Output — Per-query outputs for Serper search results across the 52-query benchmark.* ![Serper output showing No-answer audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--serper-no-answer-behaviour-139efcce75f8.md) *Output — Audit of Serper’s behavior on the five unanswerable probes, showing speculative or conflicting specific numbers on 3 of 5.* ### OpenAI web_search OpenAI’s built-in `web_search` was tested as the answer-mode control arm, not as a ranked-list search API. ![OpenAI web_search screenshot showing Frozen query set](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--query-set-ground-truth-5-cc14f0a728e3.csv) *Screenshot — Frozen 52-query ground-truth set used for OpenAI web_search; 47 answerable queries were scored for retrieval and 5 unanswerable queries were used for abstention checks.* **What worked:** - It had the cleanest citation-honesty sheet in the benchmark, abstained on every unanswerable query, and handled multi-source answers well. For a control arm, that is exactly what you want to see. **Where it struggled:** - Its retrieval layer was weak, especially on freshness, and it was one of the slowest tools after the rerun regression. It is better read as a correctness control than as the primary web-retrieval layer. **What came out:** ![OpenAI web_search output showing Scored run export](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--openai-scored-run-export-dab1de11e8c8.csv) *Output — Search/control-arm export for OpenAI web_search across the frozen benchmark.* ![OpenAI web_search output showing Answer-grade audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--openai-answer-grades-6a45cc358a24.csv) *Output — Answer grading for OpenAI web_search, including the corrected retrieval and abstention counts.* ![OpenAI web_search output showing Citation-verdict audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--openai-citation-verdicts-62831eb11090.csv) *Output — Citation verdicts for OpenAI web_search, confirming the clean citation sheet.* ![OpenAI web_search output showing Retrieval correction note](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--openai-retrieval-figures-corrected-31c8d171e316.md) *Output — Correction note fixing the earlier retrieval-figure contradiction and documenting the Q23 rank-2 citation exception.* ![OpenAI web_search output showing Long-tail coverage note](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--openai-longtail-coverage-2ae8d78d1423.md) *Output — Long-tail/niche-technical coverage note showing the corrected block-level performance for the niche set.* ![OpenAI web_search output showing Per-query results](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--openai-per-query-output-ffc474586bb8.md) *Output — Per-query outputs for OpenAI web_search across the 52-query benchmark.* ### Tavily Tavily was tested in both `basic` and `advanced` search modes, and its `include_answer` mode was separately audited on a supplementary panel. ![Tavily screenshot showing Frozen query set](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--query-set-ground-truth-8-827548a45017.csv) *Screenshot — Frozen 52-query ground-truth set used for Tavily; 47 answerable queries were scored for retrieval and 5 unanswerable queries were reserved for no-answer checks.* **What worked:** - The search modes return rich page text, and the advanced tier finally proved its value on extraction by carrying the answer-bearing passage reliably. On content payload alone, Tavily is genuinely useful. **Where it struggled:** - The ranking side is mediocre, ambiguity is weak, freshness is weak, and the answer mode is dangerous: it can invent specific wrong answers on no-answer queries without any citation trail to catch it. Advanced is slower and costlier than basic for only a small extraction gain. **What came out:** ![Tavily output showing Scored run export](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--tavily-scored-run-export-46fe33c746b6.csv) *Output — Search-mode export for Tavily across the frozen benchmark.* ![Tavily output showing Per-query results](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--tavily-per-query-output-67e4342fde2a.md) *Output — Per-query outputs for Tavily search results across the 52-query benchmark.* ![Tavily output showing No-answer audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--tavily-no-answer-behaviour-c086314fe638.md) *Output — Search-mode audit of Tavily’s unanswerable probes.* ![Tavily output showing Answer-mode test](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--tavily-include-answer-test-2026-08-25-52cb41a635e3.md) *Output — Supplementary 11-query answer-mode panel showing that `include_answer` can fabricate confident wrong answers on 3 of 5 unanswerable probes.* ### Linkup Linkup was tested in search mode and a supplementary `sourcedAnswer` panel was added later to close the answer-mode gap. ![Linkup screenshot showing Frozen query set](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--query-set-ground-truth-3-a9a1a7708f04.csv) *Screenshot — Frozen 52-query ground-truth set used for Linkup; 47 answerable queries were scored for retrieval and 5 unanswerable queries were used for no-answer checks.* **What worked:** - Linkup often returns enough text to answer from, even when it misses the exact hand-picked URL, so its extraction story is better than its ranking story. The supplementary answer panel also showed real citations on some claims and clean abstention on all five unanswerable probes. **Where it struggled:** - Its search ranking is weak, deep search is much more expensive without improving results, and the `sourcedAnswer` mode missed two of the six answerable supplementary probes. On no-answer search probes it also surfaced specific wrong numbers instead of staying quiet. **What came out:** ![Linkup output showing Scored run export](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--linkup-scored-run-export-df6d31e66a01.csv) *Output — Search-mode export for Linkup across the frozen benchmark.* ![Linkup output showing Per-query results](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--linkup-per-query-output-ce97bc5da84e.md) *Output — Per-query outputs for Linkup search results across the 52-query benchmark.* ![Linkup output showing No-answer audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--linkup-no-answer-behaviour-a2600f39647a.md) *Output — Search-mode audit of Linkup’s unanswerable probes, including cases where it surfaced confident but wrong specifics.* ![Linkup output showing Raw extract audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--linkup-q48-q52-raw-extract-f40d3aa81808.md) *Output — Raw extraction notes for Linkup’s five unanswerable probes, used to verify the no-answer behavior findings.* ![Linkup output showing Freshness scoring](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--linkup-freshness-scoring-3fa2016e848c.md) *Output — Freshness scoring for Linkup’s search modes across the freshness block.* ![Linkup output showing Answer-mode test](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--linkup-sourcedanswer-test-2026-08-25-ca762a23482e.md) *Output — Supplementary 11-query `sourcedAnswer` panel showing mid-pack answer quality, including Q32 and Q43 misses.* ### Valyu Valyu was tested in both search and answer modes, with raw billing, citation-verdict, and stability evidence attached. ![Valyu screenshot showing Frozen query set](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--query-set-ground-truth-9-be1ca2dc5913.csv) *Screenshot — Frozen 52-query ground-truth set used for Valyu; 47 answerable queries were scored for retrieval and 5 unanswerable queries were used for abstention checks.* **What worked:** - Valyu’s search mode returned strong content and even perfect current-fact answers, and it exposes a real per-call dollar figure, which makes the billing discrepancy provable rather than suspected. Its extraction quality is strong enough that the model can answer from the returned payload. **Where it struggled:** - The main failure is attribution: it repeatedly cites the right kind of page for the wrong entity, which makes bad answers look sourced. The billed cost is also far above the headline rate, and the answer mode is weaker than the search mode on freshness and abstention. **What came out:** ![Valyu output showing Scored run export](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--valyu-scored-run-export-0e9bf696c1fb.csv) *Output — Search and answer run export for Valyu across the frozen benchmark.* ![Valyu output showing Answer-grade audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--valyu-answer-grades-af425d41de85.csv) *Output — Answer grading for Valyu’s answer mode, including the 52-query benchmark and the graded abstentions.* ![Valyu output showing Citation-verdict audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--valyu-citation-verdicts-f6cf51395f71.csv) *Output — Citation verdicts for Valyu, documenting the wrong-entity citation pattern that dominates the false citations.* ![Valyu output showing Stability comparison](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--valyu-stability-run-comparison-efd55a19084f.md) *Output — Stability comparison between the two runs, showing both modes staying within the noise band.* ![Valyu output showing Per-query results](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--valyu-per-query-output-f4cbecd1a326.md) *Output — Per-query outputs for Valyu across the 52-query benchmark.* ### Olostep Olostep was tested in search mode, while `/answers` was separately probed and confirmed quota-blocked. ![Olostep screenshot showing Frozen query set](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--query-set-ground-truth-4-63cb140f6895.csv) *Screenshot — Frozen 52-query ground-truth set used for Olostep; 47 answerable queries were scored for retrieval and 5 unanswerable queries were reserved for the no-answer block.* **What worked:** - The search endpoint completed all 52 queries with zero errors, so the product is at least operational as a search layer. It also has a mid-table cost per correct hit compared with other search-only tools. **Where it struggled:** - Extraction is weak, the cost basis is only estimated, and the `/answers` endpoint could not be used because every tested call returned HTTP 402. That makes answer citation checks and answer quality unscorable until paid credits are added. **What came out:** ![Olostep output showing Scored run export](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--olostep-scored-run-export-dfe34a2c0379.csv) *Output — Search-mode export for Olostep across the frozen benchmark.* ![Olostep output showing Per-query results](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--olostep-per-query-output-1925dfcf7cc2.md) *Output — Per-query outputs for Olostep search results across the 52-query benchmark.* ![Olostep output showing Answer-mode refusal record](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--olostep-answers-refusal-and-smoketest-1fb4aa47bae3.md) *Output — Combined refusal and smoke-test evidence showing that `/answers` returned HTTP 402 on the frozen no-answer queries and is quota-blocked.* ### Jina Jina was tested on `s.jina.ai`, but the free tier exhausted mid-run and the answer-capable DeepSearch endpoint was later confirmed blocked by the same exhausted balance. ![Jina screenshot showing Frozen query set](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--query-set-ground-truth-2-3c81fcf0bf83.csv) *Screenshot — Frozen 52-query ground-truth set used for Jina; 47 answerable queries were scored where possible and 5 unanswerable queries were intended for no-answer checks.* **What worked:** - On the calls that completed, Jina returned very large text payloads and acceptable top-10 coverage on the easiest portion of the set. That shows the content layer itself can be rich when the request succeeds. **Where it struggled:** - The free tier exhausted after only 16 completed queries, so most of the benchmark never ran. That prevented meaningful scoring on stability, ambiguity, content-depth, and no-answer behavior, and the answer-capable endpoint is also blocked until the account is recharged. **What came out:** ![Jina output showing Scored run export](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--jina-scored-run-export-5e8a0b8212b7.csv) *Output — Search-mode export for Jina, including the completed rows and the HTTP 402 failures.* ![Jina output showing Per-query results](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--jina-per-query-output-e117f91cb4b9.md) *Output — Per-query outputs for Jina’s search mode, showing the mid-run exhaustion point and the completed subset.* ![Jina output showing Stability exclusion audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--jina-stability-exclusion-audit-b5eeb51e05b1.md) *Output — Audit showing that a meaningful stability comparison is not possible because the second run completed zero queries.* ![Jina output showing Ambiguity audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--jina-ambiguity-handling-audit-4ac07fd03c00.md) *Output — Audit showing that all ambiguity-block queries returned HTTP 402 and therefore cannot be scored.* ![Jina output showing No-answer audit](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--jina-q48-q52-no-answer-audit-67a8ce1d0d80.md) *Output — Audit showing that the unanswerable block was never reached because all five calls returned HTTP 402.* ![Jina output showing DeepSearch block probe](https://d3epheqghktydj.cloudfront.net/search-the-web-from-an-agent-web-search--jina-deepsearch-probe-2026-08-25-cd28c5013bc3.md) *Output — Live DeepSearch probe confirming that the answer-capable Jina endpoint is blocked by the same exhausted account balance.* ## Evidence (first-party, tested) *107 tested cells · 83/107 artifact-verified. Scores are out of 5. Cite a cell by its Evidence ID, e.g. `ev:exa·cross·ambiguity-handling`.* | Tool | Criterion | Scenario | Verdict | Score | Proof | Evidence ID | | --- | --- | --- | --- | --- | --- | --- | | Exa | Ambiguity handling | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-verification-summary-8e2a15e2c02e.md) | `ev:exa·cross·ambiguity-handling` | | Exa | Answer quality (answer APIs) | Python 3.11.16 release info | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-answer-grades-84c56e7b0e48.csv) | `ev:exa·python-3-11-16-release-info·answer-quality-answer-apis` | | Exa | Citation accuracy (answer APIs) | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-citation-verdicts-b97a22498a54.csv) | `ev:exa·cross·citation-accuracy-answer-apis` | | Exa | Citation accuracy (answer APIs) | Python 3.11.16 release info | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-citation-verdicts-b97a22498a54.csv) | `ev:exa·python-3-11-16-release-info·citation-accuracy-answer-apis` | | Exa | Cost per 1k queries | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-scored-run-export-b227a9373aca.csv) | `ev:exa·cross·cost-per-1k-queries` | | Exa | Extraction quality | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-verification-summary-8e2a15e2c02e.md) | `ev:exa·cross·extraction-quality` | | Exa | Long-tail coverage | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-verification-summary-8e2a15e2c02e.md) | `ev:exa·cross·long-tail-coverage` | | Exa | No-answer behaviour | Unanswerable probe panel (Q48–Q52) | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-per-query-output-7611c8588ffd.md) | `ev:exa·unanswerable-probe-panel-q48-q52·no-answer-behaviour` | | Exa | No-answer behaviour | cross-scenario | ◐ mixed | — | 👁 observed | `ev:exa·cross·no-answer-behaviour` | | Exa | p50 / p95 latency | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-scored-run-export-b227a9373aca.csv) | `ev:exa·cross·p50-p95-latency` | | Exa | Relevance @ top-k | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-verification-summary-8e2a15e2c02e.md) | `ev:exa·cross·relevance-at-top-k` | | Exa | Stability | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-exa-scored-run-export-b227a9373aca.csv) | `ev:exa·cross·stability` | | Jina | Ambiguity handling | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-ambiguity-handling-audit-4ac07fd03c00.md) | `ev:jina·cross·ambiguity-handling` | | Jina | Answer quality (answer APIs) | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-deepsearch-probe-2026-08-25-cd28c5013bc3.md) | `ev:jina·cross·answer-quality-answer-apis` | | Jina | Citation accuracy (answer APIs) | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-deepsearch-probe-2026-08-25-cd28c5013bc3.md) | `ev:jina·cross·citation-accuracy-answer-apis` | | Jina | Cost per 1k queries | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-per-query-output-e117f91cb4b9.md) | `ev:jina·cross·cost-per-1k-queries` | | Jina | Extraction quality | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-per-query-output-e117f91cb4b9.md) | `ev:jina·cross·extraction-quality` | | Jina | Freshness | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-per-query-output-e117f91cb4b9.md) | `ev:jina·cross·freshness` | | Jina | Long-tail coverage | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-per-query-output-e117f91cb4b9.md) | `ev:jina·cross·long-tail-coverage` | | Jina | No-answer behaviour | Unanswerable probe panel (Q48–Q52) | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-q48-q52-no-answer-audit-67a8ce1d0d80.md) | `ev:jina·unanswerable-probe-panel-q48-q52·no-answer-behaviour` | | Jina | p50 / p95 latency | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-per-query-output-e117f91cb4b9.md) | `ev:jina·cross·p50-p95-latency` | | Jina | Relevance @ top-k | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-per-query-output-e117f91cb4b9.md) | `ev:jina·cross·relevance-at-top-k` | | Jina | Stability | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-jina-stability-exclusion-audit-b5eeb51e05b1.md) | `ev:jina·cross·stability` | | Linkup | Ambiguity handling | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-per-query-output-ce97bc5da84e.md) | `ev:linkup·cross·ambiguity-handling` | | Linkup | Answer quality (answer APIs) | cross-scenario | ⚠ struggled | — | 👁 observed | `ev:linkup·cross·answer-quality-answer-apis` | | Linkup | Answer quality (answer APIs) | Combined population of Gujarat and Maharashtra | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-sourcedanswer-test-2026-08-25-ca762a23482e.md) | `ev:linkup·combined-population-of-gujarat-and-maharashtra·answer-quality-answer-apis` | | Linkup | Answer quality (answer APIs) | Unanswerable probe panel (Q48–Q52) | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-sourcedanswer-test-2026-08-25-ca762a23482e.md) | `ev:linkup·unanswerable-probe-panel-q48-q52·answer-quality-answer-apis` | | Linkup | Answer quality (answer APIs) | Python 3.11.16 release info | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-sourcedanswer-test-2026-08-25-ca762a23482e.md) | `ev:linkup·python-3-11-16-release-info·answer-quality-answer-apis` | | Linkup | Cost per 1k queries | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-per-query-output-ce97bc5da84e.md) | `ev:linkup·cross·cost-per-1k-queries` | | Linkup | Extraction quality | GDPR exceptions | ✓ worked | 2/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-per-query-output-ce97bc5da84e.md) | `ev:linkup·gdpr-exceptions·extraction-quality` | | Linkup | Freshness | cross-scenario | ⚠ struggled | 33.3/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-freshness-scoring-3fa2016e848c.md) | `ev:linkup·cross·freshness` | | Linkup | Long-tail coverage | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-per-query-output-ce97bc5da84e.md) | `ev:linkup·cross·long-tail-coverage` | | Linkup | No-answer behaviour | Unanswerable probe panel (Q48–Q52) | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-no-answer-behaviour-a2600f39647a.md) | `ev:linkup·unanswerable-probe-panel-q48-q52·no-answer-behaviour` | | Linkup | No-answer behaviour | cross-scenario | ✗ failed | — | 👁 observed | `ev:linkup·cross·no-answer-behaviour` | | Linkup | No-answer behaviour | Jina AI ARR | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-no-answer-behaviour-a2600f39647a.md) | `ev:linkup·jina-ai-arr·no-answer-behaviour` | | Linkup | p50 / p95 latency | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-per-query-output-ce97bc5da84e.md) | `ev:linkup·cross·p50-p95-latency` | | Linkup | Relevance @ top-k | GDPR exceptions | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-per-query-output-ce97bc5da84e.md) | `ev:linkup·gdpr-exceptions·relevance-at-top-k` | | Linkup | Stability | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-linkup-per-query-output-ce97bc5da84e.md) | `ev:linkup·cross·stability` | | Olostep | Ambiguity handling | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-scored-run-export-dfe34a2c0379.csv) | `ev:olostep·cross·ambiguity-handling` | | Olostep | Answer quality (answer APIs) | Jina AI ARR | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-answers-refusal-and-smoketest-1fb4aa47bae3.md) | `ev:olostep·jina-ai-arr·answer-quality-answer-apis` | | Olostep | Citation accuracy (answer APIs) | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-answers-refusal-and-smoketest-1fb4aa47bae3.md) | `ev:olostep·cross·citation-accuracy-answer-apis` | | Olostep | Cost per 1k queries | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-scored-run-export-dfe34a2c0379.csv) | `ev:olostep·cross·cost-per-1k-queries` | | Olostep | Extraction quality | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-scored-run-export-dfe34a2c0379.csv) | `ev:olostep·cross·extraction-quality` | | Olostep | Freshness | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-scored-run-export-dfe34a2c0379.csv) | `ev:olostep·cross·freshness` | | Olostep | Long-tail coverage | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-scored-run-export-dfe34a2c0379.csv) | `ev:olostep·cross·long-tail-coverage` | | Olostep | No-answer behaviour | Unanswerable probe panel (Q48–Q52) | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-answers-refusal-and-smoketest-1fb4aa47bae3.md) | `ev:olostep·unanswerable-probe-panel-q48-q52·no-answer-behaviour` | | Olostep | p50 / p95 latency | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-scored-run-export-dfe34a2c0379.csv) | `ev:olostep·cross·p50-p95-latency` | | Olostep | Relevance @ top-k | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-scored-run-export-dfe34a2c0379.csv) | `ev:olostep·cross·relevance-at-top-k` | | Olostep | Stability | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-olostep-scored-run-export-dfe34a2c0379.csv) | `ev:olostep·cross·stability` | | OpenAI web search | Ambiguity handling | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-openai-per-query-output-ffc474586bb8.md) | `ev:openai-web-search·cross·ambiguity-handling` | | OpenAI web search | Answer quality (answer APIs) | Combined population of Gujarat and Maharashtra | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-openai-per-query-output-ffc474586bb8.md) | `ev:openai-web-search·combined-population-of-gujarat-and-maharashtra·answer-quality-answer-apis` | | OpenAI web search | Citation accuracy (answer APIs) | cross-scenario | ✓ worked | 0/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-openai-citation-verdicts-62831eb11090.csv) | `ev:openai-web-search·cross·citation-accuracy-answer-apis` | | OpenAI web search | Extraction quality | cross-scenario | ◐ mixed | 1.7/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-openai-retrieval-figures-corrected-31c8d171e316.md) | `ev:openai-web-search·cross·extraction-quality` | | OpenAI web search | No-answer behaviour | cross-scenario | ◐ mixed | — | 👁 observed | `ev:openai-web-search·cross·no-answer-behaviour` | | OpenAI web search | No-answer behaviour | Serper SOC2 date | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-openai-per-query-output-ffc474586bb8.md) | `ev:openai-web-search·serper-soc2-date·no-answer-behaviour` | | OpenAI web search | No-answer behaviour | Unanswerable probe panel (Q48–Q52) | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-openai-per-query-output-ffc474586bb8.md) | `ev:openai-web-search·unanswerable-probe-panel-q48-q52·no-answer-behaviour` | | OpenAI web search | Stability | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-openai-scored-run-export-dab1de11e8c8.csv) | `ev:openai-web-search·cross·stability` | | SerpAPI | Ambiguity handling | cross-scenario | ✓ worked | 71/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-scored-run-export-cbb57fa6a5f7.csv) | `ev:serpapi·cross·ambiguity-handling` | | SerpAPI | Answer quality (answer APIs) | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-answer-field-absence-audit-7ed8cec1a0f3.md) | `ev:serpapi·cross·answer-quality-answer-apis` | | SerpAPI | Citation accuracy (answer APIs) | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-answer-field-absence-audit-7ed8cec1a0f3.md) | `ev:serpapi·cross·citation-accuracy-answer-apis` | | SerpAPI | Cost per 1k queries | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-pricing-snapshot-2026-08-21-567b2be88442.md) | `ev:serpapi·cross·cost-per-1k-queries` | | SerpAPI | Extraction quality | cross-scenario | ◐ mixed | 1.5/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-scored-run-export-cbb57fa6a5f7.csv) | `ev:serpapi·cross·extraction-quality` | | SerpAPI | Freshness | cross-scenario | ⚠ struggled | 33/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-scored-run-export-cbb57fa6a5f7.csv) | `ev:serpapi·cross·freshness` | | SerpAPI | Long-tail coverage | cross-scenario | ◐ mixed | 50/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-scored-run-export-cbb57fa6a5f7.csv) | `ev:serpapi·cross·long-tail-coverage` | | SerpAPI | No-answer behaviour | Unanswerable probe panel (Q48–Q52) | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-no-answer-behaviour-e6c9d6ce5080.md) | `ev:serpapi·unanswerable-probe-panel-q48-q52·no-answer-behaviour` | | SerpAPI | p50 / p95 latency | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-scored-run-export-cbb57fa6a5f7.csv) | `ev:serpapi·cross·p50-p95-latency` | | SerpAPI | Relevance @ top-k | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-scored-run-export-cbb57fa6a5f7.csv) | `ev:serpapi·cross·relevance-at-top-k` | | SerpAPI | Stability | cross-scenario | ✓ worked | 95/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serpapi-scored-run-export-cbb57fa6a5f7.csv) | `ev:serpapi·cross·stability` | | Serper | Ambiguity handling | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serper-scored-run-export-2ffc5faeab2a.csv) | `ev:serper·cross·ambiguity-handling` | | Serper | Answer quality (answer APIs) | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serper-no-answer-behaviour-139efcce75f8.md) | `ev:serper·cross·answer-quality-answer-apis` | | Serper | Citation accuracy (answer APIs) | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serper-no-answer-behaviour-139efcce75f8.md) | `ev:serper·cross·citation-accuracy-answer-apis` | | Serper | Cost per 1k queries | cross-scenario | ✓ worked | 1/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serper-scored-run-export-2ffc5faeab2a.csv) | `ev:serper·cross·cost-per-1k-queries` | | Serper | Extraction quality | GDPR exceptions | ✗ failed | 1.3/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serper-scored-run-export-2ffc5faeab2a.csv) | `ev:serper·gdpr-exceptions·extraction-quality` | | Serper | Freshness | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serper-scored-run-export-2ffc5faeab2a.csv) | `ev:serper·cross·freshness` | | Serper | Long-tail coverage | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serper-scored-run-export-2ffc5faeab2a.csv) | `ev:serper·cross·long-tail-coverage` | | Serper | No-answer behaviour | Unanswerable probe panel (Q48–Q52) | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serper-no-answer-behaviour-139efcce75f8.md) | `ev:serper·unanswerable-probe-panel-q48-q52·no-answer-behaviour` | | Serper | Relevance @ top-k | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serper-scored-run-export-2ffc5faeab2a.csv) | `ev:serper·cross·relevance-at-top-k` | | Serper | Stability | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-serper-scored-run-export-2ffc5faeab2a.csv) | `ev:serper·cross·stability` | | Tavily | Ambiguity handling | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-scored-run-export-46fe33c746b6.csv) | `ev:tavily·cross·ambiguity-handling` | | Tavily | Answer quality (answer APIs) | cross-scenario | ⚠ struggled | — | 👁 observed | `ev:tavily·cross·answer-quality-answer-apis` | | Tavily | Answer quality (answer APIs) | GDPR exceptions | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-include-answer-test-2026-08-25-52cb41a635e3.md) | `ev:tavily·gdpr-exceptions·answer-quality-answer-apis` | | Tavily | Answer quality (answer APIs) | Combined population of Gujarat and Maharashtra | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-include-answer-test-2026-08-25-52cb41a635e3.md) | `ev:tavily·combined-population-of-gujarat-and-maharashtra·answer-quality-answer-apis` | | Tavily | Citation accuracy (answer APIs) | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-include-answer-test-2026-08-25-52cb41a635e3.md) | `ev:tavily·cross·citation-accuracy-answer-apis` | | Tavily | Cost per 1k queries | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-scored-run-export-46fe33c746b6.csv) | `ev:tavily·cross·cost-per-1k-queries` | | Tavily | Extraction quality | GDPR exceptions | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-per-query-output-67e4342fde2a.md) | `ev:tavily·gdpr-exceptions·extraction-quality` | | Tavily | Freshness | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-scored-run-export-46fe33c746b6.csv) | `ev:tavily·cross·freshness` | | Tavily | Long-tail coverage | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-scored-run-export-46fe33c746b6.csv) | `ev:tavily·cross·long-tail-coverage` | | Tavily | No-answer behaviour | Unanswerable probe panel (Q48–Q52) | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-include-answer-test-2026-08-25-52cb41a635e3.md) | `ev:tavily·unanswerable-probe-panel-q48-q52·no-answer-behaviour` | | Tavily | p50 / p95 latency | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-scored-run-export-46fe33c746b6.csv) | `ev:tavily·cross·p50-p95-latency` | | Tavily | Relevance @ top-k | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-scored-run-export-46fe33c746b6.csv) | `ev:tavily·cross·relevance-at-top-k` | | Tavily | Stability | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-tavily-scored-run-export-46fe33c746b6.csv) | `ev:tavily·cross·stability` | | Valyu | Ambiguity handling | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-per-query-output-f4cbecd1a326.md) | `ev:valyu·cross·ambiguity-handling` | | Valyu | Answer quality (answer APIs) | Combined population of Gujarat and Maharashtra | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-answer-grades-af425d41de85.csv) | `ev:valyu·combined-population-of-gujarat-and-maharashtra·answer-quality-answer-apis` | | Valyu | Citation accuracy (answer APIs) | Serper SOC2 date | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-citation-verdicts-f6cf51395f71.csv) | `ev:valyu·serper-soc2-date·citation-accuracy-answer-apis` | | Valyu | Cost per 1k queries | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-scored-run-export-0e9bf696c1fb.csv) | `ev:valyu·cross·cost-per-1k-queries` | | Valyu | Extraction quality | cross-scenario | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-per-query-output-f4cbecd1a326.md) | `ev:valyu·cross·extraction-quality` | | Valyu | Freshness | Python 3.11.16 release info | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-answer-grades-af425d41de85.csv) | `ev:valyu·python-3-11-16-release-info·freshness` | | Valyu | Long-tail coverage | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-scored-run-export-0e9bf696c1fb.csv) | `ev:valyu·cross·long-tail-coverage` | | Valyu | No-answer behaviour | Unanswerable probe panel (Q48–Q52) | ◐ mixed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-answer-grades-af425d41de85.csv) | `ev:valyu·unanswerable-probe-panel-q48-q52·no-answer-behaviour` | | Valyu | p50 / p95 latency | cross-scenario | ✗ failed | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-scored-run-export-0e9bf696c1fb.csv) | `ev:valyu·cross·p50-p95-latency` | | Valyu | Relevance @ top-k | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-scored-run-export-0e9bf696c1fb.csv) | `ev:valyu·cross·relevance-at-top-k` | | Valyu | Stability | cross-scenario | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-valyu-stability-run-comparison-efd55a19084f.md) | `ev:valyu·cross·stability` | | You.com | Answer quality (answer APIs) | cross-scenario | ✓ worked | — | 👁 observed | `ev:you-com·cross·answer-quality-answer-apis` | | You.com | Answer quality (answer APIs) | Combined population of Gujarat and Maharashtra | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-youcom-answer-api-test-2026-08-25-f61490aa3c46.md) | `ev:you-com·combined-population-of-gujarat-and-maharashtra·answer-quality-answer-apis` | | You.com | Answer quality (answer APIs) | GDPR exceptions | ✓ worked | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-youcom-answer-api-test-2026-08-25-f61490aa3c46.md) | `ev:you-com·gdpr-exceptions·answer-quality-answer-apis` | | You.com | No-answer behaviour | Unanswerable probe panel (Q48–Q52) | ✓ worked | 5/5 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-youcom-answer-api-test-2026-08-25-f61490aa3c46.md) | `ev:you-com·unanswerable-probe-panel-q48-q52·no-answer-behaviour` | | You.com | p50 / p95 latency | cross-scenario | ⚠ struggled | — | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-latency-summary-6c55d9a78945.csv) | `ev:you-com·cross·p50-p95-latency` | > 🧾 = artifact-verified (proof captured) · 👁 = observed (noted, no artifact) · verdicts: worked / mixed / struggled / failed. ## Final Take You.com is the overall winner because it is fully measured on all eight decisive checks and combines strong answer behavior with strong abstention: 4/5 on ambiguity handling, answer quality, citation accuracy, 5/5 on extraction quality, and 5/5 on no-answer behavior. The trade-off is that it is not the best retrieval-first option: freshness is weak at 2/5, relevance @ top-k is only 3/5, and the search side is pricey and slow (2/5 on cost and latency). If you want a tool that answers well and knows when to abstain, You.com is the page’s #1. If you want faster, more retrieval-oriented behavior, SerpAPI is the cleaner alternative: it is fast and stable with excellent answer/citation scores, but its no-answer behavior is weaker at 2/5 and its ranking depth is only middling. Serper is the cheapest and fastest search API, with the strongest ambiguity handling in the set, but its extraction is very weak at 1/5 and it needs a separate content layer. Exa looks strong on freshness, extraction, and answer quality, but it is only partly tested, so it cannot take the top spot by policy; its incomplete coverage should be treated as a real caveat rather than a reason to crown it. OpenAI web_search is attractive when answer honesty and citation accuracy matter more than retrieval depth, but it is also partly tested and weak as a retrieval layer. The lower-ranked tools are more specialized or more limited: Linkup is a useful extractor but weak at ranking and abstention; Tavily is good at full-page text but unsafe in answer mode; Jina and Olostep are held back by broader reliability and behavior gaps; Valyu has retrieval strengths but weak honesty and cost control. Tested as of 2026-08-25 · re-verified monthly. ## Need a custom AI solution for this use case? If you are looking to build a custom web search, answer retrieval, or citation grounding system for your business or internal workflow, email us at [contact@futuresmart.ai](mailto:contact@futuresmart.ai). ### Found something inaccurate or missing? We try to keep our AI research accurate and useful. If you found outdated information, an issue, or have a suggestion, email us at [collaborate@aidemos.com](mailto:collaborate@aidemos.com).