← Tutoriales
CONSTRUIR · DATOS · 10 MIN

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.

Para
quien necesita datos de una web sin programar un scraper
Necesitas
Node, una API key de Firecrawl y saber guardarla sin filtrarla
Tiempo
10 minutos

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.

PÁGINA SUCIA menús, ruido, HTML FIRECRAWL tú lo describes JSON LIMPIO solo tus campos
Sin selectores, sin scraper. Nombras los campos que quieres; el agente lee la página y te los devuelve.

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:

Ahora prueba esto

El mismo comando, más alcance:

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.

¿TE SIRVIÓ? RECIBE EL PRÓXIMO

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 ↗