Methodology · Web search APIs
How the web search API benchmark is run
Two studies are published together on one results page, and they are specified here as two parts that never mix. Part A is a measurement with confidence intervals. Part B is a structured review of public documents, where no confidence interval applies and a low score means poor disclosure rather than poor practice. Neither part draws conclusions; those are on the results page.
- Documents
- 2
- Providers
- 7 measured · 6 scored
- Price verified
- 2026-09-03
- Scorecard valid until
- 2026-12-02
- Version
- [VERSION] unresolved
ResultsData and reproductionGTM data methodologyShared rubric
Conventions
Both source documents state these verbatim, so they are given once and apply to everything below.
- Dates
- ISO 8601 (YYYY-MM-DD), UTC.
- Currency
- USD. Where a vendor lists another currency, the original is given first and the USD figure is marked as converted, with the conversion date.
- “Verified”
- We retrieved the artifact ourselves on the stated date. A figure taken from a third-party tracker is labelled as such and is never described as verified.
- Conflicts
- Between sources are reported with both values and both sources. We do not silently pick one.
- Prices
- List prices on the stated verification date, and they change without notice.
- Every table cell that carries a number carries the date it was established
- Either inline or by footnote.
Part A · Document A of two
Retrieval benchmark methodology
How we measure whether a web search API returns the source needed to answer a factual question. This is a measurement. Part B covers the reliability scorecard, which is a document review rather than a measurement and uses a different evidence regime.
1 · Scope and intended use
What this measures. One query 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.
What this does not measure. Answer synthesis, content extraction, multi-step agentic retrieval, index freshness, non-English or non-US performance, or anything about the vendor as a business. Every provider is configured to its plainest search endpoint so that the same layer is compared across vendors: no answer APIs, no content add-ons, no deep or multi-step modes, no query rewriting.
Vendor reliability, pricing stability, compliance and procurement posture are out of scope here and are covered in Part B. The two documents use deliberately different provider universes; see section 3.
Who this is for. Engineers selecting a retrieval layer, and anyone auditing our numbers.
2 · Definitions
| Term | Definition |
|---|---|
| Provider result | One search API provider under a single fixed configuration. A provider offering multiple modes may contribute more than one provider result. |
| k | Number of results requested per query. Fixed at 10 throughout. |
| Gold answer | The reference answer string supplied by SimpleQA for a question. |
| Reference URL | A source URL supplied by SimpleQA as supporting evidence for a question. SimpleQA supplies 2–7 per question (mean 3.71). |
| Exact source match | At least one returned URL canonicalises to the same string as at least one reference URL for that question. |
| Same-domain match | At least one returned URL shares a canonicalised registrable domain with at least one reference URL. |
| Canonicalisation | The URL normalisation procedure defined in section 6. Applied identically to both sides of every comparison. |
3 · Universe and inclusion
Seven providers, selected to span the range of index provenance and price in the agent-search market as of the run window: two operators of independent neural or crawled indexes, two aggregators, one browser-company index, one newly launched independent index, and one Google SERP reseller.
| Provider | Rationale for inclusion |
|---|---|
| Exa | Category leader by funding and mindshare; own neural index |
| Brave | Only independent Western index at scale following the Bing API retirement |
| You.com | Aggregator at the low end of the price range |
| Linkup | Own index, EU-based, publishes a reproducible eval harness |
| Serper | Raw Google organic; serves as the Google reference vector |
| Tavily | Highest developer adoption in the category; aggregator |
| Keenable | Newly launched independent index; tests whether a new entrant can compete |
Serper appears in this document and not in Part B. It was excluded from the reliability scorecard after scoring at the floor on all five dimensions, on the grounds that a single all-zero row compresses the visual range without adding information. It is retained here because raw Google organic is the reference point against which every other provider's index independence is read, and removing it would weaken the benchmark. This asymmetry is deliberate. Readers should note that excluding an outlier from the scorecard also narrows the spread reported there, which flatters the remaining six.
4 · Constants
Every value below is held fixed across all provider results. The provider is the only variable.
- k (results per query): 10
- Locale: US, English
- Freshness filter: none
- Domain include/exclude lists: none
- Query text: the SimpleQA
problemfield, verbatim, with no rewriting by us - Query rewriting by the provider: disabled wherever the provider exposes the toggle (see section 9)
- Content or extraction: not requested from any provider
- Answer synthesis: not requested from any provider
- Sample: n = 1,000, seeded and deterministic
- Run window: [RUN_START] unresolved to [RUN_END] unresolved
- Price verification date: 2026-09-03
5 · Dataset
Source. SimpleQA (OpenAI), distributed as a CSV at https://openaipublic.blob.core.windows.net/simple-evals/simple_qa_test_set.csv (mirror: basicv8vc/SimpleQA on Hugging Face). 4,326 rows. Three columns: problem, answer, and metadata. The metadata field is a stringified dict containing topic, answer_type, and urls.
Why this dataset. Each row carries both a short verified answer string and a list of supporting source URLs. That combination makes it usable as an information retrieval test collection, which is not how it is normally used. It also has known reference answers, so no LLM grader is required.
Sampling. n = 1,000, drawn by stratified sampling across the 10 topics × 5 answer types (50 cells), proportional to the distribution of the full 4,326-row set. Maximum topic-share drift between the sample and the full set is 0.10 percentage points. The draw is seeded; the seed is published with the data.
Exclusions. Rows with an empty or unparseable urls field are excluded from source-match metrics and reported separately. [COUNT_EXCLUDED] unresolved rows were excluded on this basis.
Run volume. 7,000 calls (1,000 questions × 7 providers), of which 6,998 succeeded. The two failures are documented in section 10.
6 · Metric 1 — Exact source rate
6.1 Definition
The share of questions where at least one of the ten returned URLs matches at least one of the question's reference URLs, after canonicalisation. Binary per question, averaged over the sample.
6.2 Canonicalisation
Applied identically to returned URLs and reference URLs before comparison:
- Strip all fragments, including text-fragment anchors (
#:~:text=) - Remove tracking parameters (
utm_*, fbclid, gclid, and equivalents) - Lowercase the host
- Drop
www.and m. prefixes - Collapse Wikipedia language subdomains (
en.wikipedia.org, fr.wikipedia.org → wikipedia.org) - Remove trailing slashes
- Preserve meaningful query parameters, so two distinct pages on the same path are not merged
6.3 How to read it
This asks whether an engine surfaces the specific source a human researcher cited for that fact.
6.4 It is a floor, not a ceiling
SimpleQA's reference list is not exhaustive. A provider that returns a different but perfectly good source scores zero on that question. The true “found a usable source” rate is therefore higher than these numbers for every provider.
We report it anyway because it discriminates. The same measurement at domain level puts all seven providers within 2.2 points of each other (94.8–97.0%), which tells you that everyone can find the right site and that the interesting differences are about which page gets surfaced.
6.5 Uncertainty
95% Wilson score intervals. Providers whose intervals overlap are not distinguishable at this sample size, and the report says so rather than ranking them.
6.6 Grader validation
Matching is deterministic string comparison, so there is no model grader and no grader error to estimate. Residual error comes from canonicalisation, not judgement: a redirect, a mobile variant, or an archived copy can produce a false negative.
We hand-adjudicate a random sample of [N_ADJUDICATED] unresolved non-matching results and report the measured false-negative rate of the canonicalisation procedure with a confidence interval. That figure is published alongside the results, not buried here.
7 · Metric 2 — Latency
7.1 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).
7.2 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×. The inflation was not uniform. It tracked the per-provider concurrency we had assigned to respect each vendor's rate limits, and it reordered the ranking — the provider that looked fastest under load was second slowest in isolation, and the reverse.
In-run timings therefore rank our own worker allocation, not vendor speed. They are not used.
7.3 Ordering
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.
7.4 Distribution
Means are reported alongside p50 and p95. Tails vary more than means suggest: one provider's p95 is 3.5× its median where the others sit near 1.5×.
7.5 Caveat
Measured from a single location on a single day. These are relative comparisons under identical conditions, not absolute figures reproducible from a different network.
8 · Metric 3 — Price
8.1 Definition
Vendor list price in USD per 1,000 search requests, verified 2026-09-03. All providers in this benchmark bill per request rather than per token.
8.2 Validation against observed spend
Where a provider exposes billing data, list price is checked against reality:
- Exa reports
costDollarson 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 where they could be checked, announced prices are what we publish.
8.3 Figures of lower confidence
Any rate that could not be read from a live vendor pricing page is marked with ⚠ in every table where it appears, and the reason is stated in the footnote. Currently: Serper, whose public pricing page was not reachable and whose credit packs sit behind signup, so its rate comes from third-party sources. It is also the figure 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.
8.4 Commitment-dependent pricing
Some vendors price by volume. Where a range exists, the pay-as-you-go rate is used for the headline figure and the range is given in the footnote.
9 · Per-provider configuration
All settings are provider defaults except those listed. Every row links to the vendor's own documentation for the endpoint used.
| Provider | Endpoint | Configuration | Docs |
|---|---|---|---|
| Brave | /res/v1/web/search | count=10, result_filter=web, extra_snippets=false | [link] unresolved |
| Exa | /search | numResults=10, useAutoprompt=false, no contents | [link] unresolved |
| Keenable | /v1/search | max_results=10, point-in-time disabled (pinned to current) | [link] unresolved |
| Linkup | /search | depth=standard, outputType=searchResults | [link] unresolved |
| Serper | /search | num=10, page=1, autocorrect=false | [link] unresolved |
| Tavily | /search | max_results=10, search_depth=basic, no answer, no raw content | [link] unresolved |
| You.com | /v1/search | count=10, livecrawl off | [link] unresolved |
Two settings deserve explanation
autocorrect=false on Serper: Google's spell correction would silently rewrite the query, and we would be measuring their rewriter rather than their index.
useAutoprompt=false on Exa: query rewriting is part of what Exa sells, so disabling it is a choice rather than a neutral default. Turning it off measures raw index and ranking; leaving it on measures the product. We report the off configuration as the headline and the delta separately for providers that expose the toggle.
10 · Error and retry handling
Recoverable errors are recorded and remain in published results. These include malformed responses and results the provider returned but could not be parsed.
Transport errors (429, 5xx, connection timeouts) are retried up to [N_RETRIES] unresolved times with exponential backoff. Retried requests are billed by the vendor but counted once in our results, which is the source of the Linkup billing discrepancy noted in section 8.2.
Hard failures are reported rather than dropped. Two You.com calls failed on a documented 50-word query limit. This is a real constraint on long questions, not measurement noise, and those two rows are scored as misses for You.com rather than excluded.
Success rate: 6,998 of 7,000 calls.
11 · Limitations
Stated here in full. Nothing in this list is softened elsewhere on the site.
- 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.
- SimpleQA answers are static by design so nothing here speaks to index freshness — a dimension on which providers are known to diverge sharply from their static-fact performance.
- SimpleQA is public and well-known so it may appear in providers’ own tuning or evaluation sets. We do not filter for this and cannot detect it.
- English-only, US locale, k = 10, single geographic vantage point.
- Latency tails vary more than the means suggest.
- Prices are list prices as of the verification date and change without notice.
- Sampling error At n = 1,000, a proportion near 50% carries a 95% margin of roughly ±3.1 points. Running the full 4,326 rows would tighten this to roughly ±1.5.
12 · Reproducibility and data availability
Every provider response and every intermediate judgement is stored, so scoring rules can be changed and the whole study re-scored offline without re-querying any API.
Published with the results:
- The seeded sample (question IDs)
- Per-provider raw responses
- The canonicalisation implementation
- Per-question match results for both metrics
- Per-call latency and billed cost
The provider configuration is frozen in code. Anyone re-running this should expect drift: we re-ran 10% of the sample at +24h to measure it, and report the observed drift rate.
What has actually shipped, file by file, is on the results page.
13 · Version and revision log
- Version
- [VERSION] unresolved
- Run window
- [RUN_START] unresolved – [RUN_END] unresolved
- Price verification date
- 2026-09-03
- Published
- [PUBLISH_DATE] unresolved
| Version | Date | Change |
|---|---|---|
| [VERSION] unresolved | [DATE] unresolved | Initial publication |
Appendix · Notes for implementation
Content and format requirements for anyone building the UI. No styling guidance. Published because they constrain how the results page is allowed to render these figures.
Part A implementation notes
- Results table. Columns: provider, exact source rate, 95% CI, mean latency, p50, p95, price per 1,000. Every price cell carries the verification date on hover or as a footnote marker. Cells with lower-confidence figures carry ⚠ and a footnote reference that resolves to the reason.
- Confidence intervals are displayed adjacent to every rate, never omitted for space. Providers whose intervals overlap must not be rendered with distinct rank numbers; group them or show the interval bar.
- Footnote markers attach to the number, not to a separate limitations block. Use a consistent symbol set (⚠ lower confidence, † reduced sample, ‡ estimated).
- Per-provider configuration table renders literal parameter strings in monospace and links each row to the vendor's own documentation for the endpoint used.
- Date stamp appears on every table containing a price or a rate: “verified YYYY-MM-DD”.
- Domain-level variant is available as a toggle on the results table rather than a separate view, so the 2.2-point compression is visible in the same frame as the headline spread.
- Serper's row should render normally here. Its absence from Part B is handled in that document, not by hiding it in this one.
Part B · Document B of two
Reliability scorecard methodology
How we score what search API vendors have publicly committed to, across five dimensions. Part A covers the retrieval benchmark, which is a measurement with confidence intervals and uses a different evidence regime.
1 · Scope and epistemic status
What this assesses: what each vendor has publicly committed to, disclosed, or made verifiable, as of the stated verification date.
What this does not assess: whether a vendor will survive, whether its API will still exist in a year, whether its compliance controls actually work, or whether its retrieval is any good. The last of those is Part A.
Three consequences follow, and we state them rather than hoping they go unnoticed:
- No confidence intervals apply. These are ordinal judgements against published anchors, not estimates of a population parameter. A score of 3 is not 3.0 ± anything.
- A low score means poor disclosure, not poor practice. A vendor may hold certifications it has not published, or honour commitments it has never written down. We score the public record because that is what a buyer can act on before signing.
- The scores are reproducible but not automatic. Another reviewer applying these anchors to the same artifacts should reach the same score. Where judgement was required, the section for that dimension says so.
Who this is for. Security, legal, finance and procurement reviewers who can veto a purchase an engineer has already made.
2 · Definitions
2.1 Evidence states
Every cell carries one of three states. The distinction between the second and third is load-bearing.
| State | Meaning |
|---|---|
| Observed | We found the artifact and it is present. |
| Observed-absent | We checked the places it would be and confirmed it is not there. |
| Not disclosed | We could not determine it from public sources. Not the same as confirmed missing. |
2.2 Source grades
Every observed cell also carries a source grade.
| Grade | Meaning |
|---|---|
| Directly verifiable | We retrieved the artifact ourselves and it is independently checkable — a live status page, a published rate limit, a contractual clause. |
| Third-party reported | Sourced from a tracker, press report, or analysis we did not produce. |
| Vendor-claimed | Asserted by the vendor with no independently checkable artifact behind it. A compliance badge with no retrievable report is vendor-claimed. |
A dimension whose score rests mainly on vendor-claimed evidence is weaker than one resting on directly verifiable evidence, even at the same numeric score. The UI must expose this; see the appendix.
2.3 Other terms
- Adverse change
- A price increase, free-tier reduction or removal, or the introduction of a restriction that did not previously apply.
- Grandfathering
- Existing customers retained on prior terms through the end of their term after a change.
- Effective-price drift
- Per-query cost moving without an announced price change, via surcharge stacking, unit redefinition, or depth multipliers.
- Trust center
- A vendor-hosted page purporting to serve compliance artifacts. Its existence is not the same as a retrievable report.
3 · Universe and inclusion
Six providers: Exa, Tavily, Linkup, You.com, Brave Search API, Keenable.
Serper was scored and then excluded. It scored at the floor on all five dimensions. A single all-zero row compresses the visual range of a five-axis chart without adding information, so it was removed from the scorecard.
Both halves of that decision matter, and we state both. Removing an outlier is defensible on presentation grounds. It also narrows the spread across the remaining six, which flatters them. Serper's full scored row is published in the appendix data file so the decision can be checked.
Serper remains in Part A, where raw Google organic serves as the reference point for index independence. The two documents use different universes deliberately.
4 · Scoring model
Scale. Five discrete levels, 0 to 4, per dimension.
Why discrete. Continuous scores imply a precision that document review does not have. Five levels are enough to separate a vendor that publishes nothing from one that publishes everything, without inviting arguments about whether something is a 2.7 or a 2.9.
Why no weighted composite. A single blended number requires weights, and any weighting we chose would encode our judgement about what matters to a buyer we have never met. Weighted composites in adjacent fields — security ratings in particular — have drawn sustained criticism for exactly this: opaque weights and unfalsifiable aggregate scores. We publish five axes and let readers weight them.
Why a pentagon. Five axes render as a shape, and shape is the finding. A vendor strong on compliance and weak on independence looks different from the reverse at a glance, where two numbers on a list do not.
Direction. All five axes are oriented so that higher is better. This required inverting one dimension: what a buyer experiences as dependency risk is scored here as supply independence, so that a larger shape is never ambiguous.
No composite score is published. No weighted composite, total, or overall rank is published. Any weighting would encode our judgement about a buyer we have not met.
5 · Company-age normalisation
A two-week-old company and a five-year-old company with identical thin disclosure are not the same signal.
Rule. Company age at the verification date is recorded for every vendor and rendered adjacent to its scores. It is not a sixth axis, because it is not something a vendor can be good or bad at — it is a modifier on how thin disclosure should be read.
Rule. Where a dimension requires historical evidence that a vendor has not existed long enough to generate, the cell is scored insufficient history rather than 0, and rendered distinctly. Scoring “no price history” as zero would be a category error.
At the current verification date this applies to Keenable's price stability score only.
The published scorecard still carries TODO_VERIFY_FOUNDING_DATE for four vendors, and records as a publication blocker that “the age normalisation rule cannot be applied without them”.
6 · Missing-data policy
Observed-absent scores lower than not-disclosed. A vendor confirmed to lack an SLA is worse than one whose SLA status we could not determine. Collapsing the two would let opacity score better than honesty.
The residual bias is stated rather than solved. This scorecard still systematically favours vendors with the resources to maintain a trust center, a status page and a documentation site. That correlates with size and funding. A small vendor with excellent internal practice and a thin website will score low here, and that is a real limitation of the method, not an artifact we have corrected for.
Non-disclosure is never inferred into a negative. We do not reason that a vendor which does not publish a SOC 2 report probably lacks one.
7 · Dimension — Price stability
What it signals. How much a buyer's cost basis has moved, and how existing customers were treated when it did.
Artifacts checked. Live pricing page; Internet Archive captures of the pricing page across the 24-month window; vendor changelog and blog announcements of pricing changes; billing documentation; terms covering credit expiry and minimum purchase.
Window. Trailing 24 months from the verification date.
Anchors
| Score | Anchor |
|---|---|
| 4 | No adverse change in window, or a documented decrease. Full pricing public without signup. Existing customers honoured through term where a change occurred. |
| 3 | No adverse change, but material effective-price-drift exposure, or a documented pricing-page vs billing-docs discrepancy. |
| 2 | One price increase in window. Pricing public. |
| 1 | Free tier removed or price raised without grandfathering. |
| 0 | Pricing not publicly available without signup, or effective price moved without announcement. |
Known failure mode. Third-party pricing trackers lag and contradict each other in this category. Tracker figures locate a change, never establish one.
8 · Dimension — Supply independence
What it signals. Whether the vendor can be cut off or repriced by an upstream it does not control.
Artifacts checked. Vendor statements on index provenance; presence of a named crawler user-agent in public AI-crawler registries and in major publishers’ robots.txt; disclosed dependencies on third-party LLMs for synthesis; third-party technical analysis of result composition; active litigation involving the vendor or its upstream.
Anchors
| Score | Anchor |
|---|---|
| 4 | Operates its own crawled index. Corroborated by a source other than the vendor. |
| 3 | Claims its own index without external corroboration, or operates its own index in a hybrid architecture with a disclosed third-party dependency. |
| 2 | Aggregates third-party sources, and discloses that it does. |
| 1 | Aggregates third-party sources without disclosing provenance. |
| 0 | Resells a single upstream, with active sector litigation over that relationship. |
Known failure mode. Crawler registries are verified-bot lists, not censuses. Presence of a named crawler is strong evidence; absence is weak evidence of anything.
Planned strengthening. Cross-provider result-set overlap computed offline from stored retrieval-benchmark responses would move several cells from vendor_claimed to directly_verifiable. Not yet run. When it is, this section and the affected scores are versioned.
Direction. Inverted from buyer-facing 'dependency risk' so that higher is better on every axis.
9 · Dimension — Documentation and commitment
What it signals. Whether the vendor has made the operational commitments a production integration depends on.
Method. Count of eight artifacts, present or absent. The most mechanical of the five dimensions. Judgement is limited to whether an artifact meets the stated bar.
Artifacts checked
- Public changelog with an entry in the last 90 days
- Public status page with retained incident history
- Published deprecation or sunset policy stating a notice period
- Published versioning policy gating breaking changes
- Published rate limits and documented 429 behaviour
- SLA stating an uptime percentage with service credits, at any tier
- SDK released in the last 90 days for at least one major language
- No known drift between documentation and observed behaviour
The raw count is published alongside the score, since it is more informative than the mapped value.
Anchors
| Score | Anchor |
|---|---|
| 4 | 8 of 8 artifacts present |
| 3 | 6-7 of 8 |
| 2 | 4-5 of 8 |
| 1 | 2-3 of 8 |
| 0 | 0-1 of 8 |
Known failure mode. The 90-day recency window penalises a mature, stable product with nothing to announce. Raw count is published so readers can disagree.
10 · Dimension — Compliance
What it signals. Whether the vendor clears the first filter of a standard vendor security review.
Artifacts checked. SOC 2 Type II; ISO 27001; live trust center and whether it serves a retrievable report; DPA availability; zero data retention and whether it is default, on request, or enterprise-only; HIPAA with BAA; data residency options; published sub-processor list.
Anchors
| Score | Anchor |
|---|---|
| 4 | SOC 2 Type II and ISO 27001, live trust center, DPA available, zero data retention by default. |
| 3 | SOC 2 Type II, live trust center, zero data retention available. |
| 2 | Certification claimed as a badge with no trust center or retrievable artifact. |
| 1 | Privacy commitments only, no certification evidence. |
| 0 | Nothing disclosed. |
Known failure mode. Least objective of the five. Several scores rest on trust-center existence rather than a retrieved report. Treat as an upper bound.
Read this before citing a compliance score. This is the least objective of the five dimensions. Several scores rest on trust-center existence rather than a retrieved report, which is the difference between a claim and an artifact. Until the verification pass in section 12 is complete, treat compliance scores as an upper bound, and read the source grade on each cell rather than the number alone.
Not assessed. Whether controls function. A SOC 2 Type II report is evidence controls were audited, not that they work for a given use case, and it does not remove sub-processor status or DPA obligations.
11 · Dimension — Procurement maturity
What it signals. Whether an organisation with a procurement function can actually buy this, and how much friction it will meet.
Artifacts checked. MSA availability; DPA availability; invoicing, purchase orders and W-9 versus card-only; listing on AWS, Azure, GCP or IBM Cloud marketplaces; existence of an enterprise tier and what it unlocks; named reference customers and whether they are substantiated case studies or logos; enterprise access controls (SSO, RBAC, IP allowlisting); stated support for security review.
Anchors
| Score | Anchor |
|---|---|
| 4 | Cloud marketplace listing plus enterprise contracting (MSA, DPA, security review). |
| 3 | MSA and enterprise tier with custom terms, no marketplace listing. |
| 2 | Enterprise tier exists, thin verifiable artifacts behind it. |
| 1 | Self-serve with a stated enterprise path. |
| 0 | Card-only self-serve, nothing further. |
Known failure mode. Logo walls counted as unsubstantiated unless corroborated by a case study, joint announcement, or marketplace listing. May understate vendors with enterprise customers under NDA.
12 · Verification protocol
Standing rules.
- A trust center's existence is not a retrieved report. Cells resting on trust-center existence are graded vendor-claimed until an artifact is retrieved.
- A third-party tracker may be used to locate a change, never to establish one.
- Where the vendor's own primary source and a tracker disagree, the primary source wins and the conflict is logged in section 13.
Verification status is published per cell, not per vendor. The data file records, for each cell: the evidence state, the source grade, the source URL, and the retrieval date.
Re-verification cadence. Every 90 days, or immediately on a known event (acquisition, pricing announcement, certification). Price stability and compliance decay fastest.
Expiration. Scores carry a validity date. Past it, the scorecard is marked stale in the UI rather than silently served as current. The current scorecard was verified 2026-09-03 and is valid until 2026-12-02.
13 · Known source conflicts
Conflicts are reported, not resolved by preference. This section is part of the findings, not housekeeping.
Rendered from the published artifact, not from the source document. scorecard.json records revisions dated 2026-09-08 that rewrote three of these entries after a fact check — the source markdown for this section predates them and describes the You.com change in the opposite direction to the record. The artifact is the authority here, and its revision log is reproduced on the results page.
| Position | Source | As of | Status |
|---|---|---|---|
| Search $5 per 1,000 requests; Answers $4 per 1,000 plus $5 per million tokens; per-query rates $0.003 to $0.005 depending on endpoint | vendor announcement | 2026-02-12 | reference_position TODO_BRAVE_ANNOUNCEMENT_URL and the full ISO date are required by the conventions and are still missing. |
| Base plan around $3 per 1,000 | apicostcalc | 2026-08-15 | endpoint_scope Reclassified. Falls inside the $0.003 to $0.005 per-query range and reflects a different endpoint, not a disagreement about price. |
| $4-5 per 1,000 | costbench | 2026-08-17 | endpoint_scope Reclassified. Matches the Answers endpoint rather than Search. |
| Pricing entirely sales-led; no self-serve tiers published | xpay | 2026-05-03 | tracker_error |
| Free forever plan still listed | apicostcalc | 2026-08-17 | tracker_error The free tier was removed in February 2026. |
| Handling | Vendor primary source used. Two of the three original tracker positions were endpoint scope rather than conflict and are reclassified. Two genuine tracker errors remain and are published: the sales-led claim and a free-forever listing that postdates the tier's removal. | ||
| Position | Source | As of | Status |
|---|---|---|---|
| Web Search $6.25 per 1,000 for 1-50 results and $8.00 per 1,000 for 50-100; Contents $10.00 per 1,000 pages | tracker and Archive captures | 2025-10 | superseded Launch pricing. Must be verified against Archive before publication. |
| $5 per 1,000 Web Search, $1 per 1,000 Contents pages | you.com blog | 2026-03-11 | reference_position A reduction, consolidating to a flat rate for up to 100 results. |
| $4 per 1,000 Smart Search, $50 per 1,000 Research, 300-query trial | costbench | 2026-04-23 | tracker_lag |
| Handling | Vendor primary source used. The trackers lagged an announced reduction: the 2026-03-11 change lowered Web Search to a flat $5 per 1,000, and tracker snapshots from 2026-04 to 2026-06 had not caught up. | ||
| Position | Source | As of | Status |
|---|---|---|---|
| $7 already in effect 2026-03-03 | exa.ai changelog | 2026-03-03 | level_not_date The entry announces simplified and lowered pricing. It establishes the level on that date, not the date the level changed. |
| Increase occurred 2026-04 | usagepricing | 2026-06-01 | tracker_snapshot |
| Base Search raised to $7 per 1,000 here | competing record | 2026-07-29 | tracker_snapshot Third position. Postdates the changelog that already quotes $7, so it cannot be the transition date either. |
| Handling | Unresolved. None of the three positions establishes when the rise happened: the changelog fixes a level and the two tracker dates postdate it. The transition must be re-derived from Internet Archive captures of exa.ai/pricing between the 2025 $5 citation and 2026-03-03. Does not change the score, which rests on the rise having occurred inside the window. | ||
| Position | Source | As of | Status |
|---|---|---|---|
| ACU moved from $0.0001 to $0.10 in the same change that lowered per-run caps | usagepricing | 2026-07-14 | not recorded |
| Concurrent reductions in the same 2026-07-14 change: free tier 1,000 to 20,000 requests/month, Agent range $0.025-$2.00 to $0.012-$1.00 with a new Minimal mode, X-high halved to $1.00, in-agent search $0.007 to $0.005 | usagepricing | 2026-07-14 | tracker_reported Tracker sourced. Confirm from a primary source. |
| Handling | A 1000x unit change alongside concurrent reductions across every other line reads as a units redefinition rather than a price move. Kept out of the increase count. Status moves from unresolved to substantiated once the concurrent reductions are confirmed from a primary source. | ||
| Position | Source | As of | Status |
|---|---|---|---|
| Exited stealth 2026-08-25 | TechCrunch | 2026-08-25 | not recorded |
| Funding round closed 2025-11-05 | KuCoin, Crypto Briefing | 2025-11 | not recorded |
| Handling | Both published. Affects the age annotation used in the company-age normalisation rule, not a score. | ||
14 · Right of reply
Before publication, each vendor receives the rows concerning it, the anchors used, and the evidence cited, with [N] unresolved working days to respond.
- Factual corrections with a citable artifact are applied and logged in section 16.
- Disagreements about interpretation are published alongside the score, not merged into it.
- No response is recorded as no response, and does not change a score.
- We do not offer to change a score in exchange for anything, including access, data, or advertising.
Nothing in this process makes a vendor a reviewer of its own row.
This has not been carried out for the published edition. The artifact records right_of_reply.conducted: false, and “Right of reply has not been conducted” is one of the 11 publication blockers it carries. The paragraph above is the policy, not a description of what happened.
15 · Limitations
Stated here in full. Nothing in this list is softened elsewhere on the site.
- Disclosure is not practice. A vendor may honour commitments it has not published, or publish commitments it does not honour.
- The scorecard favours vendors with resources to maintain public documentation surfaces, which correlates with size and funding.
- Compliance is the weakest dimension and currently rests substantially on vendor-claimed evidence.
- Supply independence rests partly on registries that are not censuses, so absence of a crawler listing proves little.
- Six vendors is a small field, and excluding Serper narrows the observed spread.
- The window is 24 months. A vendor with a poor record 30 months ago scores clean here.
- These scores expire. In a category where a free tier was withdrawn and three vendors repriced within one year, a scorecard older than a quarter should not be relied on.
- This is not a prediction. Nothing here estimates the probability that any vendor fails, is acquired, or discontinues its API.
16 · Version, verification date and revision log
- Version
- [VERSION] unresolved
- Verification date
- 2026-09-03
- Valid until
- 2026-12-02
- Published
- [PUBLISH_DATE] unresolved
| Version | Date | Vendor | Change | Reason |
|---|---|---|---|---|
| [VERSION] unresolved | [DATE] unresolved | — | Initial publication | — |
The artifact's own revision log carries further dated entries against individual vendors; it ships in scorecard.json and is summarised on the results page.
Appendix · Notes for implementation
Content and format requirements for anyone building the UI. No styling guidance. Published because they constrain how the scorecard is allowed to render.
Part B implementation notes
- Pentagon. Five axes, fixed order and fixed positions across all vendors so shapes are comparable at a glance: price stability, supply independence, documentation, compliance, procurement. Scale 0–4, gridlines at every integer. All axes oriented higher-is-better.
- Insufficient-history cells render distinctly from zero — a broken outline, an unfilled vertex, or an explicit gap. They must never plot at the origin, and the distinction must be legible without the legend.
- Company age renders adjacent to each pentagon as a plain label (for example, “live 2 weeks”). Not an axis.
- Evidence state is exposed per cell on interaction: observed, observed-absent, or not disclosed. Observed-absent and not-disclosed must be visually distinguishable, since the difference is the whole point of section 6.
- Source grade is exposed per cell alongside the evidence state: directly verifiable, third-party reported, or vendor-claimed. A dimension whose score rests mainly on vendor-claimed evidence should carry a visible marker at the axis level, not only in the cell detail.
- Documentation axis displays the raw artifact count (
n/8) alongside the mapped 0–4 score wherever the score appears. - Every cell links to its source and shows its retrieval date.
- Conflict rows from section 13 surface as an inline marker on the affected cell, not only in a separate section. Both values must be reachable from the marker.
- Staleness. Past the validity date, the scorecard renders a stale state rather than serving the scores as current. The verification date is always visible, never behind an interaction.
- Zero-change rows in the pricing history view — vendors with no adverse change in 24 months — must render as an affirmative state rather than an empty cell. The emptiness is the finding.
- Serper does not appear in the pentagon set. Its scored row is reachable from section 3 in the published data file.
- Do not render a composite score, a total, or an overall rank. If a sort is offered, it sorts by a single named axis and labels which one.
Private evaluation
Run this on your shortlist.
Both procedures are the product. Bring your shortlist and the endpoints you actually call, and we will run them against it.
Schedule a demo