Search API retrieval benchmark
The exact queries, environment, commands, normalization fields, pass criteria, and public artifacts used for the Perplexity Search, Exa, and Parallel Search reports.
Exact queries
Every provider received these words unchanged. We did not tune a query after seeing a result.
Find the current Node.js release lines and identify which releases are LTS. Prefer current primary sources from the Node.js project.Expected: nodejs.orgFind the current GitHub-hosted Actions runner images and their included software. Prefer current primary sources from GitHub.Expected: github.com or docs.github.comFind the PostgreSQL versions currently supported by the PostgreSQL project and the official support policy. Prefer current primary sources.Expected: postgresql.orgShared test conditions
Provider-native endpoints were normalized to a shared result shape. Native retrieval modes were documented rather than treated as perfectly equivalent.
- Queries
- English, provider-default geography
- Result limit
- 10 requested
- Repetitions
- 3 per query
- Timeout
- 30 seconds
- Delay
- 1.1 seconds between requests
- Normalized fields
- Title, URL, snippet, published date, updated date
Commands used
Credentials are loaded from a local ignored environment file. They are never placed in commands, prompts, artifacts, or page source.
node scripts/search-agent-bench/run-perplexity.mjs --label launch-v1Environment: PERPLEXITY_API_KEYnode scripts/search-agent-bench/run-exa.mjs --label launch-v1Environment: EXA_API_KEYnode scripts/search-agent-bench/run-parallel.mjs --label launch-v1Environment: PARALLEL_API_KEYA request passes only when retrieval is usable
HTTP success alone does not pass. The normalized output must include enough valid results, sufficient snippet coverage, and a primary source near the top.
Attempt criteria
Case and report criteria
Audit every repetition
Each bundle includes the protocol, exact queries, runner environment, timing, evaluation, and normalized ranked results. Raw responses and provider identifiers stay private.
Published snippets are capped at 280 characters. API keys, account IDs, search IDs, session IDs, raw provider payloads, and rate-limit headers are excluded from the public bundle.