Alat pencarian web memberikan Claude akses langsung ke konten web secara real-time, memungkinkannya menjawab pertanyaan dengan informasi terkini yang melampaui batas pengetahuannya. Respons mencakup 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 jendela konteks (pemfilteran dinamis), sehingga hanya informasi yang relevan yang disimpan. Pemfilteran dinamis tersedia dengan Claude 4.6 dan model yang lebih baru serta Claude Mythos Preview.
Tiga versi alat pencarian web tersedia:
web_search_20250305: pencarian web dasarweb_search_20260209: menambahkan pemfilteran dinamisweb_search_20260318: menambahkan kontrol penyertaan respons untuk alur kerja agentikContoh-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.
Saat Anda menambahkan alat pencarian web ke permintaan API Anda:
Claude melakukan pencarian ketika permintaan bergantung pada informasi yang terkini, berubah, atau berada di luar data pelatihannya:
Claude menjawab langsung tanpa mencari ketika permintaan mengandalkan pengetahuan yang stabil:
Pemicuan dapat diarahkan melalui prompt sistem Anda: Anda dapat mendorong Claude untuk lebih sering mencari atau lebih memilih menjawab langsung. Untuk batasan yang ketat, gunakan max_uses untuk membatasi jumlah pencarian pada setiap permintaan.
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 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 sendiri alat eksekusi kode ke tools. Tidak ada biaya tambahan untuk panggilan eksekusi kode yang dilakukan dengan cara ini selain biaya token standar.
Untuk memanggil pencarian web secara langsung, tanpa pemfilteran dinamis, atur allowed_callers: ["direct"]. Model yang tidak mendukung pemanggilan alat secara terprogram memerlukan pengaturan ini. Tanpa pengaturan tersebut, API mengembalikan error 400 yang memberi tahu Anda untuk mengaturnya.
Contoh berikut menggunakan web_search_20260318:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-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)Sediakan alat pencarian web dalam permintaan API Anda:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-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)Alat pencarian web mendukung parameter berikut:
{
"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 default-nya adalah ["code_execution_20260120"] alih-alih ["direct"]. Lihat Alat server untuk cara mengonfigurasinya. web_search_20260318 dan yang lebih baru juga menerima response_inclusion.
Parameter max_uses membatasi jumlah pencarian yang dilakukan. Jika Claude mencoba melakukan lebih banyak pencarian dari 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 dalam memilih nilai, lihat Alat server.
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 lengkap, lihat Pemfilteran domain di panduan Alat server.
Parameter user_location memungkinkan Anda melokalkan hasil pencarian berdasarkan lokasi pengguna. Sediakan setidaknya salah satu dari city, region, country, atau timezone.
type: Jenis lokasi (harus approximate)city: Nama kotaregion: Wilayah atau negara bagiancountry: Kode negara dua huruf ISO 3166-1 alpha-2. API menolak kode negara yang tidak didukung dengan error 400.timezone: ID zona waktu IANA.Parameter response_inclusion mengontrol bagaimana blok hasil pencarian muncul dalam respons API ketika hasil tersebut dikonsumsi oleh panggilan eksekusi kode yang telah selesai dalam giliran yang sama. Atur "response_inclusion": "excluded" untuk menghapus sepenuhnya pasangan blok server_tool_use dan hasil yang bersarang tersebut dari respons, sehingga mengurangi biaya token output untuk alur kerja agentik yang tidak perlu mengirim kembali konten pencarian mentah ke klien. Nilai default-nya 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.
{
"tools": [
{
"type": "web_search_20260318",
"name": "web_search",
"response_inclusion": "excluded"
}
]
}Berikut adalah contoh struktur respons:
{
"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 yang bersarang membawa field caller yang mengidentifikasi panggilan eksekusi kode yang membuatnya.
Hasil pencarian mencakup:
url: URL halaman sumbertitle: Judul halaman sumberpage_age: Kapan situs terakhir diperbaruiencrypted_content: Konten terenkripsi yang harus Anda kirim kembali dalam percakapan multi-giliranUntuk melanjutkan percakapan yang berisi hasil pencarian, kirim kembali blok konten asisten persis seperti yang Anda terima, termasuk encrypted_content dari 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 selalu diaktifkan untuk pencarian web, dan setiap web_search_result_location mencakup:
url: URL sumber yang dikutiptitle: Judul sumber yang dikutipencrypted_index: Referensi yang harus dikirim kembali untuk percakapan multi-gilirancited_text: Hingga 150 karakter dari konten yang dikutipField kutipan pencarian web cited_text, title, dan url tidak dihitung dalam penggunaan token input atau output.
Ketika alat pencarian web mengalami error (seperti mencapai batas laju), Claude API tetap mengembalikan respons 200 (sukses). Error direpresentasikan di dalam body respons menggunakan struktur berikut:
{
"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 apa pun mengembalikan daftar content kosong, bukan error.
Berikut adalah kode error yang mungkin muncul:
too_many_requests: Batas laju terlampauiinvalid_tool_input: Parameter kueri pencarian tidak validmax_uses_exceeded: Penggunaan maksimum alat pencarian web terlampauiquery_too_long: Kueri melebihi panjang maksimumrequest_too_large: Permintaan pencarian terlalu besar, biasanya karena daftar filter domain yang panjangunavailable: Terjadi error internalpause_turnAPI 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 Menggabungkan 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.
Untuk caching definisi alat di seluruh giliran, lihat Penggunaan alat dengan caching prompt.
Dengan streaming diaktifkan, Anda akan menerima event pencarian sebagai bagian dari stream. Akan ada jeda saat pencarian berjalan:
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)Anda dapat menyertakan alat pencarian web dalam Messages Batches API. Panggilan alat pencarian web melalui Messages Batches API dikenakan harga yang sama dengan permintaan Messages API biasa.
Untuk melindungi kapasitas bersama, Batches API membatasi permintaan pencarian web per organisasi, sehingga batch besar dengan banyak pencarian mungkin memerlukan waktu lebih lama untuk selesai. Anda dapat melihat batas laju pencarian web organisasi Anda di halaman Rate limits di Claude Console. Untuk meminta batas yang lebih tinggi, hubungi tim penjualan dari halaman tersebut.
Penggunaan pencarian web dikenakan biaya sebagai tambahan dari 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 API Claude 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 token input, 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.
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?