Los flujos de trabajo n8n que raspan sitios web a través de nodos de solicitud HTTP se interrumpen constantemente debido a CAPTCHA, bloques de IP y cambios en la estructura HTML. Mantener scrapers dentro de n8n requiere actualizaciones constantes de nodos y una lógica de rotación de proxy que satura su flujo de trabajo. Reemplazar los nodos de raspado con una llamada API de búsqueda estructurada elimina estos modos de falla por completo. Este tutorial muestra cómo intercambiar nodos de raspado de solicitudes HTTP n8n rotos con llamadas API de Scavio que devuelven JSON limpio. El resultado es un flujo de trabajo n8n confiable que nunca necesita administración de proxy ni análisis de HTML.
Requisitos previos
- Instancia n8n en ejecución (en la nube o autohospedada)
- Una clave API de Scavio de scavio.dev
- Un flujo de trabajo n8n existente con nodos de raspado
Guia paso a paso
Paso 1: Identificar el nodo de raspado roto
Busque el nodo de solicitud HTTP en su flujo de trabajo n8n que falla debido a bloqueos o errores de análisis.
# Common n8n scraping failure patterns:
# 1. HTTP Request node returns 403/429 status
# 2. HTML Extract node returns empty because DOM changed
# 3. Proxy rotation node adds complexity and still fails
# Replace ALL of the above with a single HTTP Request node
# pointing to the Scavio APIPaso 2: Configurar el nodo API de Scavio
Reemplace el nodo de raspado con un nodo de solicitud HTTP configurado para la API de Scavio.
# n8n HTTP Request node settings:
# Method: POST
# URL: https://api.scavio.dev/api/v1/search
# Authentication: Header Auth
# Header Name: x-api-key
# Header Value: your_scavio_api_key
# Body Content Type: JSON
# Body Parameters:
# platform: google
# query: {{ $json.search_query }}Paso 3: Analizar la respuesta estructurada
La API devuelve JSON limpio para que pueda eliminar por completo los nodos de análisis HTML.
# In n8n, access results directly:
# {{ $json.organic_results[0].title }}
# {{ $json.organic_results[0].link }}
# {{ $json.organic_results[0].snippet }}
# No more HTML Extract nodes needed
# No more CSS selector maintenance
# No more regex parsingPaso 4: Prueba con equivalente de Python
Verifique que la llamada API funcione antes de configurarla en n8n.
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": "best project management tools 2026"})
data = resp.json()
for r in data.get("organic_results", [])[:3]:
print(f"{r['title']}: {r['link']}")Ejemplo en Python
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": "best project management tools"})
for r in resp.json().get("organic_results", [])[:5]:
print(r["title"], r["link"])Ejemplo en JavaScript
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"},
body: JSON.stringify({platform: "google", query: "best project management tools"})
});
const data = await r.json();
(data.organic_results || []).slice(0,5).forEach(r => console.log(r.title, r.link));Salida esperada
A working n8n workflow that fetches structured search data via API instead of scraping, eliminating proxy failures and HTML parsing maintenance.