Skip to content
Go back

What Actually Differs Across Search APIs Built for Agents

TL;DR


Every vendor’s search-API docs page reads the same: send a query, get ranked results, ground your agent. Run the same 30 queries through four of them — Exa, Perplexity Search API, Parallel, and Amazon Bedrock AgentCore Web Search — and the docs page stops being the interesting part. What actually differs is filters, content budgets, page-fetch behavior, and transport.

Raw search: all four work, at different prices

ProviderModes availableBase price (per 1,000, first 10 results)
ParallelBasic, Fast, Advanced, TurboFast/Turbo $1; Basic/Advanced $5
ExaAuto, Fast, Instant$7
Perplexity SearchSearch API (separate from Sonar and Agent API)$5, no separate token fee
AgentCore Web SearchNative mode through Gateway$7 queries + $0.005 per 1,000 Gateway invocations

All four returned successful results across ten queries per mode in my own test run. The pricing spread is real, but it’s the smallest difference on this list.

Domain and date filters: three worked, one didn’t — for a reason that had nothing to do with the vendor

ProviderDomain filterDate filter
ExaLive, 60/60 results compliantLive, 40/40 results compliant, none missing
Perplexity SearchLive, 60/60 results compliantLive, 38/38 results compliant, none missing
Parallel BasicLive, 49/49 results compliantLive, 20 compliant, 12 missing publication metadata
AgentCore Web SearchLive as of Sep 12, 6/6 smoke test, 20/20 compliantLive as of Sep 12, 15/15 compliant

AgentCore’s row looked like a missing vendor feature the day I first tested it. It wasn’t. AWS shipped runtime domain and date filtering for Web Search as connector version 1.2.0 three weeks before I ran that test — my own Gateway target was still pinned to 1.1.0, and my adapter only forwarded query text and result count. A version-only update to the target and a small client change closed it the next day. Parallel’s 12 missing dates are a different kind of gap: the filter works, but publication metadata is sometimes absent from what the API returns, which the filter can’t fix.

Content budgets: same idea, three different units

Every provider lets you cap how much text comes back per result, and every provider uses a different unit for it. Parallel takes a flat character limit per result. Exa separates “highlights” from full page text and caps the latter with an optional text.maxCharacters parameter, documented in its API reference. Perplexity sets a per-page token limit that multiplies by requested result count into a total budget, per its Search quickstart. AgentCore’s content shape isn’t configurable in the exposed connector at all — you get its native snippet format or nothing.

None of these numbers are comparable directly. “2,000 characters” and “500 tokens per page” aren’t the same currency, and a side-by-side comparison that treats them as interchangeable is measuring the wrong thing.

Page-fetch: this is where “the same data” stops being true

Parallel Extract ($1 per 1,000 URLs) and Exa Contents ($1 per 1,000 pages) both fetch a specific URL and return its text, capped at 10,000 characters. I fetched the same four URLs through both. Every fetch succeeded and returned nonempty text — and one of those four URLs still returned two different answers.

The URL was a PostgreSQL release page. Exa’s fetched copy showed version 18.4. Parallel’s fetched copy — and the live page itself — showed 18.6. Same URL, same provider category, one stale cache. Neither provider’s fetch failed by any check I ran; the page text was there, nonempty, under the character cap. The content was wrong in one case, and nothing in the API response flagged that.

MCP transport: three different stories under one protocol name

“Supports MCP” turns out to mean three different things:

Three vendors, three answers to “does this have an MCP option,” and none of the three answers is comparable to the others without saying which kind of MCP you mean.

What’s missing

Brave Search and Brave’s LLM Context API remain a placeholder in my own testing — I have pricing from Brave’s documentation but no live search evidence, and no filter behavior established either way. The generated-answer and managed-research products each vendor also sells — Perplexity’s Agent API, Parallel’s Task API, Exa’s Deep and Agent modes — are a different comparison with a different pricing unit, and nothing in this post’s numbers transfers to them. And every live-tested row above is a snapshot: it’s accurate as of when I ran it, not a permanent fact about the vendor, which is exactly what the AgentCore filter row already proved once.

So what

If you’re picking between these four for an agent, the mode you choose and the price per 1,000 queries are the least differentiating facts on the page. The differences that actually change what you can build are whether a filter parameter is honored server-side or dropped, whether the content budget unit matches how much your prompt window can afford, and whether a fetched page is actually current. Test those four things against your own queries before trusting a vendor’s feature-availability page — including this one, which is a snapshot from a specific week, not a permanent spec.


Part 2 of the Search for Agents series. ← Part 1: Search for agents is becoming its own market


Share this post on:


Next Post
Search for Agents Is Becoming Its Own Market