<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pallavi Singla</title>
    <description>The latest articles on DEV Community by Pallavi Singla (@pallavi_singla_1c9eb0dd62).</description>
    <link>https://dev.to/pallavi_singla_1c9eb0dd62</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4211496%2F9405b2ac-6b15-46fd-a251-e4cb6c32fb1a.png</url>
      <title>DEV Community: Pallavi Singla</title>
      <link>https://dev.to/pallavi_singla_1c9eb0dd62</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pallavi_singla_1c9eb0dd62"/>
    <language>en</language>
    <item>
      <title>I benchmarked 4 web search APIs for AI agents. Here's what each one is good at.</title>
      <dc:creator>Pallavi Singla</dc:creator>
      <pubDate>Tue, 27 Oct 2026 17:42:47 +0000</pubDate>
      <link>https://dev.to/pallavi_singla_1c9eb0dd62/i-benchmarked-4-web-search-apis-for-ai-agents-heres-what-each-one-is-good-at-4232</link>
      <guid>https://dev.to/pallavi_singla_1c9eb0dd62/i-benchmarked-4-web-search-apis-for-ai-agents-heres-what-each-one-is-good-at-4232</guid>
      <description>&lt;p&gt;Every AI agent that answers questions about the world needs web search, and choosing the API behind it is surprisingly hard. Vendor benchmarks are run by vendors, and most public evals use generic trivia that looks nothing like what an agent actually sends.&lt;/p&gt;

&lt;p&gt;So I built a small, open &lt;strong&gt;web search API evaluation&lt;/strong&gt; around agent-style calls, and tested &lt;strong&gt;You.com, Tavily, Exa and Parallel&lt;/strong&gt; live.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2r1vpuazni1l5gvl6dl0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2r1vpuazni1l5gvl6dl0.png" alt="Overall scorecard: 30 queries, 3 use cases, 4 search APIs" width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If your agent…&lt;/th&gt;
&lt;th&gt;Pick&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Answers inside a live turn (voice, chat, alerts)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;You.com&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fastest at p50 and p95, freshest results, never returned empty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Does deep research where seconds don't matter&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Parallel&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Highest accuracy overall and in finance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Needs the most on-topic top 5 for semantic or long-tail queries&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Exa&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Best precision@5, best insurance accuracy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Looks up docs or how-to answers&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Tavily&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Best GTM accuracy, right on the config-docs query&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There's no single winner. The right API depends on what your agent does.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I tested
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;30 queries, written the way agents call search.&lt;/strong&gt; Each one has an upstream task ("Any new mentions of Apache Iggy in the last day?"), the exact search string the agent sends (&lt;code&gt;"Apache Iggy"&lt;/code&gt;), parameters (a 24-hour window), and what the agent needs back. They're split across three common agent use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GTM agent:&lt;/strong&gt; fresh developer and company buying signals (new issues, releases, funding, incidents)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insurance agent:&lt;/strong&gt; a voice and claims agent that needs live catastrophe status mid-call, with a 500 ms budget&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finance agent:&lt;/strong&gt; an analyst copilot that needs exact, current numbers with a primary-source citation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every use case has at least four real-time queries, and some expect &lt;strong&gt;"none"&lt;/strong&gt; as the right answer. That catches APIs that present stale pages as current.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Same request for every API:&lt;/strong&gt; 10 results, full content where supported, the same freshness window and domain filters. Each query ran &lt;strong&gt;3 times through promptfoo&lt;/strong&gt; (90 calls per API). Latency is client wall-clock around the HTTP request after a discarded warm-up call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grading:&lt;/strong&gt; answer keys were captured live and archived to the Wayback Machine. Answers were graded with the published &lt;strong&gt;SimpleQA&lt;/strong&gt; rubric (correct = 2, partial list = 1, wrong = 0), with &lt;strong&gt;FreshQA strict rules&lt;/strong&gt; for "none" answers and stale results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overall results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric (90 calls per API)&lt;/th&gt;
&lt;th&gt;You.com&lt;/th&gt;
&lt;th&gt;Tavily&lt;/th&gt;
&lt;th&gt;Exa&lt;/th&gt;
&lt;th&gt;Parallel&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Accuracy (% of max)&lt;/td&gt;
&lt;td&gt;63%&lt;/td&gt;
&lt;td&gt;51%&lt;/td&gt;
&lt;td&gt;53%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;67%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queries fully correct in all 3 runs&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;57%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;37%&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;57%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Precision@5&lt;/td&gt;
&lt;td&gt;37%&lt;/td&gt;
&lt;td&gt;26%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;40%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;26%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Results inside the query's window&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;59%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;37%&lt;/td&gt;
&lt;td&gt;44%&lt;/td&gt;
&lt;td&gt;29%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Empty responses (of 90)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency p50 / p95, client (ms)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;593 / 804&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1,864 / 3,305&lt;/td&gt;
&lt;td&gt;1,106 / 3,997&lt;/td&gt;
&lt;td&gt;2,038 / 4,117&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search cost per correct answer&lt;/td&gt;
&lt;td&gt;$0.026&lt;/td&gt;
&lt;td&gt;$0.016&lt;/td&gt;
&lt;td&gt;$0.012&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.008&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What happened in each use case
&lt;/h2&gt;

&lt;h3&gt;
  
  
  GTM: "what's new?" favors freshness
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm2gg11gk86hqagtq5r4x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm2gg11gk86hqagtq5r4x.png" alt="GTM agent: all providers ranked on accuracy, precision, freshness and latency" width="799" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6141olml7bjy5393q2t8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6141olml7bjy5393q2t8.png" alt="GTM per-query results" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You.com was the only API to surface the day's new Apache Iggy activity, and it was right on that week's funding rounds and agent-memory posts. Parallel won when the agent needed the official page, such as a project's release notes. Tavily won the documentation lookup (Kafka consumer settings). For an agent that watches for fresh buying signals, freshness matters most. For one that mostly looks up release notes or docs, Parallel or Tavily fit better.&lt;/p&gt;

&lt;h3&gt;
  
  
  Insurance: live status is hard for everyone
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2iofwf7pwipyyhesld9m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2iofwf7pwipyyhesld9m.png" alt="Insurance agent: all providers ranked on accuracy, precision, freshness and latency" width="799" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo7gr5lxhduicxa4dpedz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo7gr5lxhduicxa4dpedz.png" alt="Insurance per-query results" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You.com returned the latest hurricane advisory and answered every call in under a second. For current wind speed, though, it returned a cached weather page instead of a live reading. &lt;strong&gt;Exa was the only API to get both the live wind speed and both county warnings&lt;/strong&gt;, which is why it leads insurance accuracy. &lt;strong&gt;No API found the active binding suspension&lt;/strong&gt; from the state insurer of last resort. An insurance agent still needs a direct check of carrier and regulator pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finance: two reliable APIs, one tie-breaker
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsr8rd1drv1om68swcgy4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsr8rd1drv1om68swcgy4.png" alt="Finance agent: all providers ranked on accuracy, precision, freshness and latency" width="799" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6i70wtbqfg3n34sdsbnb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6i70wtbqfg3n34sdsbnb.png" alt="Finance per-query results" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You.com and Parallel both reliably answered live market and filing questions: the NVDA price, the 10-year yield, Bitcoin, the Fed minutes, a fresh 8-K and an earnings date. &lt;strong&gt;Parallel edged ahead because it was the only API to find the right week's jobless-claims report.&lt;/strong&gt; Tavily returned nothing on queries limited to government domains, and Exa mostly returned stale prices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developer setup is part of the product
&lt;/h2&gt;

&lt;p&gt;I also timed signup to a working API key from screen recordings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr6oznf4qg094beoamdkq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr6oznf4qg094beoamdkq.png" alt="Time and steps to activation" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tavily was fastest (25 seconds, 3 steps). Every provider's first API call worked on the first try.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;10 queries per use case is a focused test, not a leaderboard. A difference of a query or two is noise.&lt;/li&gt;
&lt;li&gt;Results reflect one day (Oct 8, 2026). Real-time answer keys are only valid for that date.&lt;/li&gt;
&lt;li&gt;Costs are list prices and cover search only, not the answering model.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Use it, rerun it, extend it
&lt;/h2&gt;

&lt;p&gt;Everything is open and MIT-licensed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full results and charts:&lt;/strong&gt; &lt;a href="https://psinglap.github.io/websearch-api-eval/" rel="noopener noreferrer"&gt;psinglap.github.io/websearch-api-eval&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Harness, answer keys and grades:&lt;/strong&gt; &lt;a href="https://github.com/psinglap/websearch-api-eval" rel="noopener noreferrer"&gt;github.com/psinglap/websearch-api-eval&lt;/a&gt;. Clone it, add your keys and run your own queries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask about the results from Claude, ChatGPT or Cursor (MCP):&lt;/strong&gt; add &lt;code&gt;https://websearch-api-eval.psberkeleymba.workers.dev/mcp&lt;/code&gt; as a connector, no sign-in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run it locally, plus live tests with your own keys:&lt;/strong&gt; &lt;code&gt;npx -y websearch-api-eval-mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code plugin:&lt;/strong&gt; &lt;code&gt;/plugin marketplace add psinglap/websearch-api-eval&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dataset:&lt;/strong&gt; &lt;a href="https://huggingface.co/datasets/psinglap/websearch-api-eval" rel="noopener noreferrer"&gt;huggingface.co/datasets/psinglap/websearch-api-eval&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which queries or providers should I add next? I'd especially like ideas for making real-time answer keys reproducible.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>mcp</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
