La herramienta de "web fetch" (obtención web) permite a Claude recuperar el contenido completo de páginas web y documentos PDF especificados.
La versión más reciente de la herramienta de web fetch (web_fetch_20260318) admite filtrado dinámico con Claude Fable 5, Claude Opus 4.8, Claude Mythos 5, Claude Mythos Preview, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 5 y Claude Sonnet 4.6. Claude puede escribir y ejecutar código para filtrar el contenido obtenido antes de que llegue a la ventana de contexto, conservando solo la información relevante y descartando el resto. Esto reduce el consumo de tokens mientras mantiene la calidad de la respuesta. web_fetch_20260318 también agrega control de inclusión de respuesta para flujos de trabajo agénticos. Las versiones anteriores (web_fetch_20260309 para filtrado dinámico y omisión de caché, web_fetch_20260209 solo para filtrado dinámico, web_fetch_20250910 para obtención básica) siguen disponibles.
Web fetch (con y sin filtrado dinámico) está disponible en la Claude API, Claude Platform en AWS y Microsoft Foundry. En Microsoft Foundry, web fetch requiere una implementación Hosted on Anthropic. Actualmente no está disponible en Amazon Bedrock ni en Google Cloud.
Para la elegibilidad de Zero Data Retention y la solución alternativa de allowed_callers, consulta Herramientas de servidor.
Para el soporte de modelos, consulta la Referencia de herramientas.
Web fetch es una herramienta de servidor: la API obtiene el contenido durante la solicitud e inserta los resultados en la conversación. No ejecutas nada ni devuelves un tool_result. La excepción es cuando Claude llama a web fetch y a una de tus herramientas de cliente en el mismo grupo de llamadas de herramientas en paralelo: la API devuelve la respuesta con stop_reason: "tool_use" antes de que esa obtención se haya ejecutado, y luego ejecuta la obtención cuando envías de vuelta los bloques tool_result del cliente. Consulta Mezclar herramientas de servidor y herramientas de cliente en un turno.
Cuando agregas la herramienta de web fetch a tu solicitud de API:
Claude obtiene contenido cuando la solicitud apunta a una página o documento específico:
Claude no obtiene contenido para preguntas de conocimiento general o abiertas que no hagan referencia a una página específica. "Resume este artículo: <url>" activa una obtención. "¿Cuáles son las mejores prácticas para el diseño de APIs REST?" se responde directamente.
Obtener páginas web y PDFs completos puede consumir tokens rápidamente, especialmente cuando solo se necesita información específica de documentos grandes. Con web_fetch_20260209 o posterior, Claude puede escribir y ejecutar código para filtrar el contenido obtenido antes de cargarlo en el contexto.
Este filtrado dinámico es particularmente útil para:
Para habilitar el filtrado dinámico, usa web_fetch_20260209 o cualquier versión posterior. Los siguientes ejemplos usan web_fetch_20260318:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Fetch the content at https://example.com/research-paper and extract the key findings.",
}
],
tools=[{"type": "web_fetch_20260318", "name": "web_fetch"}],
)
print(response)Proporciona la herramienta de web fetch en tu solicitud de API:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Please analyze the content at https://example.com/article",
}
],
tools=[{"type": "web_fetch_20250910", "name": "web_fetch", "max_uses": 5}],
)
print(response)La herramienta de web fetch admite los siguientes parámetros:
{
"type": "web_fetch_20250910",
"name": "web_fetch",
// Optional: Limit the number of fetches per request
"max_uses": 10,
// Optional: Only fetch from these domains
"allowed_domains": ["example.com", "docs.example.com"],
// Optional: Never fetch from these domains (cannot be combined with allowed_domains)
"blocked_domains": ["private.example.com"],
// Optional: Enable citations for fetched content
"citations": {
"enabled": true
},
// Optional: Maximum content length in tokens
"max_content_tokens": 100000
}Las versiones posteriores de la herramienta agregan dos parámetros opcionales más: use_cache requiere web_fetch_20260309 o posterior (consulta Omisión de caché), y response_inclusion requiere web_fetch_20260318 o posterior (consulta Inclusión de respuesta).
El parámetro max_uses limita el número de obtenciones web realizadas. Las obtenciones fallidas cuentan para el límite. Si Claude intenta más obtenciones de las permitidas, el web_fetch_tool_result es un error con el código de error max_uses_exceeded. Actualmente no hay un límite predeterminado.
Para el filtrado de dominios con allowed_domains y blocked_domains, consulta Herramientas de servidor.
El parámetro max_content_tokens limita la cantidad de contenido incluido en el contexto. Si el contenido obtenido excede este límite, la herramienta lo trunca. Esto ayuda a controlar el uso de tokens al obtener documentos grandes. El límite se aplica al contenido de texto, no al contenido binario como los PDFs.
El parámetro use_cache controla si se puede devolver contenido en caché. Establece "use_cache": false para omitir la caché y obtener contenido actualizado. El valor predeterminado es true. Deshabilita el almacenamiento en caché solo cuando el usuario solicite explícitamente contenido actualizado o cuando obtengas fuentes que cambian rápidamente, porque omitir la caché aumenta la latencia.
{
"tools": [
{
"type": "web_fetch_20260309",
"name": "web_fetch",
"use_cache": false
}
]
}El parámetro response_inclusion controla cómo aparecen los bloques de resultados de obtención en la respuesta de la API cuando el resultado fue consumido por una llamada de ejecución de código completada en el mismo turno. Establece "response_inclusion": "excluded" para eliminar por completo esos pares anidados de bloques server_tool_use y de resultado de la respuesta, reduciendo los costos de tokens de salida para flujos de trabajo agénticos que no necesitan devolver el contenido sin procesar de la página al cliente. El valor predeterminado es "full". Los resultados de llamadas directas, o de llamadas de ejecución de código que se pausaron antes de completarse, siempre se devuelven completos para que puedan enviarse de vuelta en el siguiente turno.
{
"tools": [
{
"type": "web_fetch_20260318",
"name": "web_fetch",
"response_inclusion": "excluded"
}
]
}A diferencia de la búsqueda web, donde las citas siempre están habilitadas, las citas son opcionales para web fetch y están deshabilitadas de forma predeterminada. Establece "citations": {"enabled": true} para permitir que Claude cite pasajes específicos de los documentos obtenidos.
Aquí hay un ejemplo de la estructura de respuesta:
{
"role": "assistant",
"content": [
// 1. Claude's decision to fetch
{
"type": "text",
"text": "I'll fetch the content from the article to analyze it."
},
// 2. The fetch request
{
"type": "server_tool_use",
"id": "srvtoolu_01234567890abcdef",
"name": "web_fetch",
"input": {
"url": "https://example.com/article"
}
},
// 3. Fetch results
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_01234567890abcdef",
"content": {
"type": "web_fetch_result",
"url": "https://example.com/article",
"content": {
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": "Full text content of the article..."
},
"title": "Article Title",
"citations": { "enabled": true }
},
"retrieved_at": "2025-08-25T10:30:00Z"
}
},
// 4. Claude's analysis with citations (if enabled)
{
"text": "Based on the article, ",
"type": "text"
},
{
"text": "the main argument presented is that artificial intelligence will transform healthcare",
"type": "text",
"citations": [
{
"type": "char_location",
"document_index": 0,
"document_title": "Article Title",
"start_char_index": 1234,
"end_char_index": 1456,
"cited_text": "Artificial intelligence is poised to revolutionize healthcare delivery..."
}
]
}
],
"id": "msg_a930390d3a",
"usage": {
"input_tokens": 25039,
"output_tokens": 931,
"server_tool_use": {
"web_fetch_requests": 1
}
},
"stop_reason": "end_turn"
}Los resultados de obtención incluyen:
url: La URL que se obtuvocontent: Un bloque de documento que contiene el contenido obtenidoretrieved_at: Marca de tiempo de cuándo se recuperó el contenidoPara documentos PDF, el contenido se devuelve como datos codificados en base64:
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_02",
"content": {
"type": "web_fetch_result",
"url": "https://example.com/paper.pdf",
"content": {
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": "JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmo..."
},
"citations": { "enabled": true }
},
"retrieved_at": "2025-08-25T10:30:02Z"
}
}Cuando la herramienta de web fetch encuentra un error, la Claude API devuelve una respuesta 200 (éxito) con el error representado en el cuerpo de la respuesta. Claude ve el resultado del error y continúa el turno. Por ejemplo:
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_a93jad",
"content": {
"type": "web_fetch_tool_result_error",
"error_code": "url_not_accessible"
}
}Estos son los códigos de error posibles:
invalid_tool_input: Entrada de herramienta inválida, como una URL mal formada o un esquema que no es HTTP(S)url_too_long: La URL excede la longitud máxima (250 caracteres)url_not_allowed: URL bloqueada por las reglas de filtrado de dominios (incluyendo la configuración de tu organización) o por restricciones del lado de Anthropic, como direcciones privadas y robots.txturl_not_in_prior_context: La URL no apareció antes en la conversación (consulta Validación de URL)url_not_accessible: Falló la obtención del contenido (error HTTP)too_many_requests: Límite de velocidad excedidounsupported_content_type: Tipo de contenido no admitido (solo texto, HTML y PDF)max_uses_exceeded: Se excedió el número máximo de usos de la herramienta de web fetchunavailable: Ocurrió un error internoPor razones de seguridad, la herramienta de web fetch solo puede obtener URLs que hayan aparecido previamente en el contexto de la conversación. Esto incluye:
La herramienta no puede obtener URLs arbitrarias que Claude genere ni URLs de herramientas de servidor basadas en contenedores (como Code Execution y Bash).
Cuando tanto la herramienta de búsqueda web como la de web fetch están habilitadas, y el usuario nombra una página o documento específico sin proporcionar una URL (por ejemplo, "lee el README del repositorio anthropics/anthropic-sdk-python"), Claude usa la búsqueda web para localizarlo y luego obtiene el resultado. El siguiente ejemplo solicita una búsqueda y un análisis en una sola solicitud:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Find recent articles about quantum computing and analyze the most relevant one in detail",
}
],
tools=[
{"type": "web_search_20250305", "name": "web_search", "max_uses": 3},
{
"type": "web_fetch_20250910",
"name": "web_fetch",
"max_uses": 5,
"citations": {"enabled": True},
},
],
)
print(response)En este flujo de trabajo, Claude:
Para almacenar en caché las definiciones de herramientas entre turnos, consulta Uso de herramientas con almacenamiento en caché de prompts.
Con el streaming habilitado, los eventos de obtención forman parte del flujo con una pausa durante la recuperación del contenido:
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 fetch
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "web_fetch"}}
// Fetch URL streamed
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"url\":\"https://example.com/article\"}"}}
// Pause while fetch executes
// Fetch results streamed
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "web_fetch_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": {"type": "web_fetch_result", "url": "https://example.com/article", "content": {"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "Article content..."}}}}}
// Claude's response continues...Puedes incluir la herramienta de web fetch en la API de Messages Batches. Las llamadas a la herramienta de web fetch a través de la API de Messages Batches tienen el mismo precio que las de las solicitudes regulares de la API de Messages.
El uso de web fetch no tiene cargos adicionales más allá de los costos estándar de tokens:
{
"usage": {
"input_tokens": 25039,
"output_tokens": 931,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"server_tool_use": {
"web_fetch_requests": 1
}
}
}La herramienta web fetch está disponible en la API de Claude sin costo adicional. Solo pagas los costos estándar de tokens por el contenido obtenido que pasa a formar parte del contexto de tu conversación.
Para protegerte contra la obtención inadvertida de contenido de gran tamaño que consumiría una cantidad excesiva de tokens, usa el parámetro max_content_tokens para establecer límites apropiados según tu caso de uso y consideraciones de presupuesto.
Ejemplo de uso de tokens para contenido típico:
Ejecuta código Python y bash en un contenedor aislado para analizar datos, generar archivos e iterar en soluciones.
Trabaja con herramientas ejecutadas por Anthropic: bloques server_tool_use, continuación con pause_turn y filtrado de dominios.
Directorio de herramientas proporcionadas por Anthropic y referencia de las propiedades opcionales de definición de herramientas.
Was this page helpful?