Skip to content

Exa

Web searchREST · exa-rest

Web search and content retrieval built for AI.

Overall score

80.8/100

exa-rest

Measured Oct 5, 2026

Status

Ranked

Complete benchmark. `overall` is a weighted average of the applicable criteria, comparable to other surfaces in the same category and the same rubric version.

Coverage

78% of the rubric

Surfaces
evaluated.

We score a surface, not a product. One product often exposes several, and they are not worth the same.

exa-restrestprimary

78% coverage

80.8/100

Criterion
by criterion.

Measured on exa-rest, rubric v0.2.0. A criterion with no score is not counted as zero: it is excluded and the weights are renormalised.

Offload Valuejudged · weight 15 · Oct 5, 2026

92/100

Exa's search endpoint gives an agent live web retrieval plus crawling, content extraction, highlights, summaries, structured entity enrichment (company financials, funding, web traffic, research citations) and multi-step deep research with synthesis. None of this is reproducible through inference alone: it requires an index of the live web and proprietary crawled data, and the deep/deep-reasoning modes offload multi-step research that would otherwise cost the agent many thousands of tokens and many tool calls. It also supplies grounding citations and structured output matching a supplied JSON schema. This is far beyond CRUD.

Interaction Costmeasured · weight 15 · Oct 5, 2026

100/100

Median over 2 successful run(s): 11618 tokens, 1.5 calls. Ratio to the best in "web-search" (3 surfaces measured, v0.2 scale). Cold, without documentation: 1/1 succeeded.

Error Recoverabilityprobed · weight 15 · Oct 5, 2026

49/100

unknown_endpoint → HTTP 404, clarity 30/100 (field named: no, allowed values: no, RFC 9457: no) · wrong_type → HTTP 400, clarity 75/100 (field named: yes, allowed values: yes, RFC 9457: no) · hallucinated_enum → HTTP 400, clarity 50/100 (field named: no, allowed values: yes, RFC 9457: no) · unknown_field → HTTP 200, clarity 40/100 (field named: no, allowed values: no, RFC 9457: no)

  • https://api.exa.ai/search
    HTTP 402: {"requestId":"49e575a20a2c703cc1b135040c3fd78f","error":"Payment required to access this resource","tag":"X402_PAYMENT_REQUIRED","x402Version":2,"resource":{"url":"https://api.exa.ai/search","descript
  • https://api.exa.ai/nonexistent_resource_xyz
    HTTP 404: {"requestId":"f9fc949512e536d9ccb3324f3be2a3cb","error":"Not found","tag":"NOT_FOUND"}
  • https://api.exa.ai/search
    HTTP 400: {"requestId":"bca754c686287d0f3a7173b07b3259d9","error":"Invalid request body | Validation error: Invalid input: expected number, received string at \"numResults\"","tag":"INVALID_REQUEST_BODY"}
  • https://api.exa.ai/search
    HTTP 400: {"requestId":"900da980ed7c8a9fb45a8792304768d2","error":"Invalid request body | Validation error: Invalid option: expected one of \"neural\"|\"keyword\"|\"auto\"|\"hybrid\"|\"fast\"|\"blue\"|\"deep-re

Doc Legibilitymeasured · weight 12 · Oct 5, 2026

57/100

text/markup ratio 1.4% (weight 30) · rendering without JavaScript undetermined (excluded from the calculation) (weight 25) · machine-readable spec: https://api.exa.ai/openapi.json (weight 25) · llms.txt: https://exa.ai/llms.txt (weight 10) · 2 runnable example(s) (weight 10). Weighted average over 75 points of available sub-criteria.

Auth Frictionmeasured · weight 10 · Oct 5, 2026

90/100

Dedicated x-api-key header, verified by a successful call. Slightly below Bearer: the header name has to be read in the documentation.

  • https://api.exa.ai/search
    HTTP 400: {"requestId":"bca754c686287d0f3a7173b07b3259d9","error":"Invalid request body | Validation error: Invalid input: expected number, received string at \"numResults\"","tag":"INVALID_REQUEST_BODY"}
  • https://api.exa.ai/search
    HTTP 402: {"requestId":"49e575a20a2c703cc1b135040c3fd78f","error":"Payment required to access this resource","tag":"X402_PAYMENT_REQUIRED","x402Version":2,"resource":{"url":"https://api.exa.ai/search","descript
  • https://api.exa.ai/nonexistent_resource_xyz
    HTTP 404: {"requestId":"f9fc949512e536d9ccb3324f3be2a3cb","error":"Not found","tag":"NOT_FOUND"}
  • https://api.exa.ai/search
    HTTP 400: {"requestId":"900da980ed7c8a9fb45a8792304768d2","error":"Invalid request body | Validation error: Invalid option: expected one of \"neural\"|\"keyword\"|\"auto\"|\"hybrid\"|\"fast\"|\"blue\"|\"deep-re

Safety & Reversibilityprobed · weight 10

—/100

If I retry after a timeout, do I charge the customer twice?

Payload Efficiencyprobed · weight 8

—/100

Can I ask for only the fields I need, or do I have to swallow 200 attributes to extract one?

Task Atomicitymeasured · weight 6 · Oct 5, 2026

100/100

Median over 2 successful run(s): 11618 tokens, 1.5 calls. Ratio to the best in "web-search" (3 surfaces measured, v0.2 scale). Cold, without documentation: 1/1 succeeded.

Prior Knowledge Coveragemeasured · weight 5 · Oct 5, 2026

100/100

Median over 2 successful run(s): 11618 tokens, 1.5 calls. Ratio to the best in "web-search" (3 surfaces measured, v0.2 scale). Cold, without documentation: 1/1 succeeded.

Async Compatibilityprobed · weight 2

—/100

If the operation is asynchronous, can I get the result without hosting a web server?

Tool-Native (MCP)binary · weight 2

—/100

Does the vendor publish an official, maintained MCP server?

Runs, verified
never on the agent’s word.

Every row is a real attempt at the category’s canonical task. Success is verified by reading the created resource back.

TaskTokensCallsErrorsDocsResult
find-official-source10,13420withoutverified
find-official-source13,02310withverified
find-official-source10,21320withverified