Tony Wang10 min de lecturaWeb Scraping con IA — Cómo obtienen datos web los agentes en 2026
Cómo hacen web scraping los agentes de IA en 2026 — extracción con LLM, llamadas MCP, flujos n8n — y el cuello de botella antibot.
Toda demo de un agente de IA termina de la misma forma: el modelo razona de maravilla, planea la tarea y luego choca con un muro en el momento en que necesita datos de un sitio web real. El web scraping con IA funciona mediante tres patrones distintos: el LLM extrae campos de páginas ya obtenidas, el agente llama a herramientas de datos estructurados mediante function calling o MCP, o el LLM te escribe el código del scraper; cada uno tiene costos, modos de falla y puntos fuertes diferentes. Esta guía recorre los tres con ejemplos funcionales y luego llega a la parte incómoda que la mayoría de los tutoriales omite: en 2026, el cuello de botella no es la inteligencia. Es el acceso. Los agentes se topan con los mismos sistemas antibot que bloquean a cualquier otro bot, y ninguna cantidad de razonamiento arregla un 403.
Si todavía estás construyendo las bases por tu cuenta, empieza con nuestra guía principal de web scraping con Python: todo lo que sigue aquí se apoya en esos fundamentos.
Las tres formas en que la IA hace web scraping en 2026
«Web scraping con IA» se usa para tres arquitecturas distintas, y mezclarlas es la razón por la que muchos proyectos terminan con las decisiones equivocadas. (Si quieres herramientas comparadas cara a cara, ese es otro artículo: las mejores herramientas de web scraping con IA en 2026. Y para una comparación desde los fundamentos frente al scraping basado en selectores, mira IA vs. web scraping tradicional.)
Patrón 1: el LLM como extractor
Obtienes la página (con tu propio cliente HTTP o un servicio de fetch), la conviertes a markdown y se la entregas a un modelo con un prompt como «extrae el nombre del producto, el precio y la disponibilidad en JSON». Firecrawl y Jina fueron pioneros en este enfoque y merecen el crédito: sus endpoints de markdown listos para LLM convirtieron «simplemente dale la página al modelo» en una opción práctica por defecto en lugar de un truco.
Las ventajas son reales. No hay que escribir selectores, no hay que mantener un parser, y los cambios de diseño que romperían un selector CSS normalmente no confunden a un modelo. Los benchmarks citados por Firecrawl ubican la extracción con LLM en puntuaciones F1 superiores a 0,95 en extracción web estructurada, cuando la entrada está bien formateada.
Las limitaciones son igual de reales:
- Costo en tokens. Una página cruda de e-commerce o documentación puede llegar a 30.000–100.000 tokens. Una proyección de costos publicada para 1.000 páginas al día: alrededor de 200 dólares diarios con HTML crudo frente a unos 20 dólares tras la conversión a markdown, una reducción de ~90%. La investigación sobre poda de DOM va más allá y reduce los tokens de entrada en un 97,9% sin afectar la calidad de la extracción.
- Alucinación. Un modelo al que se le pide un precio a veces produce uno que no está en la página: plausible, bien tipado y equivocado. La validación de esquema detecta errores de forma, no valores inventados. Necesitas verificaciones puntuales contra datos reales.
- No te consigue la página. La extracción con LLM empieza después de que el fetch tiene éxito. Frente a un desafío de Cloudflare o un bloqueo de IP de centro de datos, el extractor más inteligente del mundo no tiene nada que extraer.
Patrón 2: agente con herramientas (function calling y MCP)
En lugar de darle páginas al modelo, le das herramientas invocables que devuelven datos estructurados: una función google_search, una búsqueda amazon_product, un endpoint web_scrape. El modelo decide cuándo llamarlas y recibe JSON normalizado. Dominan dos formas de conexión: function calling nativo (herramientas de OpenAI, tool use de Anthropic, LangChain) y MCP, el Model Context Protocol, un estándar abierto en el que el agente se conecta a un servidor, descubre sus herramientas y las llama sin código de integración a medida.
Este es el patrón que hizo prácticos a los agentes, por una razón muy directa: un resultado de búsqueda como JSON estructurado puede pesar 2.000 tokens, mientras que ese mismo resultado como página de SERP renderizada pesa 50.000. El agente gasta contexto en razonar en lugar de analizar, y cada respuesta tiene los mismos campos en los mismos lugares: sin sorpresas página por página, sin nada que alucinar porque no hay un paso de extracción de texto libre.
Las limitaciones honestas: solo puedes llamar a las herramientas que existen, así que la cobertura depende del catálogo detrás del servidor; y estás confiando en la normalización de un proveedor en lugar de ver el marcado crudo. Para las páginas de nicho que ninguna herramienta cubre, vuelves al patrón 1 con una herramienta genérica de scrape a markdown.
Patrón 3: la IA escribe el scraper
El tercer patrón usa el LLM en tiempo de desarrollo, no en tiempo de ejecución: pegas HTML de muestra en Claude o ChatGPT y pides los selectores de BeautifulSoup, el script de Playwright, la lógica de reintentos. Los modelos modernos son realmente buenos en esto, y la economía se invierte: pagas tokens una sola vez para generar el código y luego ejecutas ese código gratis a cualquier volumen.
La trampa es que has reinventado el scraping tradicional con una redacción más rápida. Los selectores generados se degradan cuando el sitio cambia, exactamente igual que los escritos a mano; solo que los regeneras en lugar de depurarlos. Y el código generado hereda todos los problemas de acceso: user agents por defecto, IPs de centro de datos sin disfraz, sin gestión de huella digital. Los scrapers escritos por IA se bloquean con la misma frecuencia que los escritos por humanos.
Manos a la obra: conecta un agente a datos web en vivo por MCP
El camino más rápido de «mi agente no puede ver la web» a una llamada de herramienta funcional es un endpoint MCP alojado. Crawlora tiene uno en https://mcp.crawlora.net/mcp sobre Streamable HTTP: no hay nada que instalar ni ejecutar, y actualmente expone más de 600 herramientas documentadas en cerca de 50 plataformas (motores de búsqueda, Google Maps, Amazon, YouTube, TikTok, Reddit, datos financieros y un scrape web genérico). Primero obtén una API key gratis: el plan gratuito son 2.000 créditos al mes, sin tarjeta.
Para Claude Desktop, Claude Code, Cursor, Windsurf o cualquier cliente que soporte servidores MCP remotos, agrega un bloque a la configuración de MCP:
{
"mcpServers": {
"crawlora": {
"url": "https://mcp.crawlora.net/mcp",
"headers": { "x-api-key": "YOUR_API_KEY" }
}
}
}
Los clientes que prefieran autenticación bearer pueden enviar Authorization: Bearer YOUR_API_KEY en su lugar; el endpoint acepta ambas.
Reinicia el cliente y las herramientas aparecerán en su lista. A partir de ahí, el bucle es invisible para ti, pero vale la pena entenderlo. Pregúntale a Claude «¿qué dicen los primeros resultados de Google sobre los servidores MCP?» y elegirá la herramienta google_search, enviará argumentos como una palabra clave y un código de país, y recibirá un arreglo JSON de resultados ordenados: título, enlace, fragmento, posición. Lee ese JSON directamente como salida de la herramienta; ningún HTML entra jamás a la ventana de contexto. Una pregunta de seguimiento reutiliza los datos que ya están en contexto, sin costo adicional.
El catálogo completo de herramientas y los esquemas por herramienta están en la página de MCP y en la documentación; la descripción general para agentes de IA cubre la superficie nativa para agentes con más amplitud.
Manos a la obra: una herramienta en Python que un LLM puede llamar
Si estás construyendo tu propio agente en lugar de configurar un cliente, la misma idea toma unas veinte líneas: envuelve un endpoint REST en una función, descríbela con un esquema y entrégale ambos a cualquier modelo con function calling. Aquí tienes una herramienta funcional alrededor del endpoint de Google Search de Crawlora (POST /google/search sobre la base https://api.crawlora.net/api/v1, autenticado con un header x-api-key):
import os
import requests
def google_search(keyword: str, country: str = "us",
language: str = "en", limit: int = 10) -> dict:
"""Buscar en Google y devolver resultados orgánicos estructurados."""
resp = requests.post(
"https://api.crawlora.net/api/v1/google/search",
headers={"x-api-key": os.environ["CRAWLORA_API_KEY"]},
json={
"keyword": keyword,
"country": country,
"language": language,
"limit": limit, # 10 a 100
},
timeout=30,
)
resp.raise_for_status()
return resp.json()
TOOL_SCHEMA = {
"name": "google_search",
"description": "Busca en Google y devuelve resultados orgánicos ordenados "
"como JSON (título, enlace, fragmento, posición).",
"input_schema": {
"type": "object",
"properties": {
"keyword": {"type": "string", "description": "La consulta de búsqueda."},
"country": {"type": "string", "description": "Código de país, p. ej. us."},
"language": {"type": "string", "description": "Código de idioma, p. ej. en."},
"limit": {"type": "integer", "description": "Resultados a devolver, 10-100."},
},
"required": ["keyword"],
},
}
Registra TOOL_SCHEMA en el parámetro de herramientas de tu proveedor de modelos, despacha a google_search() cuando el modelo emita una llamada de herramienta, y devuelve el JSON como resultado de la herramienta. El mismo esquema funciona en LangChain, el OpenAI Agents SDK, o cualquier bucle personalizado; la guía de integración de agentes de IA tiene versiones específicas por framework.
Dos detalles operativos que vale la pena conocer: el endpoint aplica un límite de una solicitud por segundo (un 429 te indica que debes bajar el ritmo), y devuelve un 503 en lugar de basura cuando Google sirve una página de desafío, lo cual, bajo facturación pay-on-success, es una falla gratuita en vez de un mal resultado pagado. Ese es el comportamiento que quieres frente a un agente, que reintentará con gusto.
Web scraping con IA en n8n: sin código
Para los equipos que viven en la automatización de flujos de trabajo, n8n cubre esto sin escribir Python. Dos caminos:
- El nodo de la comunidad. Crawlora publica
n8n-nodes-crawloraen npm: instálalo desde Settings → Community Nodes, agrega tu API key como credencial, y sus operaciones (web scrape, búsqueda, mapas, e-commerce y más) se convierten en nodos que puedes arrastrar y soltar. También está marcado como utilizable por el nodo AI Agent de n8n, así que un agente dentro de n8n puede llamar a las operaciones de Crawlora como herramientas. - El nodo HTTP Request. El nodo HTTP integrado de n8n llama directamente a cualquier endpoint REST: configura la URL, agrega el header
x-api-key, envía el cuerpo JSON. La página de integraciones incluye una plantilla de flujo de trabajo lista para importar.
Un flujo típico de scraping con IA encadena un disparador, un nodo de Crawlora que obtiene datos estructurados, y un nodo AI Agent o LLM de n8n que razona sobre el JSON: monitoreo de precios de la competencia hacia Slack, seguimiento de SERP hacia una hoja de cálculo, resúmenes de reseñas hacia el correo. El argumento de la eficiencia en tokens aplica doble dentro de n8n: los pipelines publicados por la comunidad que alimentan HTML crudo al nodo AI Agent suelen consumir diez veces más tokens que los pipelines que pasan campos estructurados.
El verdadero cuello de botella es el acceso, no la inteligencia
Aquí está la parte en la que se equivoca el relato de «la IA resolvió el scraping». Los modelos mejoraron enormemente para leer páginas; los sitios web mejoraron enormemente para no servir páginas a bots. Cloudflare, DataDome, Akamai y Kasada inspeccionan los handshakes TLS, las huellas digitales del navegador, la reputación de IP y las señales de comportamiento, y un agente de IA que hace solicitudes HTTP presenta exactamente las mismas señales que un script de Python de 2019. Cuando el fetch de un agente falla, no falló en el razonamiento; falló en la web.
De hecho, los agentes empeoran esto de tres maneras:
- Amplificación de volumen: a un agente al que se le hace una pregunta puede terminar emitiendo cinco búsquedas y una docena de fetches de páginas, y luego reintentar los fallos, disparando límites de velocidad que un investigador humano jamás activaría.
- Sin conciencia de bloqueo: un modelo que recibe una página de desafío a menudo no puede notar que fue bloqueado, y extraerá campos con total confianza de una interstitial que dice checking your browser.
- Bucles de reintento: los bucles de agentes ingenuos responden a un 403 intentando de nuevo de inmediato con la misma huella digital, convirtiendo un solo bloqueo en una marca de reputación.
Por eso el patrón de herramientas estructuradas sigue ganando en producción. Una API de scraping concentra el problema de acceso en un solo lugar: la rotación de proxies, la gestión de huellas digitales, el renderizado de JavaScript, los reintentos y el manejo de límites de velocidad viven detrás del endpoint, y el agente solo ve JSON limpio o una falla limpia. El enfoque de API de web scraping también mantiene el planteamiento honesto: endpoints documentados sobre datos públicos, con documentación por endpoint que indica qué se recopila. Y si tu objetivo es construir un corpus en lugar de consultas de agentes en vivo, el cálculo cambia de nuevo: mira web scraping para datos de entrenamiento de IA.
¿Qué patrón deberías usar?
| LLM como extractor | Agente con herramientas | Scraper escrito por IA | |
|---|---|---|---|
| Ideal para | Páginas de nicho, desordenadas, puntuales | Datos en vivo dentro de flujos de agentes | Alto volumen, conjunto fijo de sitios |
| Perfil de costo | El más alto — tokens por cada página | Bajo — tokens solo para la respuesta | El más bajo a escala — el código corre gratis |
| Cambios en el sitio | Resiliente (sin selectores) | El proveedor mantiene los parsers | Se rompe; hay que regenerar el código |
| Modo de falla | Campos alucinados o faltantes | Vacíos de cobertura en el catálogo de herramientas | Degradación de selectores, deriva silenciosa |
| Antibot | Sin resolver — necesita una capa de fetch | Manejado detrás del endpoint | Sin resolver — proxies por tu cuenta |
| Esfuerzo de configuración | Bajo | El más bajo (un bloque de configuración) | Medio, más mantenimiento |
En la práctica, los patrones se combinan: los agentes se apoyan en herramientas estructuradas para las plataformas cubiertas, recurren a scrape-más-extracción para todo lo demás, y la generación de código sigue siendo un truco de productividad para desarrolladores más que una arquitectura.
Dale a tu agente la web, sin los bloqueos
Endpoint MCP alojado, herramientas REST documentadas, JSON normalizado y facturación pay-on-success: se te cobra solo por respuestas 2xx exitosas. Plan gratuito: 2.000 créditos al mes, sin tarjeta.
Lecturas relacionadas
- Web scraping con Python: la guía completa de 2026 — la base DIY sobre la que se construyen estos patrones
- Las mejores herramientas de web scraping con IA en 2026 — las herramientas, comparadas y probadas
- IA vs. web scraping tradicional — cuándo los selectores todavía ganan
- Web scraping para datos de entrenamiento de IA — construcción de corpus a escala
- Las mejores APIs de búsqueda web para agentes de IA — el lado de la búsqueda al darle a un agente acceso web en vivo
- Dale a tu agente de IA datos web en vivo con MCP — cómo conectar estos patrones como herramientas MCP
- Cómo los sitios web previenen el web scraping en 2026 — el muro de acceso que convierte esto en el cuello de botella, con los datos
Preguntas frecuentes
Can ChatGPT or Claude scrape websites?
Not on their own — a language model has no network access to arbitrary pages. Give it tools: over MCP or function calling, Claude and ChatGPT can call scraping endpoints, receive structured JSON, and reason over the results. The model does the reasoning; a fetch layer does the scraping.
What is MCP in web scraping?
MCP (Model Context Protocol) is an open standard that lets an AI agent discover and call external tools through one interface. A scraping MCP server exposes tools like google_search or web_scrape, so any MCP client — Claude, Cursor, Windsurf — can pull live web data without custom integration code. Crawlora's hosted MCP endpoint is https://mcp.crawlora.net/mcp.
Is AI extraction more accurate than CSS selectors?
Benchmarks show LLM extraction can reach F1 scores above 0.95 on structured web data when the input is well formatted, and it survives layout changes that break selectors. But models occasionally hallucinate plausible values that are not on the page, so production pipelines validate outputs. Selectors are deterministic but brittle.
How much does LLM web extraction cost per page?
Raw HTML is the expensive path: a single page can run 30,000–100,000 tokens. Converting to markdown cuts token use by roughly 90%, and DOM-pruning research reports 97.9% reductions without hurting quality. Structured JSON from a scraping API is cheaper still, since the model only reads the fields it needs.
Why do AI agents get blocked when scraping?
Anti-bot systems like Cloudflare, DataDome, Akamai, and Kasada score TLS handshakes, browser fingerprints, IP reputation, and request behavior — and an agent's HTTP requests look like any other bot's. Agents also amplify volume with retries and multi-step fetches, which trips rate limits faster. A managed access layer fixes this; better prompts do not.
How do I connect Claude to a web scraping API?
Add a hosted MCP server to Claude's MCP config: point it at https://mcp.crawlora.net/mcp with your API key in an x-api-key header, restart, and the scraping tools appear in Claude's tool list. The free tier is 2,000 credits/month with no card required.
Can I do AI web scraping in n8n without code?
Yes. Install the n8n-nodes-crawlora community node from Settings → Community Nodes and add your API key as a credential, or call the REST API from n8n's built-in HTTP Request node. Either can feed structured JSON to n8n's AI Agent node, which keeps token costs far below feeding it raw HTML.