Claude Platform Docs
MessagesAlat

Alat pencarian web

Berikan Claude akses ke konten web terkini dengan sumber yang dikutip, pemfilteran dinamis opsional, dan kontrol domain.

Alat pencarian web (web search tool) memberi Claude akses langsung ke konten web real-time, sehingga Claude dapat menjawab pertanyaan dengan informasi terbaru di luar batas pengetahuannya (knowledge cutoff). Respons menyertakan kutipan untuk sumber yang diambil dari hasil pencarian.

Dengan web_search_20260209 dan versi yang lebih baru, Claude dapat menulis dan menjalankan kode yang memfilter hasil pencarian sebelum mencapai "context window" (jendela konteks) (dynamic filtering atau pemfilteran dinamis), sehingga hanya informasi yang relevan yang dipertahankan. Pemfilteran dinamis tersedia pada model Claude 4.6 dan yang lebih baru serta Claude Mythos Preview.

Tersedia tiga versi alat pencarian web:

Contoh-contoh di halaman ini menggunakan web_search_20250305 untuk pencarian dasar dan web_search_20260318 untuk pemfilteran dinamis.

Untuk kelayakan Zero Data Retention pencarian web dan konfigurasi allowed_callers terkait, lihat Alat server.

Untuk dukungan model, lihat Referensi alat.

Cara kerja pencarian web

Saat Anda menambahkan alat pencarian web ke permintaan API Anda:

  1. Claude menentukan kapan harus mencari berdasarkan prompt.
  2. API menjalankan pencarian dan memberikan hasilnya kepada Claude. Proses ini dapat berulang beberapa kali sepanjang satu permintaan.
  3. Di akhir gilirannya, Claude memberikan respons akhir dengan sumber yang dikutip.

Kapan Claude mencari

Claude melakukan pencarian ketika permintaan bergantung pada informasi yang terkini, berubah-ubah, atau berada di luar data pelatihannya:

  • Peristiwa, berita, atau pengumuman terbaru
  • Harga, tarif, skor, atau statistik terkini
  • Informasi tentang organisasi, orang, atau produk tertentu yang mungkin telah berubah
  • Permintaan eksplisit untuk mencari atau menelusuri sesuatu

Claude menjawab langsung tanpa mencari ketika permintaan mengandalkan pengetahuan yang stabil:

  • Fakta yang sudah mapan, matematika, dasar-dasar sains, atau konsep pemrograman
  • Penulisan kreatif atau brainstorming
  • Analisis konten yang sudah disediakan dalam percakapan
  • Giliran percakapan biasa dan sapaan

Pemicuan dapat diarahkan melalui "system prompt" (prompt sistem) Anda: Anda dapat mendorong Claude untuk lebih mudah mencari atau lebih memilih menjawab langsung. Untuk batasan yang tegas, gunakan max_uses untuk membatasi jumlah pencarian untuk setiap permintaan.

Pemfilteran dinamis

Dengan pencarian web dasar, setiap hasil pencarian dimuat ke dalam jendela konteks Claude, dan sebagian besar konten tersebut bisa jadi tidak relevan dengan permintaan. Dengan web_search_20260209 atau yang lebih baru, Claude justru menulis dan menjalankan kode yang memfilter hasil terlebih dahulu, sehingga hanya konten yang relevan yang mencapai jendela konteks. Ini mengurangi penggunaan token pada permintaan yang banyak melakukan pencarian.

Pemfilteran dinamis menjalankan pencarian web dari dalam eksekusi kode: pada web_search_20260209 dan yang lebih baru, field allowed_callers milik alat ini secara default bernilai ["code_execution_20260120"], dan ketika pemfilteran dinamis berjalan, API secara otomatis menyediakan eksekusi kode yang dibutuhkan untuk permintaan tersebut. Anda tidak perlu menambahkan alat eksekusi kode ke tools sendiri. Tidak ada biaya tambahan untuk panggilan eksekusi kode yang dilakukan dengan cara ini di luar biaya token standar.

Untuk memanggil pencarian web secara langsung, tanpa pemfilteran dinamis, atur allowed_callers: ["direct"]. Model yang tidak mendukung pemanggilan alat secara programatik memerlukan pengaturan ini. Tanpanya, API mengembalikan error 400 yang memberi tahu Anda untuk mengaturnya.

Contoh-contoh berikut menggunakan web_search_20260318:

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": "Search for the current prices of AAPL and GOOGL, then calculate which has a better P/E ratio.",
        }
    ],
    tools=[{"type": "web_search_20260318", "name": "web_search"}],
)
print(response)

Pengaturan tingkat organisasi di Claude Console ini hanya berlaku untuk permintaan Messages API. Sesi Claude Managed Agents hanya menggunakan daftar allowed_domains dan blocked_domains per alat pada toolset agen; lihat Membatasi domain pencarian web dan pengambilan web.

Sediakan alat pencarian web dalam permintaan API Anda:

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "What's the weather in NYC?"}],
    tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 5}],
)
print(response)

Definisi alat

Alat pencarian web mendukung parameter berikut:

JSON
{
  "type": "web_search_20250305",
  "name": "web_search",

  // Optional: Limit the number of searches per request
  "max_uses": 5,

  // Optional: Only include results from these domains.
  // Use allowed_domains or blocked_domains, not both.
  "allowed_domains": ["example.com", "trusteddomain.org"],

  // Optional: Never include results from these domains
  "blocked_domains": ["untrustedsource.com"],

  // Optional: Localize search results
  "user_location": {
    "type": "approximate",
    "city": "San Francisco",
    "region": "California",
    "country": "US",
    "timezone": "America/Los_Angeles"
  }
}

Semua versi alat pencarian web menerima allowed_callers, yang mengontrol apakah Claude memanggil pencarian web secara langsung atau dari eksekusi kode melalui pemfilteran dinamis. Pada web_search_20260209 dan yang lebih baru, nilai defaultnya adalah ["code_execution_20260120"], bukan ["direct"]. Lihat Alat server untuk cara mengonfigurasinya. web_search_20260318 dan yang lebih baru juga menerima response_inclusion.

Penggunaan maksimum

Parameter max_uses membatasi jumlah pencarian yang dilakukan. Jika Claude mencoba melakukan lebih banyak pencarian daripada yang diizinkan, web_search_tool_result akan berupa error dengan kode error max_uses_exceeded.

Kueri faktual sederhana biasanya menggunakan 1–3 pencarian; riset komparatif atau multientitas dapat menggunakan 10 atau lebih. Untuk panduan memilih nilai, lihat Alat server.

Pemfilteran domain

Sediakan allowed_domains atau blocked_domains, bukan keduanya. Jika permintaan menyertakan keduanya, API mengembalikan error 400. Entri berupa domain polos dengan path opsional, misalnya example.com atau example.com/blog, tanpa skema.

Untuk aturan pemfilteran domain selengkapnya, lihat Pemfilteran domain di panduan Alat server.

Di Claude Managed Agents, atur field ini pada entri web_search di toolset agen; lihat Membatasi domain pencarian web dan pengambilan web.

Lokalisasi

Parameter user_location memungkinkan Anda melokalisasi hasil pencarian berdasarkan lokasi pengguna. Sediakan setidaknya salah satu dari city, region, country, atau timezone.

  • type: Jenis lokasi (harus approximate)
  • city: Nama kota
  • region: Wilayah atau negara bagian
  • country: Kode negara dua huruf ISO 3166-1 alpha-2. API menolak kode negara yang tidak didukung dengan error 400.
  • timezone: ID zona waktu IANA.

Di Claude Managed Agents, entri web_search pada toolset agen menerima objek user_location dengan field yang sama. API menolak kode country yang tidak didukung dengan error 400 saat Anda membuat atau memperbarui agen, atau saat Anda membuat atau memperbarui sesi yang menyediakan pengaturan tersebut. Lihat Membatasi domain pencarian web dan pengambilan web.

Penyertaan respons

Parameter response_inclusion mengontrol bagaimana blok hasil pencarian muncul dalam respons API ketika hasil tersebut dikonsumsi oleh panggilan eksekusi kode yang telah selesai pada giliran yang sama. Atur "response_inclusion": "excluded" untuk menghilangkan sepenuhnya pasangan blok server_tool_use dan blok hasil bersarang tersebut dari respons, sehingga mengurangi biaya token output untuk alur kerja agentik yang tidak perlu mengembalikan konten pencarian mentah ke klien. Nilai defaultnya adalah "full". Hasil dari panggilan langsung, atau dari panggilan eksekusi kode yang dijeda sebelum selesai, selalu dikembalikan secara penuh agar dapat dikirim kembali pada giliran berikutnya.

JSON
{
  "tools": [
    {
      "type": "web_search_20260318",
      "name": "web_search",
      "response_inclusion": "excluded"
    }
  ]
}

Respons

Berikut contoh struktur respons:

Output
{
  "role": "assistant",
  "content": [
    // 1. Claude's decision to search
    {
      "type": "text",
      "text": "I'll search for when Claude Shannon was born."
    },
    // 2. The search query used
    {
      "type": "server_tool_use",
      "id": "srvtoolu_01WYG3ziw53XMcoyKL4XcZmE",
      "name": "web_search",
      "input": {
        "query": "claude shannon birth date"
      }
    },
    // 3. Search results
    {
      "type": "web_search_tool_result",
      "tool_use_id": "srvtoolu_01WYG3ziw53XMcoyKL4XcZmE",
      "content": [
        {
          "type": "web_search_result",
          "url": "https://en.wikipedia.org/wiki/Claude_Shannon",
          "title": "Claude Shannon - Wikipedia",
          "encrypted_content": "EqgfCioIARgBIiQ3YTAwMjY1Mi1mZjM5LTQ1NGUtODgxNC1kNjNjNTk1ZWI3Y...",
          "page_age": "April 30, 2025"
        }
      ]
    },
    {
      "text": "Based on the search results, ",
      "type": "text"
    },
    // 4. Claude's response with citations
    {
      "text": "Claude Shannon was born on April 30, 1916, in Petoskey, Michigan",
      "type": "text",
      "citations": [
        {
          "type": "web_search_result_location",
          "url": "https://en.wikipedia.org/wiki/Claude_Shannon",
          "title": "Claude Shannon - Wikipedia",
          "encrypted_index": "Eo8BCioIAhgBIiQyYjQ0OWJmZi1lNm..",
          "cited_text": "Claude Elwood Shannon (April 30, 1916 – February 24, 2001) was an American mathematician, electrical engineer, computer scientist, cryptographer and i..."
        }
      ]
    }
  ],
  "id": "msg_a930390d3a",
  "usage": {
    "input_tokens": 6039,
    "output_tokens": 931,
    "server_tool_use": {
      "web_search_requests": 1
    }
  },
  "stop_reason": "end_turn"
}

Contoh ini menunjukkan pencarian langsung. Ketika pencarian berjalan melalui pemfilteran dinamis, respons juga berisi blok hasil alat eksekusi kode, dan setiap pasangan server_tool_use dan web_search_tool_result bersarang membawa field caller yang mengidentifikasi panggilan eksekusi kode yang membuatnya.

Hasil pencarian

Hasil pencarian mencakup:

  • url: URL halaman sumber
  • title: Judul halaman sumber
  • page_age: Kapan situs terakhir diperbarui
  • encrypted_content: Konten terenkripsi yang harus Anda kirim kembali dalam percakapan multi-giliran

Untuk melanjutkan percakapan yang berisi hasil pencarian, kirim kembali blok konten asisten persis seperti yang Anda terima, termasuk encrypted_content setiap hasil. API mendekripsi konten tersebut pada giliran berikutnya untuk memulihkan hasil pencarian dalam konteks Claude. Jika encrypted_content hilang atau dimodifikasi, permintaan gagal dengan error validasi 400.

Kutipan

Kutipan selalu diaktifkan untuk pencarian web, dan setiap web_search_result_location mencakup:

  • url: URL sumber yang dikutip
  • title: Judul sumber yang dikutip
  • encrypted_index: Referensi yang harus dikirim kembali untuk percakapan multi-giliran
  • cited_text: Hingga 150 karakter dari konten yang dikutip

Field kutipan pencarian web cited_text, title, dan url tidak dihitung dalam penggunaan token input maupun output.

Error

Ketika alat pencarian web mengalami error (seperti mencapai "rate limit" (batas laju)), Claude API tetap mengembalikan respons 200 (sukses). Error direpresentasikan di dalam body respons menggunakan struktur berikut:

Output
{
  "type": "web_search_tool_result",
  "tool_use_id": "srvtoolu_a93jad",
  "content": {
    "type": "web_search_tool_result_error",
    "error_code": "max_uses_exceeded"
  }
}

Pada error, content berupa satu objek error, bukan daftar blok hasil. Pencarian yang berhasil tetapi tidak menemukan hasil mengembalikan daftar content kosong, bukan error.

Berikut kode error yang mungkin muncul:

  • too_many_requests: Batas laju terlampaui
  • invalid_tool_input: Parameter kueri pencarian tidak valid
  • max_uses_exceeded: Penggunaan maksimum alat pencarian web terlampaui
  • query_too_long: Kueri melebihi panjang maksimum
  • request_too_large: Permintaan pencarian terlalu besar, biasanya karena daftar filter domain yang panjang
  • unavailable: Terjadi error internal

Stop reason pause_turn

API dapat menjeda giliran pencarian yang berjalan lama dan mengembalikan stop_reason: "pause_turn". Untuk melanjutkan, kirim kembali pesan asisten yang dijeda tanpa perubahan dalam permintaan baru.

Jika Claude memanggil pencarian web dan salah satu alat klien Anda dalam kelompok panggilan alat paralel yang sama, API mengembalikan stop_reason: "tool_use" dan belum menjalankan pencarian. Untuk melanjutkan, kembalikan hasil alat klien, dan API akan menjalankan pencarian pada permintaan berikutnya. Lihat Mencampur alat server dan alat klien dalam satu giliran.

Untuk loop sisi server dan penanganan pause_turn, lihat Loop sisi server dan pause_turn di panduan Alat server.

Caching prompt

Untuk meng-cache definisi alat lintas giliran, lihat Penggunaan alat dengan caching prompt.

Streaming

Dengan streaming diaktifkan, Anda akan menerima event pencarian sebagai bagian dari stream. Akan ada jeda saat pencarian berjalan:

Output
event: message_start
data: {"type": "message_start", "message": {"id": "msg_abc123", "type": "message"}}

event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}}

// Claude's decision to search

event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "web_search"}}

// Search query streamed
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"query\":\"latest quantum computing breakthroughs 2025\"}"}}

// Pause while search executes

// Search results streamed
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "web_search_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": [{"type": "web_search_result", "title": "Quantum Computing Breakthroughs in 2025", "url": "https://example.com"}]}}

// Claude's response with citations (omitted in this example)

Permintaan batch

Anda dapat menyertakan alat pencarian web dalam Messages Batches API. Panggilan alat pencarian web melalui Messages Batches API dikenai harga yang sama dengan panggilan dalam permintaan Messages API biasa.

Untuk melindungi kapasitas bersama, Batches API membatasi permintaan pencarian web per organisasi, sehingga batch besar dengan banyak pencarian mungkin membutuhkan waktu lebih lama untuk selesai. Anda dapat melihat batas laju pencarian web organisasi Anda di halaman Batas laju di Claude Console. Untuk meminta batas yang lebih tinggi, hubungi tim penjualan dari halaman tersebut.

Penggunaan dan harga

Penggunaan web search (pencarian web) dikenakan biaya di luar penggunaan token:

{
  "usage": {
    "input_tokens": 105,
    "output_tokens": 6039,
    "cache_read_input_tokens": 7123,
    "cache_creation_input_tokens": 7345,
    "server_tool_use": {
      "web_search_requests": 1
    }
  }
}

Pencarian web tersedia di Claude API dengan harga $10 per 1.000 pencarian, ditambah biaya token standar untuk konten yang dihasilkan dari pencarian. Hasil pencarian web yang diambil sepanjang percakapan dihitung sebagai input token, baik dalam iterasi pencarian yang dijalankan selama satu giliran maupun dalam giliran percakapan berikutnya.

Setiap pencarian web dihitung sebagai satu penggunaan, terlepas dari jumlah hasil yang dikembalikan. Jika terjadi kesalahan selama pencarian web, pencarian web tersebut tidak akan ditagih.

Langkah selanjutnya

Ambil dan baca konten dari URL tertentu untuk memperkaya konteks Claude dengan konten web langsung.

Bekerja dengan alat yang dieksekusi Anthropic: blok server_tool_use, kelanjutan pause_turn, dan pemfilteran domain.

Direktori alat yang disediakan Anthropic dan referensi untuk properti definisi alat opsional.

Was this page helpful?