ScrapeGraphAI: el patrón italiano de scraping, corriendo en tu Claude Code
Unos italianos hicieron ScrapeGraphAI hace dos años. 26 mil estrellas en GitHub, MIT, y el patrón es simple: baja la página, la limpia, le pide a un LLM que extraiga lo que quieres, lo guarda. Claude Code ya tiene las tres piezas nativas. Esta guía va en dos caminos: el nativo, sin instalar nada ni pagar API extra, para el 80% de los casos; y el Plan B con ScrapeGraphAI corriendo local cuando WebFetch no aguanta. Con prompts listos para copiar.
De un vistazo
El patrón del repo
Camino nativo
Camino con ScrapeGraphAI
Prompts listos + casos B2B
qué es · cómo funciona · camino A · 5 prompts nativos · cuándo no alcanza · camino B · 4 prompts SGAI · casos B2B · uso responsable · FAQ
Dos caminos para sacar datos de internet sin pagar herramientas, en el mismo Claude Code que ya tienes abierto
Primero te enseño qué hace ScrapeGraphAI por dentro: son cuatro pasos en cadena (fetch, limpia, extrae con LLM, exporta). Luego ves la tabla de equivalencias con Claude Code: las cuatro piezas ya están ahí. El Camino A te resuelve precios, leads de directorios B2B públicos, monitoreo de noticias y catálogos sin instalar nada. El Camino B es para cuando topas con un sitio JS-pesado o necesitas correr cientos de URLs: ahí Claude Code te instala ScrapeGraphAI, te configura Groq gratis como cerebro y orquesta los grafos. Cierre con 3 casos reales legítimos, dónde no usar esto (con LinkedIn como ejemplo) y FAQ rápida.
01 contexto
Qué es ScrapeGraphAI y por qué nos importa este repo
ScrapeGraphAI es una librería de Python que combina grafos + LLMs para sacar datos estructurados de páginas web a partir de un prompt en lenguaje natural. La hicieron unos italianos —Marco Vinciguerra y Lorenzo Padoan— hace dos años. Hoy tiene 26 mil estrellas en GitHub, licencia MIT, y está escrita en Python 3.12+.
Lo importante no es la librería en sí, es el patrón que dejaron documentado: cómo se le pide a un modelo que extraiga datos de una página sin escribir selectores CSS ni reglas frágiles. Ese patrón es exactamente lo que Claude Code puede reproducir nativo, sin instalar el paquete. Eso es lo que vamos a ver en la siguiente sección.
¿Cuándo sí vale instalar la librería? Cuando el caso topa con cosas que Claude Code no resuelve out-of-the-box: sitios con render pesado de JavaScript, anti-bot tipo Cloudflare, scrape masivo en paralelo, o schemas de Pydantic estrictos para producción. Para eso está el Camino B más abajo.
Aviso de compatibilidad
ScrapeGraphAI no soporta Anthropic Claude como provider directo (su lista oficial es OpenAI, Groq, Google, Azure, Mistral, Ollama, entre otros). No hay problema: en el Camino A no la usas, y en el Camino B Claude Code orquesta la librería + un provider gratis como Groq. Lo aclaramos al detalle en el FAQ del final.
02 el descubrimiento
Cómo funciona ScrapeGraphAI por dentro (y por qué Claude Code ya lo puede hacer)
Toda la magia de ScrapeGraphAI son cuatro pasos en cadena. Si los entiendes, ya entendiste el patrón:
- 01
Fetch
Bajar el HTML de la página. ScrapeGraphAI usa Playwright (navegador real, soporta JS) o BeautifulSoup para páginas estáticas.
- 02
Clean
Convertir el HTML crudo a markdown legible con html2text, y partirlo en pedazos si es muy grande para el contexto del LLM.
- 03
Extract
Mandar el markdown + tu prompt al LLM. El modelo regresa los campos que pediste en JSON estructurado.
- 04
Export
Devolverte un dict de Python. Tú lo pasas a pandas y lo guardas como CSV o Excel.
Ahora la parte interesante: Claude Code ya trae las cuatro piezas nativas. No es teoría, ya están integradas como tools. Aquí la tabla de equivalencias:
| Pieza de ScrapeGraphAI | Equivalente nativo en Claude Code |
|---|---|
| Playwright o BeautifulSoup (fetch) | WebFetch (tool nativa de Claude Code) |
| html2text (clean) | WebFetch ya te devuelve markdown limpio |
| LLM provider externo (OpenAI, Groq, etc.) | Claude mismo, dentro de Claude Code |
| pandas → CSV / Excel | Bash + Python (csv, openpyxl) ejecutado por Claude |
| SearchGraph (busca + scrapea multi) | WebSearch + WebFetch en loop |
Conclusión: para el 80% de los casos (HTML estático, e-commerce, news, directorios públicos B2B), no necesitas instalar ScrapeGraphAI ni pagar otra API. Eso es el Camino A, ahora.
03 camino a
Modo nativo en 60 segundos: cero instalaciones, cero API keys
Este es el camino que usas el 80% del tiempo. Funciona contra páginas HTML normales, blogs, e-commerce simples, directorios públicos, sites de noticias, catálogos paginados. Si la página se ve bien al abrirla en tu navegador sin login, casi seguro WebFetch la maneja.
El único comando (entrar a la carpeta y prender Claude)
mkdir -p ~/scrape && cd ~/scrape && claude- 01
Crea una carpeta vacía donde quieras guardar los datos
Algo como ~/scrape o Desktop/scrape. Aquí van a vivir los CSV que vayas generando. Mantenerlo separado evita ensuciar otros proyectos.
- 02
Abre Claude Code adentro de esa carpeta
En terminal entras a la carpeta y prendes Claude Code. La sesión hereda la carpeta como cwd, así los archivos que genere se quedan aquí.
- 03
Pega cualquier prompt del Camino A
Empieza con el 01 (single page → CSV). Claude usa WebFetch para bajar la página, lee, extrae los campos que pediste y te guarda el CSV. No hay paso de instalación.
Si Claude Code no está instalado en tu compu, primero pasa por la guía de instalación y luego regresas aquí.
04 manos a la obra
Prompts listos para copiar — modo nativo
Cero instalaciones. Solo Claude Code abierto en una carpeta vacía. Cada prompt tiene su botón Copiar, lo pegas tal cual y reemplazas los {placeholders} antes de mandar.
Si Claude tarda más de lo normal o te avisa que la página no carga bien, ese es el síntoma del que hablo en la siguiente sección — ahí ya empieza el territorio del Camino B.
Prompt 01
Sácame los datos de esta página en CSV
El más básico. Le pasas una URL y los campos que quieres. Claude usa WebFetch para bajar la página, lee lo que importa, te lo regresa estructurado y lo guarda en un CSV en la carpeta donde estás.
Usa WebFetch para bajar esta página: {pega aquí la URL}
De ahí, sácame estos campos:
- {campo 1, ej. nombre del producto}
- {campo 2, ej. precio actual}
- {campo 3, ej. disponibilidad}
- {agrega más si quieres}
Cuando termines:
1. Muéstrame los datos en una tabla en pantalla para que los revise.
2. Guárdalos en un archivo CSV llamado datos.csv en esta carpeta, con headers en español y separador coma.
3. Si una página no tiene alguno de los campos, mete una celda vacía, no inventes valores.Prompt 02
Catálogo entero, no solo la primera página
Cuando el sitio tiene paginación (?page=2, ?page=3, o un botón Siguiente). Claude detecta el patrón, itera con WebFetch por todas las páginas, junta resultados y deduplica.
Quiero el catálogo completo de este sitio, no solo la primera página: {pega URL de la página 1}
Pasos:
1. Haz WebFetch a la URL inicial y muéstrame cómo se ve el patrón de paginación (puede ser ?page=N, /pagina/N, o un enlace "Siguiente").
2. Recorre todas las páginas hasta donde tope o hasta {N, ej. 20} máximo.
3. De cada producto, extrae: {nombre, precio, link al detalle, imagen si tiene}.
4. Deduplica por link del detalle (a veces el mismo producto aparece en dos páginas).
5. Guárdalo todo en catalogo.csv ordenado por precio ascendente.
Si una página tarda más de 10 segundos, brincátela y dime cuál falló al final para que la revise yo manual.Prompt 03
Buscar + scrapear (SearchGraph nativo)
El equivalente nativo al SearchGraph de ScrapeGraphAI. Usa WebSearch para encontrar URLs candidatas, luego WebFetch en cada una, consolida en CSV. Sirve cuando no tienes las URLs específicas, solo el tema.
Busca y trae información sobre: {describe el tema, ej. "agencias de marketing digital en Guadalajara con más de 10 empleados"}
Pasos:
1. Usa WebSearch para encontrar las primeras {N, ej. 10} URLs candidatas.
2. Filtra las que claramente no aplican (foros, agregadores genéricos, anuncios pagados).
3. De cada URL que sobreviva, haz WebFetch y extrae: {nombre, sitio web, ciudad, una línea de qué hacen}.
4. Si una página no tiene la información clara, márcala como "incompleto" en lugar de inventar.
5. Consolida todo en resultados.csv y dime cuántas URLs encontraste, cuántas usaste y cuántas descartaste.Prompt 04
Exporta a Excel con formato (no solo CSV)
Cuando necesitas el archivo .xlsx con headers en negrita, anchos de columna automáticos y filtros. Claude escribe un script con openpyxl (o pandas + openpyxl), lo corre, te deja el Excel listo para abrir.
Toma el CSV que acabamos de generar (o este archivo: {nombre.csv}) y conviértelo a Excel .xlsx con formato bonito:
1. Header row con fondo gris claro y texto en negrita.
2. Anchos de columna ajustados al contenido más largo de cada una.
3. Filtros automáticos prendidos en la fila de headers.
4. Si hay columna de precio, formato de número con dos decimales y separador de miles.
5. Si hay columna de URL, que sea clicable (hipervínculo de verdad).
Usa Python con openpyxl. Si no está instalado, instálalo primero con pip install openpyxl. Guarda el archivo como datos.xlsx en esta carpeta.Prompt 05
Leads B2B desde directorios públicos
Crunchbase, G2, Product Hunt, cámaras de comercio sectoriales. Le pasas industria + región. Claude busca en los directorios públicos correctos, fetchea las páginas de empresa y arma un CSV de leads.
Necesito una lista de leads B2B de esta industria y región:
- Industria: {ej. SaaS de e-commerce}
- Región: {ej. México y Colombia}
- Tamaño objetivo: {ej. 10-200 empleados}
Pasos:
1. Identifica 2-3 directorios públicos donde estas empresas se listan (Crunchbase, G2, Product Hunt, AngelList, cámaras de comercio sectoriales, listados de Y Combinator, etc.). NO uses LinkedIn (bloquean bots y viola sus TOS).
2. Para cada directorio, usa WebSearch o WebFetch directo para encontrar las empresas que matchean.
3. De cada empresa, extrae lo que sea público en su perfil del directorio o en su sitio: nombre, sitio web, descripción de una línea, ciudad, tamaño (si aparece), correo de contacto general (solo si está publicado en su sitio).
4. Consolida en leads.csv ordenado por relevancia (qué tanto coincide con la industria).
5. Al final, dime de qué directorio sacaste cada lead para que pueda validar.
Reglas: solo info pública, sin scrapear datos personales individuales, sin tocar perfiles privados.05 los límites
Cuándo WebFetch no aguanta y conviene saltar al Camino B
El Camino A cubre la gran mayoría de casos cotidianos, pero hay cuatro síntomas claros que te empujan a instalar ScrapeGraphAI. Si reconoces alguno mientras estás trabajando, es señal de que ese caso específico se resuelve mejor con la librería.
Síntoma 01
WebFetch te devuelve un HTML casi vacío
Pasa con sitios hechos en React, Vue, Next.js donde el contenido carga después con JavaScript. WebFetch ve solo el cascarón. Aquí ScrapeGraphAI con Playwright sí jala porque abre un navegador headless real y espera a que renderice.
Síntoma 02
El sitio te tira un challenge de Cloudflare o un 403
Anti-bot agresivo. ScrapeGraphAI tiene undetected-playwright como dep que ayuda en algunos casos. No es bala de plata, pero pasa más checks que un fetch simple.
Síntoma 03
Necesitas barrer cientos o miles de URLs en una sentada
Hacer cientos de WebFetch en Claude Code es lento y caro en contexto. ScrapeGraphAI tiene SmartScraperMultiGraph con concurrencia controlada y manejo de errores por URL.
Síntoma 04
Es producción y necesitas schemas estrictos
Si vas a meter los datos a una base o un pipeline, necesitas que cada fila cumpla un schema (campos obligatorios, tipos correctos). ScrapeGraphAI acepta un Pydantic BaseModel y valida el output del LLM contra él.
Si ninguno de los cuatro síntomas aparece en tu caso, quédate en el Camino A. No metas complejidad innecesaria.
06 camino b
Instalar ScrapeGraphAI con Claude Code de orquestador, sin tocar Python tú
Cuando WebFetch no aguanta, el Plan B es instalar ScrapeGraphAI localmente. Claude Code se encarga de todo: corre pip install, configura el entorno, escribe el script y lo ejecuta. Tú sigues solo copiando prompts.
Lo único que necesitas en mente — Claude Code corre esto por ti
pip install scrapegraphai && playwright installPara que ScrapeGraphAI funcione, necesita un LLM provider como cerebro (no es Anthropic — ya lo dijimos). El más fácil y gratis es Groq: rápido, sin tarjeta, con modelos Llama de 70B que extraen igual de bien que GPT-4o-mini para scraping. Si ya tienes OpenAI o prefieres Ollama local, también funcionan, pero el setup más simple es con Groq.
- 01
Saca tu API key gratis de Groq
Entras a console.groq.com, te haces cuenta (no pide tarjeta), creas una API key, la copias. El free tier es suficiente para uso personal de scraping diario.
- 02
Pega el prompt 01 del Camino B (instalación todo-en-uno)
Claude Code instala scrapegraphai, instala los navegadores de Playwright, te pide pegar la API key en .env, corre un smoke test contra el sitio del repo para confirmar que jala.
- 03
Cuando el smoke test pase, mueve al prompt que necesites
Prompt 02 para sitios JS-pesados, 03 para batch de cientos de URLs, 04 para SearchGraph (busca + scrapea sin URLs previas). Claude escribe el script de Python, lo corre y te entrega los datos.
Si prefieres 100% local sin API key: sustituye Groq por Ollama. Instalas Ollama, descargas un modelo (ollama pull llama3.2) y en el config cambias el provider a ollama/llama3.2. Más fricción de setup, pero cero dependencia de servicios externos.
07 plan b en acción
Prompts listos — usando ScrapeGraphAI ya instalado
Estos prompts asumen que ya corriste el 01 (instalación) y el smoke test pasó. Si no, vete arriba a la sección del Camino B primero. Cada prompt produce un script de Python que Claude Code escribe y ejecuta por ti.
Prompt 01
Instálame ScrapeGraphAI y déjalo listo con Groq gratis
Todo-en-uno: pip install + playwright install + setup de la API key de Groq + smoke test. Cuando termina, ya puedes correr cualquiera de los siguientes prompts. Te explica dónde sacar la API key (es gratis, sin tarjeta).
Instálame ScrapeGraphAI en esta carpeta y déjalo listo para usar. Voy a usar Groq como provider porque es gratis. Pasos en orden, párate y avísame entre cada uno si algo falla: 1. Verifica que tengo Python 3.12 o más (python3 --version). Si no, dime cómo instalarlo según mi sistema (Mac/Windows/Linux). 2. Crea un virtualenv en .venv y actívalo (source .venv/bin/activate en Mac/Linux). 3. Corre pip install scrapegraphai y luego playwright install (esto puede tardar varios minutos descargando Chromium). 4. Crea un archivo .env con GROQ_API_KEY=PEGA_AQUI_TU_KEY como placeholder. Dime exactamente que tengo que ir a https://console.groq.com/, crear cuenta gratis, sacar una key y pegarla en ese archivo. Espera mi confirmación de que ya lo hice. 5. Cuando confirme, crea smoke_test.py que haga un SmartScraperGraph contra https://scrapegraphai.com/ pidiendo "extrae la descripción de la empresa y los fundadores". Configura el modelo como groq/llama-3.3-70b-versatile. 6. Corre el smoke test (python smoke_test.py). Si jala, dime que estamos listos y muéstrame el output. Si falla, diagnostícalo y arréglalo antes de seguir. 7. Agrega .env, .venv/ y __pycache__/ a .gitignore.
Prompt 02
SmartScraperGraph contra un sitio JS-pesado
Cuando WebFetch te devuelve casi nada porque el sitio renderiza con React/Vue/Next y el contenido carga después. Aquí ScrapeGraphAI sí ayuda porque usa Playwright (navegador headless real). Claude escribe el script, lo corre, te trae los datos en CSV.
Este sitio carga con JavaScript y WebFetch me da solo el shell vacío: {pega URL}
Lo que necesito extraer: {describe los campos, ej. "todos los productos visibles con nombre, precio y stock"}
Pasos:
1. Crea un script scrape_js.py que use SmartScraperGraph de ScrapeGraphAI con estas opciones:
- llm: groq/llama-3.3-70b-versatile (lee la key del .env que ya configuramos)
- headless: true
- verbose: true (para que vea qué está pasando si falla)
- timeout: 120 segundos (sitios JS tardan más)
2. El prompt del grafo debe ser específico: "extrae cada producto con sus campos: nombre, precio en MXN si está, stock o disponibilidad, link del detalle".
3. Corre el script.
4. El output va a ser un dict. Pásalo a pandas y guárdalo en js_scrape.csv.
5. Si Playwright se traba o Cloudflare lo bloquea, dime exactamente qué error apareció y proponme alternativas (ej. proxy rotation, modo no-headless, esperar más tiempo).Prompt 03
MultiGraph con 50+ URLs en paralelo
Lote masivo. Claude lee URLs desde un archivo urls.txt, construye SmartScraperMultiGraph, corre con paralelismo, junta resultados, exporta Excel. Útil cuando ya tienes la lista de páginas y necesitas barrerlas todas con el mismo prompt.
Tengo un archivo urls.txt con una URL por línea (más de 50). Quiero correr el mismo extract sobre todas y consolidar.
El extract que quiero: {describe los campos comunes, ej. "nombre del producto, precio, descripción corta"}
Pasos:
1. Lee urls.txt y dime cuántas URLs hay.
2. Crea scrape_multi.py usando SmartScraperMultiGraph con:
- llm: groq/llama-3.3-70b-versatile
- headless: true
- rate limit conservador (no más de 2 requests por segundo, no quiero que me bloqueen ni que Groq me tire por exceso).
3. Si son más de 100 URLs, parte el batch en chunks de 50 y avísame antes de seguir al siguiente para que pueda monitorear costo de tokens y errores.
4. Por cada URL fallida, anótala en errores.txt en lugar de tumbar todo el run.
5. Cuando termine, consolida resultados en lote.xlsx con una columna "url_origen" para que sepa de dónde vino cada fila.
6. Al final dame un resumen: cuántas funcionaron, cuántas fallaron, tokens totales gastados (lo trae verbose), tiempo total.Prompt 04
SearchGraph para 'encuentra y trae' temas amplios
Cuando no tienes URLs, solo el tema. SearchGraph busca en DuckDuckGo, scrapea los top N resultados y consolida. Funciona como una mini investigación automática.
Quiero hacer una investigación rápida sobre este tema y traerme datos consolidados, no resúmenes:
Tema: {describe la búsqueda, ej. "tiendas de café con tienda online que envían a CDMX, con precios de su grano de altura"}
Pasos:
1. Crea search_research.py usando SearchGraph de ScrapeGraphAI con:
- llm: groq/llama-3.3-70b-versatile
- max_results: 10 (Top 10 sitios que encuentre).
2. Prompt del grafo: "Lista cada tienda con: nombre, sitio web, ciudad, precio promedio de su grano de altura en MXN si está visible, si envía a CDMX, link directo al producto".
3. Corre el script y dame el dict crudo en pantalla.
4. Después conviértelo a search_results.csv con pandas. Limpia: si una tienda aparece duplicada en dos sitios distintos, deja la entrada más completa (la que tenga más campos llenos).
5. Al final muéstrame qué URLs consideró (search_graph.get_considered_urls()) para que sepa de dónde salió cada dato.08 casos reales
3 casos B2B legítimos donde esto te ahorra horas (y dinero)
Aquí van casos que la gente realmente quiere resolver, todos hechos con info pública y sin violar TOS de ningún servicio. Cada uno con un mock del CSV que te quedaría.
Caso 01
Monitoreo de precios de competidores e-commerce
Cuándo lo usas: Quieres saber cómo se mueve tu competencia en precios y stock cada semana.
Cómo lo haces: Camino A (single page → CSV) corrido cada 7 días contra las URLs de productos clave. Después comparas semana contra semana con un script chico.
producto,precio_actual,precio_anterior,delta,stock Tenis Modelo X,1299,1499,-200,Disponible Bolsa Modelo Y,2499,2499,0,Agotado Cinturón Z,799,899,-100,Disponible
Caso 02
Leads B2B desde directorios públicos sectoriales
Cuándo lo usas: Necesitas armar una lista de prospectos para outreach de tu agencia o tu SaaS. Tu segmento está claro: industria + región + tamaño.
Cómo lo haces: Camino A (prompt 05 de leads B2B) usando Crunchbase, G2, Product Hunt, AngelList, cámaras de comercio sectoriales o listas curadas tipo Y Combinator. Solo info pública del perfil.
empresa,sitio,ciudad,industria,contacto_publico Acme Café,acmecafe.mx,Monterrey,Café especialidad,hola@acmecafe.mx Beans Lab,beanslab.co,CDMX,Café especialidad, North Beans,northbeans.mx,Tijuana,Café especialidad,info@northbeans.mx
Caso 03
Monitoreo de noticias o cambios en una página
Cuándo lo usas: Necesitas estar al día de una página específica (cambios en pricing de un proveedor, nuevos posts en un blog, anuncios regulatorios).
Cómo lo haces: Camino A (single page) corrido en una cron job diaria. Guardas snapshot diario en CSV, diffeas contra el del día anterior. Para sitios JS-pesados, brincas al Camino B (prompt 02).
fecha,titulo,resumen,url 2026-05-28,Nuevo plan Pro,Lanzaron tier de $49/mes con 10k requests,/blog/nuevo-plan 2026-05-27,Cambio en API,Deprecaron endpoint v1 para julio,/blog/api-v1-deprecated
09 reglas del juego
Uso responsable, dónde NO usar esto, y cuándo conviene pagar
Scrapear datos públicos es una herramienta legítima, pero como toda herramienta tiene zonas grises. Lee esto antes de soltar el primer prompt en producción.
Respeta robots.txt y las reglas del sitio
ScrapeGraphAI no lo checa por default y WebFetch tampoco. La responsabilidad es tuya: si /robots.txt prohíbe el path, no lo scrapees. Tampoco compartas datos personales de terceros sin consentimiento.
Rate limit razonable
No mandes 100 requests por segundo a una página. Espacia mínimo 1-2 segundos entre fetch. Si ves 429 o 503, párate. Los prompts del Camino B ya traen esto built-in; en el Camino A pídele a Claude que respete el ritmo.
Copyright y reuso del contenido
Scrapear datos públicos para análisis interno o lead generation suele estar bien. Republicar contenido scrapeado (textos, imágenes, descripciones de productos) es otra cosa y puede meterte en problemas legales. Cuando dudes, no lo hagas.
Sitios donde no uses esto
LinkedIn es el ejemplo clásico: violas sus Terms of Service, bloquean bots agresivamente con detección, y han ganado juicios contra scrapers. Lo mismo aplica a Facebook, Instagram, Twitter cuando piden auth para ver. Usa sus APIs oficiales o paga directorios B2B que tengan los datos licenciados.
¿Y si necesito correrlo en la nube, no en mi compu? ScrapeGraphAI tiene un servicio hosted con tiers de pago para producción seria (créditos mensuales, sin mantener Python tú). Cuando vas más allá del uso personal, ese path es razonable. Los precios reales los consultas en su sitio, no inventamos números aquí.
10 dudas frecuentes
FAQ — las preguntas que siempre llegan
¿Necesito una API key para empezar?
En el Camino A no. Claude Code y WebFetch te bastan. En el Camino B sí: necesitas una API key de Groq (gratis, sin tarjeta) o de OpenAI (paid) o tener Ollama corriendo local. La key se guarda en un archivo .env en tu carpeta de trabajo.
¿Por qué Anthropic / Claude no está en la lista oficial de providers de ScrapeGraphAI?
Es decisión de ellos como mantenedores del proyecto open source. Sus providers oficiales son OpenAI, Groq, Google, Azure, Mistral, MiniMax, Ollama, entre otros. No te afecta para nada: si vas por el Camino A, Claude es el cerebro porque estás dentro de Claude Code; si vas por el Camino B, ScrapeGraphAI usa Groq u otro provider como cerebro mientras Claude Code orquesta todo lo demás.
¿Esto es legal?
Sí, en general, si scrapeas datos públicos respetando robots.txt, sin sobrecargar el servidor, y sin republicar contenido protegido por copyright. Las zonas grises son redes sociales con auth (LinkedIn, Facebook), datos personales sin consentimiento, y sitios que prohíben explícitamente el scraping en sus TOS. En esos casos, busca una API oficial o un proveedor de datos licenciado.
¿Cómo automatizo esto para que corra solo cada día?
Dos opciones. Camino A: usa /schedule de Claude Code (mira la guía de schedule en la bóveda) para correr tu prompt en la nube cada día. Camino B: una vez que tengas el script de Python funcionando, lo metes a una cron job en tu compu o en un servidor (cron, launchd en Mac, Task Scheduler en Windows).
¿Cómo paso el CSV a un Excel real con formato bonito?
El prompt 04 del Camino A lo hace por ti (openpyxl con headers en negrita, anchos automáticos, filtros, hipervínculos clicables). Si solo quieres abrirlo sin formato, Numbers en Mac, LibreOffice o Google Sheets abren CSV directo y lo conviertes a xlsx con un click.
¿Cuánto cuesta correr el Camino B con Groq?
Gratis para uso personal típico. El free tier de Groq es muy generoso (cientos de miles de tokens por día). Si rebasas el rate limit, ya tendrías que ir a su tier de pago, pero para 99% de los casos de scraping personal o de equipo chico, el free tier alcanza.
Guía de la comunidad
Esta entrada va a fondo en ScrapeGraphAI porque el patrón que construyeron los italianos (fetch → limpia → extrae con LLM → exporta) es lo que más cambia la cuenta de scraping de cualquiera, y resulta que Claude Code ya trae las cuatro piezas nativas. La guía vive en la bóveda de tododeia. Si algo cambia en el repo o en la doc oficial, ahí está la fuente de verdad.
Repo oficial de ScrapeGraphAI
Código fuente, ejemplos por cada tipo de grafo, issues abiertas. La fuente de verdad cuando algo cambie.
Documentación oficial
Reference de cada grafo (SmartScraper, SearchGraph, MultiGraph), providers soportados y opciones de configuración.
Groq Console — API key gratis
Donde sacas la API key del Camino B sin tarjeta. Free tier muy generoso, suficiente para uso personal de scraping.
Hosted dashboard (si quieres SaaS en lugar de local)
ScrapeGraphAI tiene su servicio en la nube. Útil cuando no quieres mantener el script corriendo en tu compu.
Scrapling
El otro scraper Python rápido que vive en la bóveda
MarkItDown
Convierte PDFs, Word, Excel a markdown legible
Comandos de Claude Code
Para sacarle todo el jugo a WebFetch
¿Por dónde empezar hoy?
Abre una carpeta nueva, prende Claude Code ahí y copia el prompt 01 del Camino A. En menos de un minuto ya tienes tu primer CSV de datos extraídos, sin instalar nada ni pagar API. Si topas con un sitio JS-pesado o necesitas correr cientos de URLs, ahí te mueves al Camino B.