Web search

Updated at:
Copy as MD

The training data for large language models has a knowledge cutoff date, preventing them from answering real-time questions. Enabling web search lets the model retrieve real-time data and accurately answer time-sensitive questions, such as stock prices, weather forecasts, and breaking news.

Usage

You can enable web search using the three API calls below, each requiring different parameters.

For web search with models such as qwen3.7-plus and qwen3.7-max, use the web search feature of the Responses API.

OpenAI-compatible: Responses API

Add the web_search tool to the tools parameter to enable web search.

The Responses API only supports the Qwen3.7 Max series, Qwen3.6, Qwen3.5, qwen3-max, and qwen3-max-2026-01-23 models.
# Import dependencies and create a client...
response = client.responses.create(
    model="qwen3.7-max",
    input="Hangzhou weather",
    tools=[
        {"type": "web_search"},
        {"type": "web_extractor"},
        {"type": "code_interpreter"}
    ],
    extra_body={"enable_thinking": True}
)

OpenAI-compatible: Chat Completions API

Set enable_search: true to enable web search.

# Import dependencies and create a client...
completion = client.chat.completions.create(
    # Use a model that supports web search.
    model="qwen-plus",
    messages=[{"role": "user", "content": "What is the weather in Hangzhou tomorrow?"}],
    # Since enable_search is not a standard OpenAI parameter, pass it via extra_body when using the Python SDK. For the Node.js SDK, pass it as a top-level parameter.
    extra_body={"enable_search": True}
)

DashScope

Set enable_search: true to enable web search.

# Import dependencies...
response = dashscope.Generation.call(
    # If the DASHSCOPE_API_KEY environment variable is not set, replace the next line with your Model Studio API key (e.g., api_key="sk-xxx",).
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Use a model that supports web search.
    model="qwen-plus",
    messages=[{"role": "user", "content": "What is the weather in Hangzhou tomorrow?"}],
    # Enable web search
    enable_search=True,
    result_format="message"
)

Supported models

International

  • Qwen-Plus

    • Qwen3.7-Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26 and later snapshots (Supported only by the Responses API)

    • Qwen3.6-Plus: qwen3.6-plus, qwen3.6-plus-2026-04-02 and later snapshots (Supported only by the Responses API)

    • Qwen3.5-Plus: qwen3.5-plus, qwen3.5-plus-2026-02-15 and later snapshots

  • Qwen-Flash

    • Qwen3.6-Flash: qwen3.6-flash, qwen3.6-flash-2026-04-16 and later snapshots (Supported only by the Responses API)

    • Qwen3.5-Flash: qwen3.5-flash, qwen3.5-flash-2026-02-23 and later snapshots

  • Qwen-Max

    • Qwen3.7-Max: qwen3.7-max, qwen3.7-max-preview, qwen3.7-max-2026-05-17 and later snapshots (Supported only by the Responses API)

    • Qwen3.6-Max: qwen3.6-max-preview

    • qwen3-max and qwen3-max-2026-01-23

      • In non-thinking mode, the search strategy must be set to agent.

      • In thinking mode, the search strategy must be set to agent or agent_max (which adds web extractor support).

    • qwen3-max-2025-09-23: The search strategy must be set to agent.

  • Qwen-Omni: qwen3.5-omni-plus, qwen3.5-omni-plus-2026-03-15, qwen3.5-omni-flash, qwen3.5-omni-flash-2026-03-15

    The search strategy must be set to agent.

  • Qwen-Omni-Realtime: qwen3.5-omni-plus-realtime, qwen3.5-omni-plus-realtime-2026-03-15, qwen3.5-omni-flash-realtime, qwen3.5-omni-flash-realtime-2026-03-15

    The search strategy must be set to agent.

  • Role-playing: qwen-plus-character, qwen-flash-character

Global

  • Qwen-Max

    • Qwen3.7-Max: qwen3.7-max, qwen3.7-max-2026-05-20 and later snapshots (Supported only by the Responses API)

  • Qwen-Plus

    • Qwen3.7-Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26 and later snapshots (Supported only by the Responses API)

    • Qwen3.6-Plus: qwen3.6-plus, qwen3.6-plus-2026-04-02 and later snapshots (Supported only by the Responses API)

    • Qwen3.5-Plus: qwen3.5-plus, qwen3.5-plus-2026-02-15 and later snapshots

  • Qwen-Flash

    • Qwen3.6-Flash: qwen3.6-flash, qwen3.6-flash-2026-04-16 and later snapshots (Supported only by the Responses API)

    • Qwen3.5-Flash: qwen3.5-flash, qwen3.5-flash-2026-02-23 and later snapshots

The models above support the agent and agent_max search strategies in both thinking and non-thinking modes.

Chinese mainland

  • Qwen-Max

    • Qwen3.7-Max: qwen3.7-max, qwen3.7-max-2026-05-20 and later snapshots (Supported only by the Responses API)

    • qwen3-max and qwen3-max-2026-01-23

      • In non-thinking mode, the search strategy must be set to agent.

      • In thinking mode, the search strategy must be set to agent or agent_max (which adds web extractor support).

    • qwen3-max-2025-09-23: The search strategy must be set to agent.

  • Qwen-Plus

    • Qwen3.7-Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26 and later snapshots (Supported only by the Responses API)

    • Qwen3.6-Plus: qwen3.6-plus, qwen3.6-plus-2026-04-02 and later snapshots (Supported only by the Responses API)

    • Qwen3.5-Plus: qwen3.5-plus, qwen3.5-plus-2026-02-15 and later snapshots

      The agent and agent_max search strategies are supported in both thinking and non-thinking modes.

  • Qwen-Flash

    • Qwen3.6-Flash: qwen3.6-flash, qwen3.6-flash-2026-04-16 and later snapshots (Supported only by the Responses API)

    • Qwen3.5-Flash: qwen3.5-flash, qwen3.5-flash-2026-02-23 and later snapshots

  • Qwen-Omni: qwen3.5-omni-plus, qwen3.5-omni-plus-2026-03-15, qwen3.5-omni-flash, qwen3.5-omni-flash-2026-03-15

    The search strategy must be set to agent.

  • Qwen-Omni-Realtime: qwen3.5-omni-plus-realtime, qwen3.5-omni-plus-realtime-2026-03-15, qwen3.5-omni-flash-realtime, qwen3.5-omni-flash-realtime-2026-03-15

    The search strategy must be set to agent.

  • Role-playing: qwen-plus-character, qwen-flash-character, qwen-flash-character-2026-02-26

Quick start

The following examples show how to query stock information using web search.

OpenAI compatible

The OpenAI-compatible protocol does not support returning search sources in the response.

Python

import os
from openai import OpenAI

client = OpenAI(
    # If the environment variable is not set, provide your Model Studio API key directly, for example: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen-plus",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What is the stock price of Alibaba?"},
    ],
    extra_body={
        "enable_search": True,
        "search_options": {
            # Specify the web search strategy. Only 'agent' is supported.
            "search_strategy": "agent"
        }
    }
)
print(completion.choices[0].message.content)
Sample response
According to the latest market data, Alibaba's stock price in different markets is as follows:

*   US Stock (BABA): The latest price is approximately 159.84 USD.
*   Hong Kong Stock (09988.HK): The latest price is approximately 158.00 HKD.

Please note that stock prices fluctuate in real time, and this information is for reference only.

Node.js

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    // The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});

async function main() {
    const completion = await openai.chat.completions.create({
        model: "qwen-plus",
        messages: [
            { role: "user", content: "What is the stock price of Alibaba?" }
        ],
        enable_search: true,
        search_options: {
            // Specify the web search strategy. Only 'agent' is supported.
            search_strategy: "agent"
        }
    });
    console.log(completion.choices[0].message.content);
}

main();
Sample response
According to the latest market data, Alibaba's stock price in different markets is as follows:

*   US Stock (BABA): The latest price is approximately 159.84 USD.
*   Hong Kong Stock (09988.HK): The latest price is approximately 158.00 HKD.

Please note that stock prices fluctuate in real time, and this information is for reference only.

curl

# The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-plus",
    "messages": [
        {
            "role": "user", 
            "content": "What is the stock price of Alibaba?"
        }
    ],
    "enable_search": true,
    "search_options": {
        "search_strategy": "agent"
    }
}'

DashScope

The DashScope protocol supports setting enable_source to true to include search sources in the response.

Python

import os
import dashscope
# The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"

response = dashscope.Generation.call(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen-plus",
    messages=[{"role": "user", "content": "Alibaba stock price"}],
    enable_search=True,
    search_options={
        # The web search strategy. Only 'agent' is currently supported.
        "search_strategy": "agent",
        "enable_source": True # Specifies whether to return search sources.
    },
    result_format="message",
)
print("="*20 + "search results" + "="*20)
for web in response.output.search_info["search_results"]:
    print(f"[{web['index']}]: [{web['title']}]({web['url']})")
print("="*20 + "response content" + "="*20)
print(response.output.choices[0].message.content)
Sample response
====================search results====================
[1]: [Alibaba(BABA) Stock Price_Quote_Chart - East Money](https://wap.eastmoney.com/quote/stock/106.BABA.html)
[2]: [Alibaba(BABA)_US Stock Quote_Today's Price & Chart_Sina Finance](https://gu.sina.cn/quotes/us/BABA)
[3]: [Alibaba(BABA) Stock Latest Price, Real-time Chart, Price Analysis & Prediction](https://cn.investing.com/equities/alibaba)
[4]: [Alibaba-W (9988.HK) Stock Price, News, Quote & History - Yahoo Finance](https://hk.finance.yahoo.com/quote/9988.HK/)
[5]: [Alibaba(BABA) Stock Price_Quote_Discussion - Xueqiu](https://xueqiu.com/S/BABA)
[6]: [Alibaba(BABA) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Moomoo](https://www.moomoo.com/hans/stock/BABA-US)
[7]: [Alibaba Group Holding Limited (BABA) Stock Price, News, Quote ...](https://finance.yahoo.com/quote/BABA/)
[8]: [Alibaba - Tencent Securities](https://gu.qq.com/usBABA.N)
[9]: [W(09988) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Alibaba - Moomoo](https://www.moomoo.com/hans/stock/09988-HK)
====================response content====================
According to the latest market data, Alibaba's stock price information is as follows:

*   :
    *   Today's opening price: 160.98 USD
    *   Yesterday's closing price: 160.80 USD
    *   Today's high: 161.19 USD
    *   Today's low: 156.20 USD

*   :
    *   Latest quote is approximately: 158.00 - 158.10 HKD
    *   Today's opening price: 156.50 HKD
    *   Previous trading day's closing price: 162.00 HKD
    *   Today's trading range: 156.30 - 158.40 HKD

Java

import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.aigc.generation.SearchOptions;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.common.Role;
import java.util.Arrays;

public class Main {
    // The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
    static {Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";}
    public static void main(String[] args) {
        Generation gen = new Generation();
        Message userMsg = Message.builder()
                .role(Role.USER.getValue())
                .content("Alibaba's stock price")
                .build();

        SearchOptions searchOptions = SearchOptions.builder()
                // Specify the web search strategy. Only 'agent' is supported.
                .searchStrategy("agent")
                // Specifies whether to return search sources.
                .enableSource(true)
                .build();

        GenerationParam param = GenerationParam.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3-max")
                .messages(Arrays.asList(userMsg))
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                .enableSearch(true)
                .searchOptions(searchOptions)
                .build();
        try {
            GenerationResult result = gen.call(param);
            System.out.println("=".repeat(20)+"search results"+"=".repeat(20));
            System.out.println(result.getOutput().getSearchInfo().getSearchResults());
            System.out.println("=".repeat(20)+"response content"+"=".repeat(20));
            System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}
Sample response
====================search results====================
[SearchInfo.SearchResult(siteName=null, icon=null, index=1, title=Alibaba(BABA) Stock Price_Quote_Chart - East Money, url=https://wap.eastmoney.com/quote/stock/106.BABA.html), SearchInfo.SearchResult(siteName=null, icon=null, index=2, title=Alibaba(BABA)_US Stock Quote_Today's Price & Chart_Sina Finance, url=https://gu.sina.cn/quotes/us/BABA), SearchInfo.SearchResult(siteName=null, icon=null, index=3, title=Alibaba(BABA) Stock Latest Price, Real-time Chart, Price Analysis & Prediction, url=https://cn.investing.com/equities/alibaba), SearchInfo.SearchResult(siteName=null, icon=null, index=4, title=Alibaba(BABA) Stock Price_Quote_Discussion - Xueqiu, url=https://xueqiu.com/S/BABA), SearchInfo.SearchResult(siteName=null, icon=null, index=5, title=Alibaba-W (9988.HK) Stock Price, News, Quote & History - Yahoo Finance, url=https://hk.finance.yahoo.com/quote/9988.HK/), SearchInfo.SearchResult(siteName=null, icon=null, index=6, title=Alibaba(BABA) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Moomoo, url=https://www.moomoo.com/hans/stock/BABA-US), SearchInfo.SearchResult(siteName=null, icon=null, index=7, title=Alibaba Group Holding Limited (BABA) - Yahoo Finance, url=https://finance.yahoo.com/quote/BABA/), SearchInfo.SearchResult(siteName=null, icon=null, index=8, title=Alibaba - Tencent Securities, url=https://gu.qq.com/usBABA.N), SearchInfo.SearchResult(siteName=null, icon=null, index=9, title=W(09988) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Alibaba - Moomoo, url=https://www.moomoo.com/hans/stock/09988-HK)]
====================response content====================
According to the latest market data, the stock price for Alibaba is as follows:

*   : The latest price is approximately .
*   : The latest price is approximately .

Please note that stock prices fluctuate in real time, and this information is for reference only.

curl

# The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-plus",
    "input":{
        "messages":[      
            {
                "role": "user",
                "content": "Alibaba's stock price"
            }
        ]
    },
    "parameters": {
        "enable_search": true,
        "search_options": {
            "search_strategy": "agent",
            "enable_source": true
        },
        "result_format": "message"
    }
}'
Sample response
{
  "output": {
    "choices": [
      {
        "finish_reason": "stop",
        "message": {
          "content": "Based on the latest market data, Alibaba's stock price differs because it is listed on both US and Hong Kong stock exchanges:\n\n*   : The latest price is approximately .\n    *   Today's opening price: 160.98 USD\n    *   Today's price range: 156.20 - 161.19 USD\n\n*   : The latest price is approximately .\n    *   Today's opening price: 156.50 HKD\n    *   Today's price range: 156.30 - 158.40 HKD\n\nPlease note that stock prices fluctuate in real time, and this information is for reference only.",
          "role": "assistant"
        }
      }
    ],
    "search_info": {
      "search_results": [
        {
          "index": 1,
          "title": "Alibaba(BABA) Stock Price_Quote_Chart - East Money",
          "url": "https://wap.eastmoney.com/quote/stock/106.BABA.html"
        },
        {
          "index": 2,
          "title": "Alibaba(BABA)_US Stock Quote_Today's Price & Chart_Sina Finance",
          "url": "https://gu.sina.cn/quotes/us/BABA"
        },
        {
          "index": 3,
          "title": "Alibaba-W (9988.HK) Stock Price, News, Quote & History - Yahoo Finance",
          "url": "https://hk.finance.yahoo.com/quote/9988.HK/"
        },
        {
          "index": 4,
          "title": "Alibaba(BABA) Stock Latest Price, Real-time Chart, Price Analysis & Prediction",
          "url": "https://cn.investing.com/equities/alibaba"
        },
        {
          "index": 5,
          "title": "Alibaba(BABA) Stock Price_Quote_Discussion - Xueqiu",
          "url": "https://xueqiu.com/S/BABA"
        },
        {
          "index": 6,
          "title": "Alibaba(BABA) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Moomoo",
          "url": "https://www.moomoo.com/hans/stock/BABA-US"
        },
        {
          "index": 7,
          "title": "W(09988) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Alibaba - Moomoo",
          "url": "https://www.moomoo.com/hans/stock/09988-HK"
        },
        {
          "index": 8,
          "title": "Alibaba Group Holding Limited (BABA) Stock Price, News, Quote & History",
          "url": "https://hk.finance.yahoo.com/quote/BABA/"
        },
        {
          "index": 9,
          "title": "Alibaba - Tencent Securities",
          "url": "https://gu.qq.com/usBABA.N"
        }
      ]
    }
  },
  "usage": {
    "input_tokens": 2004,
    "output_tokens": 203,
    "plugins": {
      "search": {
        "count": 1,
        "strategy": "agent"
      }
    },
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "total_tokens": 2207
  },
  "request_id": "45c231d2-811e-4e04-a361-f2c1909f1dd9"
}

Web search with Responses API

You can enable web search by adding the web_search tool to the tools array of the tools parameter.

This feature is supported only for qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.6-plus-2026-04-02, qwen3.5-plus, qwen3.5-plus-2026-02-15, qwen3.6-flash, qwen3.6-flash-2026-04-16, qwen3.5-flash, qwen3.5-flash-2026-02-23; and for qwen3-max and qwen3-max-2026-01-23 in thinking mode.
For best results, we recommend enabling the web_search, web_extractor, and code_interpreter tools together.
For usage instructions, code examples, and migration guides for the Responses API, see OpenAI-compatible - Responses.
from openai import OpenAI
import os

client = OpenAI(
    # If you have not configured an environment variable, replace the following line with your Model Studio API key: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # This configuration is for the Singapore region. Replace {WorkspaceId} with your actual workspace ID. Configurations vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)

response = client.responses.create(
    model="qwen3.7-max",
    input="Singapore weather",
    tools=[
        {"type": "web_search"},
        {"type": "web_extractor"},
        {"type": "code_interpreter"}
    ],
    extra_body={"enable_thinking": True}
)

print("="*20 + "Response content" + "="*20)
print(response.output_text)

print("="*20 + "Tool call count" + "="*20)
usage = response.usage
if hasattr(usage, 'x_tools') and usage.x_tools:
    print(f"Web search count: {usage.x_tools.get('web_search', {}).get('count', 0)}")
# Uncomment the following lines to view the intermediate output
# for r in response.output:
#     print(r.model_dump_json())
import OpenAI from "openai";

const openai = new OpenAI({
    // If you have not configured an environment variable, replace the following line with your Model Studio API key: apiKey: "sk-xxx",
    apiKey: process.env.DASHSCOPE_API_KEY,
    // This configuration is for the Singapore region. Replace {WorkspaceId} with your actual workspace ID. Configurations vary by region.
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});

async function main() {
    const response = await openai.responses.create({
        model: "qwen3.7-max",
        input: "Singapore weather",
        tools: [
            { type: "web_search" },
            { type: "web_extractor" },
            { type: "code_interpreter" }
        ],
        enable_thinking: true
    });

    console.log("====================Response content====================");
    console.log(response.output_text);

    console.log("====================Tool call count====================");
    console.log(`Web search count: ${response.usage?.x_tools?.web_search?.count || 0}`);

    // console.log(JSON.stringify(response.output[0], null, 2));
}

main();
# This configuration is for the Singapore region. Replace {WorkspaceId} with your actual workspace ID. Configurations vary by region.
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.7-max",
    "input": "Singapore weather",
    "tools": [
        {"type": "web_search"},
        {"type": "web_extractor"},
        {"type": "code_interpreter"}
    ],
    "enable_thinking": true
}'

Billing

Charges for web search consist of two components:

  • model call fees: The web search feature appends retrieved web content to the prompt, increasing the number of input tokens. These tokens are billed at the model's standard rate. For pricing details, see the Model Studio console. When you use the Responses API, the web search tool is billed at the same rate as the agent policy.

  • search policy fees:

    • agent policy:

      • The fee per 1,000 calls is as follows:

        • For the Chinese mainland and global deployment scopes: $0.573411.

        • For the international deployment scope: $10.00.

    • agent_max policy (Limited-time offer):

      This policy covers both the web search and the web extractor tool.

      • Fee per 1,000 calls for the web search tool:

        • For the Chinese mainland deployment scope: $0.573411.

        • For the international deployment scope: $10.00.

      • The web extractor tool is free for a limited time.

Error messages

To troubleshoot errors, see Error codes.