Saca datos de una web y pásalos a JSON
Una página llena de productos desordenados, y un archivo JSON limpio con el nombre y el precio de cada uno. Sin escribir un scraper a mano. Se lo describes a Firecrawl en una frase y te lo devuelve estructurado.
Scrapear una web a mano es frágil: escribes selectores, la página cambia, se rompe. Firecrawl le da la vuelta: le dices qué datos quieres en lenguaje normal y un agente lee la página y te los devuelve en JSON. Vamos a sacar una lista de productos de una tienda, pero sirve para cualquier dato: precios, listados, directorios, fichas.
Por qué aguanta donde un scraper normal no: un scraper a mano depende de la estructura
exacta de la página, así que el día que renombran una clase, se rompe. El agente lee la
página como lo harías tú, por significado. Cambia el diseño y sigue encontrando el
precio, porque le pediste "el precio", no div.col-3 > span.amount.
1. Instala la CLI y entra
Firecrawl tiene una herramienta de línea de comandos. Instálala con Node y autentícate:
npm install -g firecrawl-cli
Comprueba que quedó lista. Si te falta la clave, el comando te guía para crearla en
firecrawl.dev
(el plan gratis da créditos de sobra para empezar). Guárdala en un
.env como cualquier otra clave, nunca en el código: lo tienes en
tu primera API key, sin filtrarla.
firecrawl --status
● Authenticated
Credits: 500,000 remaining 2. Primero, mira qué hay en la página
Antes de extraer nada, scrapea la página para ver su contenido limpio. Esto te devuelve la página en markdown, sin menús ni ruido:
firecrawl scrape https://tienda-ejemplo.com/productos -o pagina.md
Abre pagina.md y comprueba que los datos que quieres están ahí. Si se
ven, el agente los va a poder extraer.
3. Pídele los datos en JSON
Ahora la parte buena. El comando agent recibe una frase con lo que
quieres y la URL, y te devuelve JSON. --wait espera a que termine y
--pretty lo deja legible:
firecrawl agent "extrae cada producto con su nombre y su precio" \
--urls https://tienda-ejemplo.com/productos \
--wait --pretty -o productos.json Y productos.json queda así, listo para usar en cualquier sitio:
[
{ "nombre": "Silla Nórdica", "precio": 89.00 },
{ "nombre": "Mesa de Roble", "precio": 240.00 },
{ "nombre": "Lámpara de Pie", "precio": 65.50 }
] 4. Si quieres más precisión, dale un schema
Con la frase basta para la mayoría de casos. Si necesitas que los campos salgan
exactos siempre (mismos nombres, mismos tipos), le pasas un schema con
--schema:
firecrawl agent "extrae los productos" \
--urls https://tienda-ejemplo.com/productos \
--schema '{"type":"array","items":{"type":"object","properties":{"nombre":{"type":"string"},"precio":{"type":"number"}}}}' \
--wait --pretty -o productos.json Cuando algo se rompe
Los tropiezos típicos, y el arreglo de cada uno:
- "command not found: firecrawl". Node no está instalado, o la instalación global no entró. Revisa instala Node y vuelve a lanzar la línea de instalación.
- 401 o "out of credits". La clave no está puesta, o gastaste los créditos gratis. Guárdala como toca (tu primera API key, sin filtrarla) y revisa tu panel.
- Al JSON le faltan campos. La frase fue muy vaga. Nombra los campos exactos, o pásale un
--schemacomo en el paso 4. - No devolvió nada. Los datos cargan tras un clic o un login, así que no estaban en la página que leyó el agente. Abre el
pagina.mddel paso 2: si no están ahí, el agente tampoco los ve.
Ahora prueba esto
El mismo comando, más alcance:
- Varias páginas a la vez. Pásale más de una URL a
--urlsy las junta en un solo archivo. - Vigila los precios de la competencia. Apúntalo a su tienda, guarda el JSON, y compáralo la semana que viene.
- Haz que corra solo. Mételo en una tarea programada y ten los datos frescos cada mañana sin mover un dedo.
- Mándalo a algún sitio. El JSON entra directo en una hoja, una base de datos, o el siguiente paso de una automatización.
Lo que acabas de hacer
Convertiste una página web en datos que puedes usar, sin escribir ni mantener un scraper. Lo que pediste eran productos, pero el mismo comando saca precios de la competencia, listados de un directorio, o cualquier dato que se vea en una página. El trabajo dejó de ser programar el scraper; ahora es solo decir qué quieres.
Déjame tu correo y te aviso cuando publique el próximo build, con el código y los prompts que usé. Sin spam.
Más tutoriales ↗