Methodology · Benchmark 01

How we benchmarked seven web-search APIs.

One question in, one ranked list of ten results out. We measure whether that list contains the source needed to answer the question, how fast it comes back, and what it costs.

1,000Questions sampled
7Providers tested
6,998Of 7,000 calls succeeded
10Results per query (k)

Scope

What we measured.

Every provider is configured to its plainest search endpoint, so we are comparing the same layer across vendors. We deliberately do not measure answer synthesis, content extraction, or multi-step agentic retrieval.

No answer APIs

No content add-ons

No deep or multi-step modes

No query rewriting — the query is passed verbatim

Same locale for all seven — US, en

No freshness filter, no domain include or exclude lists

Dataset

SimpleQA, sampled to 1,000.

SimpleQA (OpenAI) is 4,326 short factual questions, each with a known answer and a list of reference source URLs — 2 to 7 per question, mean 3.71.

We drew n = 1,000 with stratified sampling across the 10 topics × 5 answer types, giving 50 cells, proportional to the full distribution.

Maximum topic-share drift between the sample and the full set is 0.10 percentage points. The sample is seeded and deterministic.

Provider configuration

Every endpoint, frozen in code.

ProviderEndpointConfiguration
Brave/res/v1/web/searchcount=10, result_filter=web, extra_snippets=false
Exa/searchnumResults=10, useAutoprompt=false, no contents
Keenable/v1/searchmax_results=10, point-in-time disabled (pinned to current)
Linkup/searchdepth=standard, outputType=searchResults
Serper/searchnum=10, page=1, autocorrect=false
Tavily/searchmax_results=10, search_depth=basic, no answer, no raw content
You.com/v1/searchcount=10, livecrawl off

Why autocorrect=false matters on Serper. Google's spell correction would silently rewrite the query, and we would be measuring their rewriter rather than their index.

The three metrics

How each number is defined.

Metric 01

Exact source rate

Definition. The share of questions where at least one of the ten returned URLs matches one of SimpleQA's gold reference URLs for that question. Binary per question, averaged over 1,000.

Normalization. Before comparison both sides are canonicalized: fragments stripped, tracking parameters removed (utm_*, fbclid, gclid…), host lowercased, www. and m. prefixes dropped, Wikipedia language subdomains collapsed, trailing slashes removed. Meaningful query parameters are preserved, so two distinct pages on the same path are not merged.

How to read it. This asks whether an engine surfaces the specific source a human researcher cited for that fact.

It is a floor, not a ceiling. SimpleQA's reference list is not exhaustive, so a provider that returns a different but perfectly good source scores zero on that question. The true “found a usable source” rate is higher than these numbers for every provider. We report it because it is the metric that actually discriminates: a same-domain variant puts all seven within 2.2 points of each other (94.8–97.0%) — everyone can find the right site, and the interesting differences are about which page gets surfaced.

Confidence intervals are Wilson score intervals at 95%. Providers whose intervals overlap are not distinguishable at this sample size.

Metric 02

Latency

Definition. Mean wall-clock time from request sent to response received, measured with exactly one request in flight globally, over 150 questions — 1,050 sequential calls.

Why it is measured in a separate pass. Timings collected during the main concurrent run are not provider latency. We verified this with a back-to-back A/B: the same providers measured concurrently and then immediately at concurrency 1 differed by 1.5× to 7.2×, and the inflation was not uniform — it tracked the per-provider concurrency we had assigned to respect each vendor's rate limits. That reordered the ranking: the provider that looked fastest under load was second slowest in isolation, and vice versa. In-run timings rank our own worker allocation, not vendor speed, so they are not used.

Providers are visited round-robin per question, in shuffled order, so no provider is systematically measured first and any drift in network conditions is shared evenly.

Caveat. Measured from a single location on a single day. Treat these as relative comparisons under identical conditions, not as absolute figures you will reproduce from a different network.

Metric 03

Price

Definition. Vendor list price in USD per 1,000 search requests, verified 2026-09-03. All seven are billed per request, not per token.

Validation against observed spend. Two providers return billing data in the response body, which lets us check list price against reality:

  • Exa reports costDollars on every call. Measured across all 1,000 calls: $7.00 per 1,000 — matching its advertised rate exactly.
  • Linkup was checked by differencing its credit balance before and after. Observed $5.63 per 1,000 against an advertised $5.00. The gap is our own retry behaviour — retried requests are billed but recorded once — not a pricing discrepancy.

Since announced prices held up, announced prices are what we publish.

One figure is weaker than the others. Serper's public pricing page was not reachable and its credit packs sit behind signup, so its rate comes from third-party sources rather than a live vendor page. It is also the number that most changes the comparison, since it would make Serper the cheapest per call by a wide margin. Treat it as indicative and verify against your own account.

Price depends on commitment for some vendors: Tavily ranges from about $5.00 at high volume to $8.00 pay-as-you-go, and Keenable's 100,000 free requests per month mean this entire study cost nothing there.

Results

All three measurements, side by side.

ProviderExact source rate95% CILatency (mean)$ / 1,000
Exa91.1%89.2–92.71,705 ms$7.00
Brave90.0%88.0–91.7532 ms$5.00
You.com89.1%87.0–90.9672 ms$5.00
Linkup84.8%82.4–86.92,209 ms$5.00
Serper84.4%82.0–86.51,929 ms$1.00
Tavily83.4%81.0–85.62,232 ms$7.50
Keenable75.9%73.2–78.4404 ms$4.00

Serper's price is indicative — see Metric 03.

Three statistically distinct tiers on retrieval: Exa, Brave and You.com overlap each other; Linkup, Serper and Tavily overlap each other; the two groups do not overlap; and Keenable sits clearly below both. Quality and speed are close to uncorrelated — the fastest provider ranks last on retrieval, and the best retriever is fifth of seven on latency.

Limitations

What these numbers do not tell you.

Every benchmark is bounded by its dataset and its conditions. These are the boundaries of this one.

The gold URL list is not exhaustive, so every retrieval number is a floor

SimpleQA was adversarially collected against a frontier model, so questions skew long-tail — this measures difficult-fact retrieval, not head queries

Answers are static by design, so nothing here speaks to index freshness

English-only, US locale, k = 10, single geographic vantage point

Latency tails vary more than the means suggest — Serper's p95 (4,911 ms) is 3.5× its median, where the other six sit near 1.5×

Two You.com calls failed on a documented 50-word query limit — a real constraint on long questions rather than measurement noise

Prices are list prices as of 2026-09-03 and change without notice

Reproducibility

Re-scorable without re-querying.

Every provider response and every intermediate judgement is stored, so the scoring rules can be changed and the whole study re-scored offline without re-querying any API.

The sample is seeded. The provider configuration is frozen in code.

Private evaluation

Run the same test on your workflow.

Bring your requirements and your shortlist. We'll run one free evaluation and show you the evidence behind it.

Schedule a demo