El problema
Cloudflare ya está delante de casi cualquier sitio que valga la pena raspar, y cada vez es más agresivo. Los proxies rotativos que antes aguantaban un trabajo ahora fallan a mitad de ejecución: se quema el pool, la huella del navegador filtra señales de automatización o un timing de peticiones predecible dispara una alerta de rate. Para un contratista que cotiza scrapers de precios de la competencia, feeds de bolsas de empleo y datos inmobiliarios, 'Cloudflare se puso más agresivo' no es una respuesta que un cliente quiera escuchar, y el coste de infraestructura es difícil de cotizar porque cambia cada pocas semanas. El ancho de banda residencial ronda los $4-8 por GB en 2026 y el móvil $10-20 por GB, encima de una capa de navegador gestionado, y todo el stack necesita mantenimiento constante. Los montajes que sobreviven son aburridos: huellas mantenidas, IPs limpias, concurrencia razonable. Los que mueren en dos semanas dependen de un solo truco, como un plugin de sigilo o una rotación de user-agent hardcodeada.
La solucion de Scavio
Divide la lista de objetivos en 'ya indexado' y 'detrás de un muro', y enruta cada mitad distinto. Buena parte de lo que la gente llama scraping es dato público que un buscador ya rastreó: los precios de la competencia aparecen en Google Shopping y en los SERP orgánicos, los datos de producto viven en las fichas de Amazon y Walmart, y la señal comunitaria está en Reddit y YouTube. Para ese trozo, una API de búsqueda estructurada devuelve JSON tipado y se traga la pelea con Cloudflare, el CAPTCHA y la huella del lado del servidor. Sin pool de proxies, sin solver de Turnstile, sin navegador que parchear. Scavio cubre ese trozo público e indexado desde una sola clave (Google SERP, Amazon, Walmart, Reddit, YouTube, TikTok) con precios por créditos que sí puedes meter en una cotización: $0.005/crédito, la mayoría de endpoints 1 crédito, Google full-SERP 2 créditos. La otra mitad, portales inmobiliarios y bolsas de empleo que ocultan el contenido tras login o lo renderizan solo tras JavaScript pesado, sigue necesitando un navegador real e IPs residenciales o móviles limpias. Sé honesto con el cliente sobre esa división. Recorta el volumen y el coste de scraping para la mayoría indexada y te deja reservar el caro presupuesto de proxies para el puñado de objetivos que de verdad lo requieren.
Antes
Antes: cada objetivo pasa por el mismo scraper frágil. Un cambio de config en Cloudflare quema el pool de proxies, los trabajos fallan a mitad, y andas parcheando huellas y comprando más ancho de banda residencial ($4-8/GB) para que las cotizaciones no se disparen. La confianza del cliente se erosiona cada vez que un feed se apaga.
Después
Después: el 70-80% indexado de los objetivos (precios, datos de producto, resultados SERP, señal social) vuelve como JSON en una llamada a la API sin superficie anti-bot. Los objetivos restantes tras login usan tu stack de navegador mantenido + IPs limpias, ahora con mucho menos volumen circulando. El coste de infraestructura es lo bastante predecible para cotizar, porque la parte móvil (Cloudflare) queda fuera de casi toda la tubería.
Para quien es
Contratistas de automatización e ingenieros de datos cuyos scrapers no dejan de romperse contra Cloudflare, que necesitan costes por trabajo predecibles para cotizar a clientes, y cuyas listas de objetivos mezclan datos públicos e indexados (precios, fichas de producto, resultados SERP) con fuentes genuinamente bloqueadas.
Beneficios clave
- Sin pool de proxies, solver de Turnstile ni navegador headless para el trozo indexado de objetivos
- Coste predecible y cotizable: $0.005/crédito, la mayoría de endpoints 1 crédito, sin sorpresas de ancho de banda por GB
- Una sola clave para Google SERP, Amazon, Walmart, Reddit, YouTube, TikTok en lugar de un scraper por sitio
- Reserva el presupuesto de proxies residenciales/móviles ($4-8/GB y $10-20/GB) para los pocos objetivos tras login que de verdad lo necesitan
- Alcance honesto para clientes: API para dato público, stack de navegador para dato bloqueado, sin sorpresas de 'Cloudflare se puso agresivo'
Ejemplo en Python
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}",
"Content-Type": "application/json"}
# Competitor pricing via Google Shopping/organic, no Cloudflare fight
def competitor_prices(product: str):
r = requests.post("https://api.scavio.dev/api/v1/google", headers=H,
json={"query": f"{product} price", "light_request": False},
timeout=30).json()
return [{"title": o["title"], "link": o["link"],
"snippet": o.get("snippet", "")}
for o in r.get("organic", [])[:10]]
# Marketplace product data straight from the listing
def amazon_product(query: str):
return requests.post("https://api.scavio.dev/api/v1/amazon/search",
headers=H, json={"query": query}, timeout=30).json()
if __name__ == "__main__":
print(competitor_prices("dyson v15 vacuum"))Ejemplo en JavaScript
const H = { Authorization: `Bearer ${process.env.SCAVIO_API_KEY}`,
"Content-Type": "application/json" };
async function competitorPrices(product) {
const r = await fetch("https://api.scavio.dev/api/v1/google", {
method: "POST", headers: H,
body: JSON.stringify({ query: `${product} price`, light_request: false }),
}).then((r) => r.json());
return (r.organic || []).slice(0, 10).map((o) => ({
title: o.title, link: o.link, snippet: o.snippet ?? "",
}));
}
competitorPrices("dyson v15 vacuum").then(console.log);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Amazon
Búsqueda de productos con precios, calificaciones y reseñas
Walmart
Búsqueda de productos con precios y datos de cumplimiento
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit
YouTube
Búsqueda de videos con transcripciones y metadatos