{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "slug": "kagi-search",
    "name": "Kagi Search API",
    "vendor": "Kagi",
    "vendorUrl": "https://kagi.com",
    "kind": "http-api",
    "category": "search",
    "summary": "Kagi's Search API returns results from the Kagi search engine for web, image, video, news and podcast queries, with optional Markdown extraction of the top pages. It is a paid HTTP API in public preview, with a hosted MCP server.",
    "url": "https://www.anchorterminal.com/tools/kagi-search",
    "markdownUrl": "https://www.anchorterminal.com/tools/kagi-search.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/kagi-search.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/kagi-search.json",
    "repo": "https://github.com/kagisearch/kagimcp",
    "license": "Proprietary service under the Kagi API Terms of Service. The MCP server is MIT and the OpenAPI file states Apache-2.0",
    "transports": [
      "http",
      "streamable-http",
      "stdio"
    ],
    "remoteUrl": "https://kagi.com/api/v1/search",
    "packages": [
      {
        "registry": "pypi",
        "name": "kagimcp"
      }
    ],
    "auth": "api-key",
    "authNotes": "Self-serve API key from the portal at kagi.com/api, sent as `Authorization: Bearer \u003ckey\u003e` per the OpenAPI file. Each key can be limited to chosen products and to IP addresses or ranges, and deleted to revoke it. On Family and Team plans only the account owner can open the portal. The hosted MCP server takes the same key as a Bearer header, with no OAuth yet.",
    "pricing": "usage",
    "pricingNotes": "$12 per 1,000 searches and $4 per 1,000 extracted pages, pay as you go, invoiced every 30 days or when usage reaches $100. Prepaid credit and a spending cap are available. No free tier or sandbox. The quick start asks for a Kagi account and a payment method first. Enterprise volume prices are by quote (https://kagi.com/api/pricing, checked 2026-10-09).",
    "priceSummary": "$12 / 1k req",
    "where": "both",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the OpenAPI file, the API docs or the pricing page (checked 2026-10-09).",
      "endpoints": []
    },
    "toolCount": null,
    "popularity": {
      "githubStars": 535,
      "npmWeekly": null,
      "pypiWeekly": null,
      "asOf": "2026-10-09"
    },
    "docsUrl": "https://help.kagi.com/kagi/api/overview.html",
    "openapi": "https://kagi.com/api/docs/_spec/openapi.yaml",
    "capabilities": [
      "web.search",
      "web.fetch",
      "web.extract",
      "search.news",
      "search.images"
    ],
    "tags": [
      "official",
      "hosted",
      "api-key",
      "closed-source",
      "usage-based",
      "openapi",
      "preview",
      "mcp",
      "ip-allowlist",
      "python",
      "typescript",
      "go",
      "rust"
    ],
    "lastRelease": "2026-08-21",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 48.7,
      "grade": "D",
      "agentReady": false,
      "rank": 807,
      "ranked": true,
      "rankOf": 950,
      "categoryRank": 15,
      "methodology": "0.4",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 75,
        "maintenance": 41,
        "payments": 20,
        "reliability": 8,
        "schema": 71,
        "security": 64,
        "transparency": 69
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 8,
          "points": 1.6,
          "reason": "No status page is linked from the API docs, the pricing page, the API terms or the changelog, and we did not type an address for one (0). With no readable incident history the record takes the floor (5). 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 API has been a public preview since 21 May 2026 (0). 8."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 71,
          "points": 11.54,
          "reason": "Public OpenAPI 3.0 file at kagi.com/api/docs/_spec/openapi.yaml, linked from the docs (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 (10). 71."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 75,
          "points": 12.19,
          "reason": "`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 MCP tools set no read-only annotations (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 (11). 75."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 64,
          "points": 11.2,
          "reason": "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 (12). 64."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 20,
          "points": 2.5,
          "reason": "No x402, MPP or L402 (0). $12 per 1,000 searches and $4 per 1,000 extracted pages, published without a login (20). No free tier or trial for the API. The quick start asks for a payment method, and the $5 credit of 21 May 2026 was a one-off for subscribers (0). A person signs up in a browser and creates the key in the portal (0). 20."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 41,
          "points": 3.59,
          "reason": "The last dated API change is the Extract API fix in the changelog of 21 August 2026, 49 days before the check (20). That is the only dated API entry in the last 90 days. The MCP server's last commit is 7 July 2026 (0). 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, and `kagimcp` at 1.0.2 untagged. 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). 41."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 69,
          "points": 6.04,
          "note": "editorial 54, provenance 83",
          "reason": "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). 54."
        }
      ],
      "assessment": {
        "date": "2026-10-09",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "`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 MCP tools set no read-only annotations (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 (11). 75.",
          "maintenance": "The last dated API change is the Extract API fix in the changelog of 21 August 2026, 49 days before the check (20). That is the only dated API entry in the last 90 days. The MCP server's last commit is 7 July 2026 (0). 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, and `kagimcp` at 1.0.2 untagged. 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). 41.",
          "payments": "No x402, MPP or L402 (0). $12 per 1,000 searches and $4 per 1,000 extracted pages, published without a login (20). No free tier or trial for the API. The quick start asks for a payment method, and the $5 credit of 21 May 2026 was a one-off for subscribers (0). A person signs up in a browser and creates the key in the portal (0). 20.",
          "reliability": "No status page is linked from the API docs, the pricing page, the API terms or the changelog, and we did not type an address for one (0). With no readable incident history the record takes the floor (5). 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 API has been a public preview since 21 May 2026 (0). 8.",
          "schema": "Public OpenAPI 3.0 file at kagi.com/api/docs/_spec/openapi.yaml, linked from the docs (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 (10). 71.",
          "security": "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 (12). 64.",
          "transparency": "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). 54."
        },
        "sources": [
          {
            "what": "OpenAPI description (read as the file, not the rendered reference at kagi.com/api/docs, which is script-drawn)",
            "url": "https://kagi.com/api/docs/_spec/openapi.yaml",
            "seen": "2026-10-09"
          },
          {
            "what": "API pricing",
            "url": "https://kagi.com/api/pricing",
            "seen": "2026-10-09"
          },
          {
            "what": "Kagi API Terms of Service",
            "url": "https://kagi.com/privacy/api",
            "seen": "2026-10-09"
          },
          {
            "what": "privacy policy and general terms",
            "url": "https://kagi.com/privacy",
            "seen": "2026-10-09"
          },
          {
            "what": "changelog",
            "url": "https://kagi.com/changelog",
            "seen": "2026-10-09"
          },
          {
            "what": "security.txt",
            "url": "https://kagi.com/.well-known/security.txt",
            "seen": "2026-10-09"
          },
          {
            "what": "Search API help page",
            "url": "https://help.kagi.com/kagi/api/search.html",
            "seen": "2026-10-09"
          },
          {
            "what": "API portal, quick start, legacy API, security, bug bounty, company and search sources pages, read from the docs repository",
            "url": "https://github.com/kagisearch/kagi-docs",
            "seen": "2026-10-09"
          },
          {
            "what": "MCP server source, README and branches",
            "url": "https://github.com/kagisearch/kagimcp",
            "seen": "2026-10-09"
          },
          {
            "what": "Python client source, tags and CI workflow",
            "url": "https://github.com/kagisearch/kagi-api-python",
            "seen": "2026-10-09"
          },
          {
            "what": "TypeScript client README and package.json",
            "url": "https://github.com/kagisearch/kagi-api-typescript",
            "seen": "2026-10-09"
          },
          {
            "what": "npm registry lookup for @kagi/api (404)",
            "url": "https://registry.npmjs.org/@kagi%2fapi/latest",
            "seen": "2026-10-09"
          },
          {
            "what": "RDAP record for kagi.com",
            "url": "https://rdap.verisign.com/com/v1/domain/kagi.com",
            "seen": "2026-10-09"
          }
        ],
        "openQuestions": [
          "The lead gave `Authorization: Bot` and a GET request, as the help page example still shows. The OpenAPI file defines `POST /search` with a Bearer key. Whether v1 accepts both was not tested, since we send nothing to the API",
          "unchecked: whether Kagi has a status page. None is linked from the pages we read, so it is scored as absent. A linked status page with a clean record would raise Reliability by up to 45",
          "unchecked: the rendered API reference at kagi.com/api/docs, which is script-drawn. The OpenAPI file it is built from was read instead",
          "unchecked: issues and discussions on kagisearch/kagi-docs and kagisearch/kagimcp. The GitHub API answered 403 to the issue list and we did not retry",
          "unchecked: the MCP registry, PyPI download counts for `kagimcp`, and the tools the hosted server at mcp.kagi.com lists. The tool definitions were read from the source",
          "unchecked: the date and scope of the Illumant security audit, which is on blog.kagi.com and was not read",
          "The API terms forbid probing, scanning or testing Kagi's systems and reaching the API other than through the documented interface. This matters before any probe is run",
          "The Data Processing Addendum cited by the API terms and the privacy policy is not yet published",
          "The TypeScript client's README says `npm install @kagi/api@1.0.0`, and the registry returned 404 for that package on 9 October 2026"
        ]
      },
      "negative": 0,
      "verdict": "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 has been in public preview since 21 May 2026, with no published rate limits, no status page found and no free allowance, and the terms forbid storing results.",
      "bestFor": "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.",
      "strengths": [
        "Public OpenAPI 3.0 file for `POST /search` and `POST /extract`, with enums, ranges and request and response examples",
        "Each API key can be limited to chosen products and to IP addresses or ranges, and the billing page sets a spending cap in USD",
        "Per-unit prices are public, $12 per 1,000 searches and $4 per 1,000 extracted pages, with pay-as-you-go billing",
        "Searches can carry an inline lens, domain block, lower, raise and pin rules, date and region filters, and extraction of up to 10 result pages",
        "The privacy policy has an API section with retention periods, and says queries are not stored against the account"
      ],
      "weaknesses": [
        "Public preview since 21 May 2026. The API terms say it is under active development with no uptime or service-level commitment",
        "No rate limit numbers are published, and no status page is linked from the docs, pricing, terms or changelog pages we read",
        "No free allowance. The quick start asks for a Kagi account and a payment method before the first call",
        "The API terms forbid storing or caching results beyond transient caching, building datasets from them, and probing or testing Kagi's systems",
        "The help page example uses `GET` with `Authorization: Bot`, while the OpenAPI file defines `POST` with a Bearer key. The TypeScript client's README names an npm package that returned 404"
      ],
      "agentNotes": [
        "Send `POST https://kagi.com/api/v1/search` with a JSON body and `Authorization: Bearer \u003ckey\u003e`, as the OpenAPI file defines. Only `query` is required",
        "Set `limit` to cap results returned. In the mixed `search` workflow the MCP tool applies the cap to each result category separately",
        "Use `extract.count` (1 to 10) only when page text is needed. Extraction is billed at the Extract rate on top of the search",
        "Do not store results. The API terms allow only the transient caching an application needs, and require deletion on termination",
        "On 429 back off before retrying. The response covers both rate limiting and an exhausted usage limit, and no `Retry-After` header is documented"
      ],
      "metrics": {
        "kind": "remote",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "D",
          "methodology": "0.4",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 48.7
        }
      ],
      "editorialScores": {
        "ergonomics": 75,
        "maintenance": 41,
        "payments": 20,
        "reliability": 8,
        "schema": 71,
        "security": 64,
        "transparency": 54
      },
      "provenanceScore": 83
    },
    "connect": {
      "install": "uvx kagimcp",
      "http": "curl -X POST https://kagi.com/api/v1/search \\\n  -H \"Authorization: Bearer $KAGI_API_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"query\":\"steve jobs\",\"workflow\":\"search\"}'",
      "claudeCode": "claude mcp add kagi https://mcp.kagi.com/mcp --transport http --header \"Authorization: Bearer $(read -sp 'API key: ' k; echo $k)\" --scope user",
      "config": {
        "mcpServers": {
          "kagi": {
            "args": [
              "kagimcp"
            ],
            "command": "uvx",
            "env": {
              "KAGI_API_KEY": "YOUR_API_KEY_HERE"
            }
          }
        }
      }
    },
    "letme": {
      "capability": "https://letme.dev/web.search",
      "tool": "https://letme.dev/kagi-search"
    },
    "notable": [
      "The v1 API has two operations, `POST /search` and `POST /extract`, on `https://kagi.com/api/v1`, with HTTP Bearer authentication (https://kagi.com/api/docs/_spec/openapi.yaml)",
      "The Search API opened as a public preview on 21 May 2026, after an invited preview announced on 30 April 2026 (https://kagi.com/changelog)",
      "Search costs $12 per 1,000 requests and Extract $4 per 1,000 pages. Kagi invoices every 30 days or when usage reaches $100 (https://kagi.com/api/pricing)",
      "The API Terms of Service, effective 22 September 2026, forbid storing results beyond transient caching, building datasets, reselling raw results and probing or testing Kagi's systems (https://kagi.com/privacy/api)",
      "Requests can inherit the account's settings, including blocked and promoted sites, when the key has `Inherit account settings in API requests` ticked (https://help.kagi.com/kagi/api/overview.html)",
      "A hosted MCP server at `https://mcp.kagi.com/mcp` takes the API key as a Bearer header. OAuth is not supported yet. The open-source server has two tools, `kagi_search_fetch` and `kagi_extract` (https://github.com/kagisearch/kagimcp)",
      "The legacy v0 Search API (`GET /api/v0/search`, `Authorization: Bot`, $25 per 1,000 queries) is marked deprecated with no end date given (https://help.kagi.com/kagi/api/search-legacy.html)"
    ],
    "area": "web-data",
    "details": [
      {
        "label": "Surface graded",
        "value": "The v1 HTTP API at `https://kagi.com/api/v1`, read from the OpenAPI file the docs link. The hosted MCP server and the open-source `kagimcp` package wrap the same two operations"
      },
      {
        "label": "Index",
        "value": "Kagi says results come from its own web index (Teclis) and news index (TinyGem), calls to other search providers, and sources such as Wolfram Alpha and Wikipedia. No index size is published"
      },
      {
        "label": "Result types",
        "value": "`workflow` is one of search, images, videos, news or podcasts. Responses group results under keys such as `search`, `image`, `video`, `news`, `podcast`, `adjacent_question`, `direct_answer` and `infobox`"
      },
      {
        "label": "Results per query",
        "value": "`limit` 1 to 1,024 and `page` 1 to 10. Without `limit` the API returns everything gathered in one pass"
      },
      {
        "label": "Full text or snippets",
        "value": "Snippets by default. `extract.count` (1 to 10) replaces the snippet of the top results with page Markdown. `POST /extract` takes 1 to 10 HTTPS URLs"
      },
      {
        "label": "Filters",
        "value": "Lens by ID or inline (sites and keywords included or excluded, file type, dates, region), `filters` for region and dates, `safe_search` (on by default), and up to 1,000 domain rules and 1,000 regex rewrite rules"
      },
      {
        "label": "Response format",
        "value": "JSON, or Markdown through `format`, which the reference marks experimental"
      },
      {
        "label": "Answer endpoint",
        "value": "None in v1. FastGPT and the Universal Summarizer are separate APIs, and the docs say the summariser is not yet available in v1"
      },
      {
        "label": "Credentials",
        "value": "API keys created in the portal, each with a name, allowed products, an optional IP allow-list and a delete button. The portal shows use count and last-used time per key"
      },
      {
        "label": "Rate limits",
        "value": "Not published. The terms say limits and quotas apply per plan. 429 covers rate limiting and an exhausted usage limit. Custom rate limits are an enterprise item"
      },
      {
        "label": "Errors",
        "value": "An envelope with `meta.trace` and an `error` array of `code`, `url`, `message` and `location`. The reference says the error documentation URLs currently return 404"
      },
      {
        "label": "Clients",
        "value": "Generated Python, TypeScript, Go and Rust clients on GitHub, last synced 26 May 2026. Python installs from git. `@kagi/api` was not on npm on 9 October 2026"
      },
      {
        "label": "Data retention",
        "value": "Queries are not stored against the account. Load balancer and VM logs are kept 7 days and sampled Sentry errors 90 days. A Data Processing Addendum is not yet published"
      },
      {
        "label": "Contracting entity",
        "value": "Kagi Inc., a Delaware public benefit corporation, per the docs and privacy page. The API terms are under Delaware law and do not name the entity"
      }
    ],
    "unitPrices": [
      {
        "item": "Search",
        "unit": "1k-requests",
        "usd": 12,
        "note": "page extraction inside a search is billed at the Extract rate on top"
      },
      {
        "item": "Extract",
        "unit": "1k-pages",
        "usd": 4,
        "note": "up to 10 URLs a request"
      }
    ],
    "provenance": {
      "legalEntity": "Kagi Inc.",
      "domain": "kagi.com",
      "domainRegistered": "1993-11-18",
      "domainNote": "kagi.com was registered in 1993, long before Kagi Inc. was founded in 2018.",
      "endpointOnVendorDomain": true,
      "terms": "https://kagi.com/privacy/api",
      "privacy": "https://kagi.com/privacy",
      "statusPage": "",
      "changelog": "https://kagi.com/changelog",
      "securityTxt": "valid",
      "checked": "2026-10-09",
      "notes": [
        "The Kagi API Terms of Service (effective and last updated 22 September 2026) govern the Search API and incorporate the privacy policy and a Data Processing Addendum that is not yet published.",
        "The privacy policy at kagi.com/privacy has a Kagi API section added on 22 September 2026. The same page also holds the general Terms of Service.",
        "The API terms do not name a legal entity. The docs' company page gives Kagi Inc., and the privacy page describes Kagi as a Delaware public benefit corporation.",
        "kagi.com/.well-known/security.txt gives security@kagi.com and a bug bounty with a safe harbour policy, and has no Expires field. It is recorded as valid, although RFC 9116 asks for that field.",
        "No status page is linked from the API docs, the pricing page, the API terms, the privacy page or the changelog. We did not type an address for one.",
        "The changelog covers every Kagi product. API entries are a few lines inside those posts.",
        "RDAP for kagi.com gives a registration date of 1993-11-18.",
        "kagi.com/robots.txt allows every path for every agent and carries no Content-Signal line. help.kagi.com/robots.txt answered 404."
      ],
      "score": 83,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Kagi Inc.",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "kagi.com, registered 1993-11-18 (32 years)",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "kagi.com",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "read, states 7 of the 7 things a reader expects, and has 2 clauses that cost points",
          "points": 6,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 4 of the 8 things a reader expects",
          "points": 7,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Status page",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "valid",
          "points": 10,
          "max": 10,
          "state": "ok"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://kagi.com/privacy/api",
          "state": "read",
          "readAt": "2026-10-09",
          "statedDate": "2026-09-22",
          "words": 1436,
          "points": 6,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last Updated: 2026-09-22",
              "says": "Last updated 2026-09-22"
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": true,
              "quote": "…Addendum are the entire agreement between you and Kagi concerning the API, and are governed by the laws of the State of Delaware, U.S.A., excluding its conflict-of-law provisions.",
              "says": "The law of the State of Delaware"
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "THE COLLECTIVE LIABILITY OF KAGI AND THE INDEMNIFIED PARTIES UNDER THESE TERMS WILL NOT EXCEED THE GREATER OF US $500 OR THE TOTAL FEES YOU PAID FOR THE API IN THE TWELVE (12) MONTHS BEFORE THE EVENT GIVING RISE TO THE CLAIM.",
              "says": "Capped at the greater of US $500 and the fees paid in the 12 months before the claim"
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": true,
              "quote": "We may suspend API access for overdue or failed payments until the balance is resolved, and Kagi and its billing providers reserve the right to collect any outstanding payments to the maximum extent permitted by applicable law."
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": true,
              "quote": "If you need something different — a service level commitment, volume pricing, or an exception to a restriction above — email developers@kagi.com and we can set amended terms in a written agreement, which controls where it differs.",
              "says": "Says it gives notice of a change"
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "You may not create a persistent copy of, or a derivative index from, the Kagi search index or other Results, and you may not bulk download, scrape, or archive Results."
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": true,
              "quote": "The API is provided \"as is\" and \"as available,\" without any uptime or service-level commitment unless separately agreed in writing."
            }
          ],
          "toKnow": [
            {
              "key": "terms.automated",
              "label": "Restricts automated access",
              "found": true,
              "quote": "You may not create a persistent copy of, or a derivative index from, the Kagi search index or other Results, and you may not bulk download, scrape, or archive Results.",
              "costsPoints": true
            },
            {
              "key": "terms.benchmark",
              "label": "Restricts benchmarking or competitive use",
              "found": true,
              "quote": "Use Results to train or fine-tune a search index, ranking system, translation or summarization model, or other service that competes with Kagi, or systematically harvest Results to assemble a training or evaluation dataset.",
              "costsPoints": true
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "Storing, caching or building a database of Results is banned beyond the transient caching needed to run the customer's application.",
              "quote": "Store, cache, or build a database of Results beyond the transient caching needed to operate your application."
            },
            {
              "date": "2026-10-08",
              "text": "Customers must not send sensitive personal data through the API, including health, payment, government ID, biometric, children's and precise location data.",
              "quote": "Don't send us data you have no right to send, and don't send sensitive personal data (health, payment, government ID, biometrics, children's data, precise location)."
            },
            {
              "date": "2026-10-08",
              "text": "On termination the customer must stop using the API and delete any cached Results, except limited records the law requires it to keep.",
              "quote": "On termination, your license ends and you must stop using the API and delete any cached Results (except limited records you are legally required to keep)."
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://kagi.com/privacy",
          "state": "read",
          "readAt": "2026-10-09",
          "words": 3239,
          "points": 7,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": false
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": false
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": true,
              "quote": "Reported threads are retained for 30 days and then automatically deleted.",
              "says": "Names a period of 30 days"
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "Kagi uses Apple Maps, Mapbox, Yelp and TripAdvisor, as on-demand third party providers that may be loaded as a part of consuming Maps."
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": false
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": true,
              "quote": "For information about your data protection rights under GDPR, CCPA, and other privacy laws, see our Privacy Rights Addendum."
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": false
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": true,
              "quote": "we're finishing a Data Processing Addendum that covers this in full, including standard contractual clauses for international transfers.",
              "says": "Relies on standard contractual clauses"
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "The general Terms of Service on this page cap Kagi's collective liability at 500 US dollars.",
              "quote": "THE COLLECTIVE LIABILITY OF KAGI AND THE INDEMNIFIED PARTIES UNDER THIS AGREEMENT WILL NOT EXCEED $500 (FIVE HUNDRED DOLLARS)."
            },
            {
              "date": "2026-10-08",
              "text": "Frontend products such as Universal Summarizer may be used only for non-commercial purposes, while API products are licensed for commercial use.",
              "quote": "Frontend products, such as (but not limited to) Universal Summarizer (found here) may only be used for non commercial purposes."
            },
            {
              "date": "2026-10-08",
              "text": "Kagi says the third-party AI model providers it uses do not save data or use it for training whenever possible.",
              "quote": "When using third party AI model providers, we are using privacy-respecting services that do not save the data or use it for training, whenever possible."
            }
          ]
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/kagi-search.json",
    "live": {
      "slug": "kagi-search",
      "probe": {
        "target": "https://kagi.com/api/v1/search",
        "method": "get",
        "lastAt": "2026-10-10T02:07:12.786525149Z",
        "lastOk": true,
        "lastStatus": 404,
        "lastMs": 147,
        "authRequired": false,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 148,
        "p95ms24h": 414,
        "samples24h": 107,
        "samples30d": 107,
        "days": [
          {
            "date": "2026-10-09",
            "probes": 85,
            "ok": 85
          },
          {
            "date": "2026-10-10",
            "probes": 22,
            "ok": 22
          }
        ]
      },
      "versions": [
        {
          "registry": "pypi",
          "name": "kagimcp",
          "version": "1.0.2",
          "released": "2026-07-07",
          "seenAt": "2026-10-09T16:59:52.360116555Z"
        }
      ],
      "githubStars": 535,
      "pypiWeekly": 2305,
      "pages": [
        {
          "url": "https://kagi.com/changelog",
          "kind": "changelog",
          "status": 200,
          "checkedAt": "2026-10-09T18:40:38.488692439Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "9d3c4fa83a20"
        },
        {
          "url": "https://kagi.com/api/pricing",
          "kind": "pricing",
          "status": 200,
          "checkedAt": "2026-10-09T18:40:36.463160765Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "7fa5f456db46"
        },
        {
          "url": "https://kagi.com/privacy",
          "kind": "privacy",
          "status": 200,
          "checkedAt": "2026-10-09T18:40:40.535666583Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "2bfce4b7e89a"
        },
        {
          "url": "https://kagi.com/privacy/api",
          "kind": "terms",
          "status": 200,
          "checkedAt": "2026-10-09T18:40:42.496630879Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "5a5c47392cf0"
        }
      ],
      "updatedAt": "2026-10-10T02:07:12.786525149Z"
    }
  }
}
