Saltar al contenido principal
Herramientas de Firecrawl para Vercel AI SDK v5. Web scraping, búsqueda, rastreo y extracción de datos para aplicaciones de IA.

Instalación

npm install firecrawl-aisdk ai @ai-sdk/openai
Configura las variables de entorno:
FIRECRAWL_API_KEY=fc-your-key
OPENAI_API_KEY=sk-your-key
Estos ejemplos usan OpenAI, pero las herramientas de Firecrawl funcionan con cualquier proveedor del SDK de IA de Vercel, incluidos Anthropic, Google, Mistral y más. Consulta la lista completa de proveedores compatibles.

Inicio rápido

import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { scrapeTool } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: openai('gpt-5-mini'),
  prompt: 'Extrae datos de https://firecrawl.dev y resume lo que hace',
  tools: { scrape: scrapeTool },
});

Herramientas disponibles

import {
  scrapeTool,         // Extraer una sola URL
  searchTool,         // Buscar en la web
  mapTool,            // Descubrir URLs en un sitio
  crawlTool,          // Rastrear múltiples páginas
  batchScrapeTool,    // Extraer múltiples URLs
  extractTool,        // Extraer datos estructurados
  pollTool,           // Consultar trabajos asíncronos
  statusTool,         // Verificar estado del trabajo
  cancelTool,         // Cancelar trabajos
} from 'firecrawl-aisdk';

Ejemplos

Scraping

import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { scrapeTool } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: openai('gpt-5-mini'),
  prompt: 'Extrae datos de https://firecrawl.dev y resume lo que hace',
  tools: { scrape: scrapeTool },
});

console.log(text);
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { searchTool } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: openai('gpt-5-mini'),
  prompt: 'Busca información sobre Firecrawl y resume lo que encuentres',
  tools: { search: searchTool },
});

console.log(text);

Mapa

import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { mapTool } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: openai('gpt-5-mini'),
  prompt: 'Mapea https://docs.firecrawl.dev y enumera las secciones principales',
  tools: { map: mapTool },
});

console.log(text);

Crawl

Operación asíncrona: incluye pollTool para comprobar el estado de la tarea.
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { crawlTool, pollTool } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: openai('gpt-5-mini'),
  prompt: 'Crawlea https://docs.firecrawl.dev (límite de 3 páginas) y resume',
  tools: { crawl: crawlTool, poll: pollTool },
});

console.log(text);

Scrape por lotes

Operación asíncrona: incluye pollTool para comprobar el estado del trabajo.
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { batchScrapeTool, pollTool } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: openai('gpt-5-mini'),
  prompt: 'Extrae https://firecrawl.dev y https://docs.firecrawl.dev, luego compara',
  tools: { batchScrape: batchScrapeTool, poll: pollTool },
});

console.log(text);

Extract

Operación asíncrona: incluye pollTool para consultar el estado del trabajo.
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { extractTool, pollTool } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: openai('gpt-5-mini'),
  prompt: 'Extrae las funcionalidades principales de https://firecrawl.dev',
  tools: { extract: extractTool, poll: pollTool },
});

console.log(text);

Búsqueda + extracción de datos

import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { searchTool, scrapeTool } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: openai('gpt-5-mini'),
  prompt: 'Busca Firecrawl, extrae el resultado principal y explica qué hace',
  tools: { search: searchTool, scrape: scrapeTool },
});

console.log(text);

Transmisión

import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { scrapeTool } from 'firecrawl-aisdk';

const result = streamText({
  model: openai('gpt-5-mini'),
  prompt: 'Extrae datos de https://firecrawl.dev y explica qué hace',
  tools: { scrape: scrapeTool },
});

for await (const chunk of result.textStream) {
  process.stdout.write(chunk);
}