> ## Documentation Index
> Fetch the complete documentation index at: https://platform.kimi.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# WebSearch Pricing

> Review pricing, billing units, and usage notes for the Kimi web-search and fetch tools.

export const DocTable = ({columns = [], rows = []}) => {
  return <div className="doc-table-wrap">
      <table className="doc-table">
        {columns.length > 0 ? <colgroup>
            {columns.map((column, index) => <col key={index} style={column.width ? {
    width: column.width
  } : undefined} />)}
          </colgroup> : null}
        <thead>
          <tr>
            {columns.map((column, index) => <th key={index}>{column.title}</th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, rowIndex) => <tr key={rowIndex}>
              {row.map((cell, cellIndex) => <td key={cellIndex}>{cell}</td>)}
            </tr>)}
        </tbody>
      </table>
    </div>;
};

## Product Pricing

**Explanation: Prices exclude applicable taxes. Specific tax obligations are subject to local tax regulations and will be calculated at checkout based on your jurisdiction.**

Call web search and fetch capabilities through standalone REST endpoints, billed per call — you are charged only when the request succeeds and returns data:

<DocTable
  columns={[
{ title: "Tool", width: "20%" },
{ title: "Endpoint", width: "26%" },
{ title: "Price", width: "16%" },
{ title: "Billing condition", width: "38%" },
]}
  rows={[
["Web Search Basic", <><code>POST /v1/tools/search</code></>, <>{"$"}0.002 / call</>, <>Request succeeds (HTTP 200) and <code>search_results</code> is non-empty</>],
["Web Search Pro", <><code>POST /v1/tools/search_pro</code></>, <>{"$"}0.003 / call</>, <>Request succeeds (HTTP 200) and <code>search_results</code> is non-empty</>],
["URL Fetch", <><code>POST /v1/tools/fetch</code></>, <>{"$"}0.002 / call</>, <>Request succeeds (HTTP 200) and the returned <code>markdown</code> is non-blank</>],
]}
/>

<Note>
  The three endpoints are independent of each other and billed separately; failed requests or requests that return no results/content are free of charge. For new integrations, please use the REST endpoints above.
</Note>

## Web Search Basic / Web Search Pro Billing Logic

When you call the `/v1/tools/search` or `/v1/tools/search_pro` endpoint, we charge one call fee (\$0.002 per call for Web Search Basic, \$0.003 per call for Web Search Pro) only when both of the following conditions are met:

* The request succeeds with HTTP 200;
* The `search_results` field in the response is non-empty (at least one search result is returned).

Failed requests (invalid parameters, rate limiting, server errors, timeouts, etc.) and successful requests that return no search results are free of charge.

The difference between the two endpoints: Web Search Pro additionally supports restricting results to specific sites via `sites`, constraining the time range via `time_window`, and returns structured content snippets (`chunks`) for each result.

## URL Fetch Billing Logic

When you call the `/v1/tools/fetch` endpoint, we charge one call fee (\$0.002 per call) only when both of the following conditions are met:

* The request succeeds with HTTP 200;
* The `markdown` field in the response is non-blank (page content was successfully extracted).

Failed requests (invalid URL, security risk control, rate limiting, server errors, timeouts, etc.), pages with no extractable content (404 `markdown_not_found`), or empty fetched content are free of charge.

## Built-in Tool \$web\_search Billing Logic (Legacy)

<Note>
  `$web_search` is a built-in tool triggered via `tools` in `/v1/chat/completions`. It is independent of the REST endpoints above and billed separately. This approach is expected to be deprecated on October 20, 2026 — for new integrations, please use the `/v1/tools/search` endpoint or the `web-search` official tool; see the [Web Search guide](/docs/guide/use-web-search).
</Note>

When you add the `$web_search` tool in `tools` and receive a response with `finish_reason = tool_calls` and `tool_call.function.name = $web_search`, we charge a fee of \$0.005 for the `$web_search` call. If the response has `finish_reason = stop`, no call fee will be charged.

Additionally, when using `$web_search`, we still charge for the Tokens generated by the `/chat/completions` interface based on the model size. **It is important to note that when the `$web_search` tool is triggered, the search results are also counted in the Tokens. The number of Tokens occupied by the search results can be obtained from the returned `tool_call.function.arguments`.** For example, if the content of the `$web_search` occupies 4k Tokens, these 4k Tokens will be included in the total Tokens when the caller makes the next call to the `/chat/completions` interface. The total billing Tokens will be:

```text theme={null}
total_tokens = prompt_tokens + search_tokens + completions_tokens
```

*Note: If you stop after triggering the `$web_search` without continuing with `tool_calls`, we will only charge the tool call fee of \$0.005, and the Tokens occupied by the search content will not be billed.*
