Head to head · Web search · October 2026 research run

Kagi Search API vs Perplexity Search API

Perplexity Search API scores 70.2 (BB) on agent readiness against Kagi Search API's 56.1 (C), and leads in 5 of 7 scored categories. Kagi Search API leads on security & auth and transparency & trust. Both do web search. Perplexity Search API is cheaper for web search, $1 against $12 per 1,000 requests.

Best web search APIs for AI agents · All 308 search comparisons

Which one, for what

Kagi Search API C

Best for An owner who already pays for Kagi and wants its ranking, lenses and domain rules inside an agent, with page text in the same call.

Ahead on

  • Security & auth, 64 against 56
  • Transparency & trust, 74 against 66

Watch for

Public preview since 21 May 2026. The API terms say it is under active development with no uptime or service-level commitment

Perplexity Search API BB

Best for Agents on any model that need raw ranked sources with extracted text at a low per-request price, and teams that want cited answers from the same key through the Agent API.

Ahead on

  • Reliability, 80 against 43
  • Schema & documentation, 89 against 71
  • Agent ergonomics, 85 against 75
  • Payments & pricing, 25 against 20
  • Maintenance & community, 82 against 41

Also in its favour

  • Cheaper for web search, $1 against $12 per 1,000 requests
  • Agent-ready, a grade of BB or better

Watch for

The FAQ says uptime and recovery time are not guaranteed, and the terms carry no SLA

Why the edge

Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.

Maintenance & community Perplexity Search API +41

Kagi Search API 41

The last dated API change is the Extract API fix in the changelog post of 21 August 2026, 75 days before this check. The posts of 10 September and 16 October carry no API item (20). That is the only dated API entry in the 90 days from 6 August (0). The MCP server's repository gained commits on 27 and 28 October 2026 (compact JSON results, readOnlyHint, per-page extraction errors) and a version bump to 1.1.0 with no tag, so no release is shown; PyPI didn't resolve for us. A public changelog that credits user reports, developers@kagi.com, a Discord #api forum and GitHub discussions. We could not read the issue list, since the GitHub API answered 403 (9). Four generated clients last synced on 26 May 2026, Python tagged only as 1.0.0rc3, TypeScript not on npm on 9 October, and kagimcp tagged last as v0.1.5 (8 April 2026). We did not look the server up in the MCP registry (8). The Python client has a generated CI workflow and the MCP server has a lock file but no CI workflow (4). 20 + 0 + 9 + 8 + 4 = 41.

Perplexity Search API 82

Read as a closed service with official SDKs and an open-source MCP server. perplexityai 0.46.1 on PyPI on 23 October 2026 and the MCP server's last commit on 21 October, with changelog entries into November 2026 (30). In the 90 days from 8 August, perplexityai 0.43.7 to 0.46.1 (six releases from 2 October), MCP server 1.2.1 (27 August) and 1.3.0 (25 September, Fast Search on perplexity_search), and Fast Search itself in September (20). A changelog with several entries a month, a community forum with a bug-report category, a GitHub discussion repository and api@perplexity.ai. MCP issue reply times weren't read (10 of 15). The MCP server is in the official registry under the domain-verified ai.perplexity namespace, and the Python and TypeScript SDKs are current (15). The MCP repository runs tests in CI and validates its plugin manifests. Its 1.4.0, prepared on 16 October, is not on npm, which still serves 1.3.0, and the registry's latest entry is 1.2.1 of 27 August (7 of 10). 30 + 20 + 10 + 15 + 7 = 82.

Reliability Perplexity Search API +37

Kagi Search API 43

Status page at status.kagi.com (Instatus), found through a web search on 4 November, with a Kagi API group of nine regional components such as [API] us-east4 and [API] europe-west2, and history back to 2025 (20). In the 90 days from 6 August its feed and incident list show [API] incidents on single regions only. us-central1 on 12 September (1 hour 3 minutes), 19 September, 12 October and 19 October (2 to 3 minutes each), europe-west2 on 19 October (1 minute) and 20 October (8 hours 11 minutes, the region taken out of the global load balancer), asia-east2 on 30 September (4 minutes), australia-southeast1 on 11 September (1 minute) and asia-southeast1 on 7 August (about a minute). Each hit one region of nine, so all read as partial and the record is minor incidents only (20). The six 'API outage' entries (10, 20 and 26 August, two on 14 October and 22 October, 5 to 21 minutes each) name the API component of the Kagi Assistant group, not the Search API, and the 27 September database maintenance had an announced window. No rate limit numbers are published. The terms say only that limits and quotas apply per plan (0). The OpenAPI file documents 429 as 'Rate limited or usage limit exhausted' with no Retry-After header or backoff guidance. The calls are read-only, and Kagi's own MCP server retries 429 and 5xx twice by default (3). The pricing page lists SLAs under Enterprise by quote, and the API terms say there is no uptime or service-level commitment unless agreed in writing (0). The OpenAPI file still describes a preview period (0). 20 + 20 + 0 + 3 + 0 + 0 = 43.

Perplexity Search API 80

Graded on the hosted lines, for POST /search and the hosted MCP server. status.perplexity.com, on incident.io since 10 September 2026, has an API component with an RSS feed and a JSON summary. There is no separate Search component (20). In the 90 days from 8 August the feed lists 'Investigating API issue' on 13 August, resolved with no detail, a usage-based billing issue on 3 September, and on 9 October elevated errors on the website, app and Computer, where the API 'remained operational throughout'. Minor only, with the caveat that history before the migration may be incomplete (20). The Search API is limited to 50 query units a second with a burst of 50 on every tier, and the other APIs publish QPS and token limits per tier (15). 429 carries Retry-After and an error.type, the SDKs retry 429 and 5xx twice honouring Retry-After, the Search best-practices page shows backoff, and failed or rate-limited searches are not billed. Searches have no side effects (15). The FAQ says Perplexity does not guarantee uptime, failure frequency or recovery time, and the terms carry no SLA (0). No beta label on the Search API, launched on 25 September 2025 (10). 20 + 20 + 15 + 15 + 0 + 10 = 80.

Schema & documentation Perplexity Search API +18

Kagi Search API 71

Public OpenAPI 3.0 file at kagi.com/api/docs/_spec/openapi.yaml, linked as 'OpenAPI Spec' from the API overview page (25). No llms.txt on kagi.com or help.kagi.com, both 404. The docs' Markdown source is in a public GitHub repository, which is not the same as serving it to agents (0). Parameter descriptions say what each does and which option wins when lens, filters and query operators overlap, and the MCP tool says when to pick each workflow (14). Enums for workflow, format, time_relative and rule kinds, ranges on page, limit, timeout and extract.count, and one required field. Result props and meta are open objects (13). Three request examples with full responses and one 401 example. The error envelope is typed, but there is no list of error codes, and the file says its error documentation URLs return 404 for now (9). The path carries /v1 and v0 is documented as legacy. The changelog is product-wide, with API items on 21 May, 16 June and 21 August 2026 and none in the 10 September or 16 October posts (10). 25 + 0 + 14 + 13 + 9 + 10 = 71.

Perplexity Search API 89

OpenAPI 3.1.0 at docs.perplexity.ai/openapi.json describes POST /search with typed request and response schemas, listed in llms.txt (25). llms.txt indexes every page, each with a Markdown twin (10). The overview says what a result holds, that snippets can be empty, when to use the Search API instead of the Agent API, and that it takes queries not URLs and does not re-fetch pages (19 of 20). search_type is an enum, max_results, max_tokens and max_tokens_per_page carry minimum and maximum, country and language codes carry lengths, and query is a string or an array. The recency filter is an enum in the docs, and date filters are MM/DD/YYYY strings (14 of 15). Python, TypeScript and cURL examples with a recorded response. The spec documents only 200 and 422 for /search, and status codes are listed on the SDK error-handling page and the rate-limit page rather than for Search (11 of 15). A public changelog with several entries a month, dated by month only, and an unversioned /search path (10 of 15). 25 + 10 + 19 + 14 + 11 + 10 = 89.

Agent ergonomics Perplexity Search API +10

Kagi Search API 75

limit caps results, extraction of page text is opt-in, snippet length follows an account setting, and an experimental Markdown response format exists. The MCP server has two tools (22). page 1 to 10, limit 1 to 1,024, lens and filters for domains, keywords, file type, dates and region (20). Errors return a namespaced code, a message, the field location and a trace ID, but no code catalogue is published and the linked error pages are not live (12). Both operations are read-only, so a retry is safe, though the docs do not say so and failed-call billing is stated only for extraction. The released MCP server sets no read-only annotations. A commit of 27 October adds readOnlyHint to its source with an untagged 1.1.0 version bump, not yet shown as released (10). Only query is required and defaults are stated. Generated clients exist for Python, TypeScript, Go and Rust, installable from GitHub. @kagi/api returned 404 on npm on 9 October (11). 22 + 20 + 12 + 10 + 11 = 75.

Perplexity Search API 85

max_results 1 to 20, max_tokens and max_tokens_per_page cap the extracted text, and results are title, url, snippet and two dates. The MCP server has four tools (23 of 25). Domain, language, recency, publication and update date filters and country, with up to five queries in one request. No pagination or offset (16 of 20). 429 bodies name the limit hit, the SDKs map status codes to typed errors, and 402 marks an empty balance. Search-specific error bodies beyond 422 validation are not documented (13 of 20). Searches only read, failed and rate-limited requests are not billed, and the MCP server sets readOnlyHint true, destructiveHint false and idempotentHint false on every tool (18 of 20). Only query is required. Official Python and TypeScript SDKs, a CLI and a Python Search SDK (15). 23 + 16 + 13 + 18 + 15 = 85.

Security & auth Kagi Search API +8

Kagi Search API 64

Several named keys an account, each limited to chosen products and optionally to IP addresses or ranges, revoked by deleting. The v1 key travels only in the Authorization header. No expiry or OAuth (27). The API only reads. Per-key product limits and a spending cap in USD narrow what a leaked key can do (16). Search and Extract return third-party page text, and we found no prompt-injection guidance in the reference, the docs or the MCP README (2). The portal shows use count and last-used time per key and requests and cost per day per API, and every response carries a trace ID. No per-call log (7). security.txt with a contact, a bug bounty with a safe harbour policy, and an independent audit by Illumant cited on the security page, whose date we did not read. No SOC 2 or ISO 27001 statement found. security.txt re-read on 4 November (12). 27 + 16 + 2 + 7 + 12 = 64.

Perplexity Search API 56

Project API keys, shown once, revocable, and generated and revoked through two documented endpoints with a rotation guide. No per-key scopes or spending limits were found. The hosted MCP server also takes Sign in with Perplexity (OAuth). Keys go in the Authorization header only (22 of 30, as on the Decisions API listing). Search only reads, and MCP clients can disable tools, but any key reaches every API on the account, including the Agent API's sandbox and MCP tools (8 of 20). Snippets are third-party page text, and no guidance on treating them as untrusted was found in the docs, the MCP server or its SECURITY.md (0 of 15). Responses carry a request id, and the console shows usage by key. The Audit API covers enterprise organisations' web app events with its own keys, not API calls (8 of 15). security.txt valid until 31 December 2027 linking a security page, a SOC 2 Type II report, a 2025 HIPAA gap assessment and a CAIQlite listed on the trust centre, and a SECURITY.md on the MCP server that takes private reports through GitHub advisories or security@perplexity.ai. The trust centre is drawn by script and wasn't read (18 of 20). 22 + 8 + 0 + 8 + 18 = 56.

Transparency & trust Kagi Search API +8

Kagi Search API 74

Closed service with clear API terms dated 22 September 2026. The MCP server is MIT and the OpenAPI file states Apache-2.0 (18). The privacy policy's API section agrees with the API terms. Queries are not stored against the account, load balancer and VM logs are kept 7 days and sampled Sentry errors 90 days. The Data Processing Addendum both documents cite is not yet published (23). v0 is marked deprecated with no end date, and the terms promise reasonable notice of breaking changes only where practicable (5). The privacy page names the payment processors and Sentry, the FAQ names GCP as the hosting provider and the docs name search sources, but there is no subprocessor list and no data locations (8). 18 + 23 + 5 + 8 = 54.

Perplexity Search API 66

Closed service under terms naming Perplexity AI, Inc. and California law. The MCP server is MIT and the SDKs Apache-2.0 (18 of 30). The terms and DPA say Customer Content and personal data don't train Perplexity's models, the DPA deletes personal data within 30 days of the service ending, and the Privacy and Security page says retention varies by API and zero data retention is not the default. The DPA also says Perplexity Search may follow different data terms, which weren't found, and no retention period for search queries is stated (15 of 30). Sonar Chat Completions support ended on 27 September 2026 with a migration guide and requests reformulated rather than refused, and sonar-reasoning was removed on 15 December 2025 with a named replacement. Notices are dated by month and there is no standing notice period beyond the terms' 30 days for termination (10 of 20). A sub-processor list on the trust centre, which is drawn by script and wasn't read, ten business days' notice of new non-model subprocessors, and SCCs for EU and UK transfers. No data location is stated (8 of 20). 18 + 15 + 10 + 8 = 51.

Score by category

CategoryWeight this runKagi Search APIPerplexity Search APIEdge
Reliability16%204380Perplexity Search API +37
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.27189Perplexity Search API +18
Agent ergonomics13%16.27585Perplexity Search API +10
Security & auth14%17.56456Kagi Search API +8
Payments & pricing10%12.52025Perplexity Search API +5
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.84182Perplexity Search API +41
Transparency & trust7%8.87466Kagi Search API +8
Negative events≤1500
TotalC 56.1/100BB 70.2/100

Facts side by side

FactKagi Search APIPerplexity Search API
KindHTTP APIHTTP API
VendorKagiPerplexity
Hosted endpointhttps://kagi.com/api/v1/searchhttps://api.perplexity.ai/mcp
TransportsHTTP, Streamable HTTP, stdioStreamable HTTP, stdio
AuthAPI keyOAuth or key
PricingPay per usePay per use
Price for web search$12 per 1,000 requests$1 per 1,000 requests
x402nono
LicenceProprietary service under the Kagi API Terms of Service. The MCP server is MIT and the OpenAPI file states Apache-2.0Proprietary service under the Perplexity API Terms of Service. The MCP server is MIT and the official SDKs Apache-2.0
Tools exposednone4
Read-only variant documentednono
llms.txtnoyes
MCP registrynot listedai.perplexity/mcp-server
Last release2026-08-212026-10-23
Terms last updated2026-09-22couldn't be read
Privacy policy last updatedno date givencouldn't be read
Customer content may train modelsnot found in the textcouldn't be read
Terms restrict automated accessyescouldn't be read
Terms restrict benchmarkingyescouldn't be read
Terms or service can change without noticenot found in the textcouldn't be read
Arbitration or class-action waivernot found in the textcouldn't be read
Popularity535 starsnone

How the scores have moved

Verdicts

Kagi Search API

A public OpenAPI file, typed filters and API keys that can be limited by product and IP address make the API simple to call, at $12 per 1,000 searches. It is still a public preview, with no published rate limits and no free allowance, and the terms forbid storing results. Its status page logged only regional incidents since August.

Perplexity Search API

Raw ranked results with token-capped page text from Perplexity's own index, $5 per 1,000 requests or $1 with Fast Search, an OpenAPI description and a hosted MCP server with read-only annotations. Uptime is not guaranteed, there is no free allowance, keys carry no scopes, and no guidance on untrusted page text was found.

Before you call either

Kagi Search API

  1. Send POST https://kagi.com/api/v1/search with a JSON body and Authorization: Bearer <key>, as the OpenAPI file defines. Only query is required
  2. Set limit to cap results returned. In the mixed search workflow the MCP tool applies the cap to each result category separately
  3. Use extract.count (1 to 10) only when page text is needed. Extraction is billed at the Extract rate on top of the search
  4. Do not store results. The API terms allow only the transient caching an application needs, and require deletion on termination
  5. On 429 back off before retrying. The response covers both rate limiting and an exhausted usage limit, and no Retry-After header is documented. Check status.kagi.com for regional incidents

Perplexity Search API

  1. Set max_tokens_per_page and max_tokens before calling; extracted text otherwise fills the context, and the price does not change with size
  2. Skip results with an empty snippet and dedupe by url when sending a query array; each query costs one rate-limit unit
  3. Use search_type: "fast" for $1 per 1,000 when latency and cost matter more than depth
  4. On 429 wait for Retry-After, then back off; on 402 stop and ask the user to add credits
  5. Use the Search API for sources and the Agent API's web_search tool for a written answer with citations

Questions

Which is better for AI agents, Kagi Search API or Perplexity Search API?

Perplexity Search API scores 70.2 (BB) on agent readiness against Kagi Search API's 56.1 (C), and leads in 5 of 7 scored categories. Kagi Search API leads on security & auth and transparency & trust.

Which is cheaper for web search, Kagi Search API or Perplexity Search API?

Perplexity Search API, at $1 per 1,000 requests against $12 per 1,000 requests for Kagi Search API. These are the vendors' published prices for the job.

Do Kagi Search API and Perplexity Search API need an API key?

Kagi Search API needs an API key. Perplexity Search API takes an API key or an OAuth sign-in.

Can an agent call Kagi Search API and Perplexity Search API without installing anything?

Yes. Kagi Search API has a hosted endpoint at https://kagi.com/api/v1/search and Perplexity Search API at https://api.perplexity.ai/mcp.

Other comparisons with Kagi Search API or Perplexity Search API

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.