> ## Documentation Index
> Fetch the complete documentation index at: https://firecrawl-abimaelmartell-agent-default-model.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Vercel AI SDK

> Herramientas de Firecrawl para Vercel AI SDK. Web scraping, búsqueda, navegación y extracción de datos para aplicaciones de IA.

Herramientas de Firecrawl para Vercel AI SDK. Web scraping, búsqueda, navegación y extracción de datos para aplicaciones de IA.

<div id="install">
  ## Instalación
</div>

```bash theme={null}
npm install firecrawl-aisdk ai
```

Configura las variables de entorno:

```bash theme={null}
FIRECRAWL_API_KEY=fc-your-key       # https://firecrawl.dev
AI_GATEWAY_API_KEY=your-key         # https://vercel.com/ai-gateway
```

<Note>
  Estos ejemplos usan el formato de modelo *string* de [Vercel AI Gateway](https://vercel.com/ai-gateway), pero las herramientas de Firecrawl funcionan con cualquier proveedor de SDK de IA. Puedes cambiarlo por `openai('gpt-5-mini')`, `anthropic('claude-sonnet-4.5')` o cualquier [proveedor compatible](https://ai-sdk.dev/providers/ai-sdk-providers).
</Note>

<div id="quick-start">
  ## Inicio rápido
</div>

La manera más sencilla de comenzar. `FirecrawlTools()` te proporciona herramientas de búsqueda, scraping y navegador con un prompt de sistema autogenerado que guía al modelo en la selección de herramientas.

```typescript theme={null}
import { generateText, stepCountIs } from 'ai';
import { FirecrawlTools } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  prompt: 'Search for Firecrawl, scrape the top result, and summarize what it does',
  tools: FirecrawlTools(),
  stopWhen: stepCountIs(5),
});
```

Con opciones personalizadas:

```typescript theme={null}
const tools = FirecrawlTools({
  apiKey: 'fc-custom-key',                // opcional, usa la variable de entorno por defecto
  search: { limit: 3, country: 'US' },    // opciones de búsqueda predeterminadas
  scrape: { onlyMainContent: true },       // opciones de scraping predeterminadas
  browser: {},                             // habilitar herramienta de navegador
});
```

Deshabilita cualquier herramienta pasando `false`:

```typescript theme={null}
const tools = FirecrawlTools({
  browser: false,   // solo búsqueda + scraping
});
```

<div id="individual-tools">
  ## Herramientas individuales
</div>

Cada herramienta es de **doble propósito**: puedes usarla directamente como herramienta (lee `FIRECRAWL_API_KEY` de las variables de entorno) o utilizarla como fábrica para una configuración personalizada:

```typescript theme={null}
import { scrape, search } from 'firecrawl-aisdk';

// Usar directamente - lee FIRECRAWL_API_KEY del entorno
const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  tools: { scrape, search },
  prompt: '...',
});

// O llamar como factory para configuración personalizada
const customScrape = scrape({ apiKey: 'fc-custom-key' });
const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  tools: { scrape: customScrape },
  prompt: '...',
});
```

<div id="scrape">
  ### Extracción
</div>

```typescript theme={null}
import { generateText } from 'ai';
import { scrape } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  prompt: 'Extrae datos de https://firecrawl.dev y resume lo que hace',
  tools: { scrape },
});
```

<div id="search">
  ### Búsqueda
</div>

```typescript theme={null}
import { generateText } from 'ai';
import { search } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  prompt: 'Busca información sobre Firecrawl y resume lo que encuentres',
  tools: { search },
});
```

<div id="search-scrape">
  ### Búsqueda + Scraping
</div>

```typescript theme={null}
import { generateText } from 'ai';
import { search, scrape } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  prompt: 'Busca Firecrawl, extrae el resultado principal y explica qué hace',
  tools: { search, scrape },
});
```

<div id="map">
  ### Mapeo
</div>

```typescript theme={null}
import { generateText } from 'ai';
import { map } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  prompt: 'Mapea https://docs.firecrawl.dev y lista las secciones principales',
  tools: { map },
});
```

<div id="stream">
  ### Streaming
</div>

```typescript theme={null}
import { streamText } from 'ai';
import { scrape } from 'firecrawl-aisdk';

const result = streamText({
  model: 'anthropic/claude-sonnet-4.5',
  prompt: 'Extrae https://firecrawl.dev y explica qué hace',
  tools: { scrape },
});

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

<div id="browser">
  ## Navegador
</div>

La herramienta del navegador crea automáticamente una sesión en la nube en su primer uso y la elimina al finalizar el proceso:

```typescript theme={null}
import { generateText, stepCountIs } from 'ai';
import { browser } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  tools: { browser: browser() },
  stopWhen: stepCountIs(25),
  prompt: 'Go to https://news.ycombinator.com and get the top 3 stories.',
});
```

Para obtener una URL de visualización en tiempo real (para observar el navegador en tiempo real) o controlar manualmente el ciclo de vida de la sesión:

```typescript theme={null}
const browserTool = browser();
console.log('Live view:', await browserTool.start());

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  tools: { browserTool },
  stopWhen: stepCountIs(25),
  prompt: 'Go to https://news.ycombinator.com and get the top 3 stories.',
});

await browserTool.close();
```

<div id="browser-search">
  ### Navegador + Búsqueda
</div>

```typescript theme={null}
import { generateText, stepCountIs } from 'ai';
import { browser, search } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  tools: { browser: browser(), search },
  stopWhen: stepCountIs(25),
  prompt: 'Search for the top AI paper this week, browse it, and summarize the key findings.',
});
```

<div id="async-tools">
  ## Herramientas asíncronas
</div>

Crawl, batch scrape, extract y agent devuelven un ID de trabajo. Combínalos con `poll` para obtener los resultados:

<div id="crawl">
  ### Crawl
</div>

```typescript theme={null}
import { generateText } from 'ai';
import { crawl, poll } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  prompt: 'Crawl https://docs.firecrawl.dev (limit 3 pages) and summarize',
  tools: { crawl, poll },
});
```

<div id="batch-scrape">
  ### Rastreo por lotes
</div>

```typescript theme={null}
import { generateText } from 'ai';
import { batchScrape, poll } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  prompt: 'Scrape https://firecrawl.dev and https://docs.firecrawl.dev, then compare',
  tools: { batchScrape, poll },
});
```

<div id="agent">
  ### Agente
</div>

Recopilación autónoma de datos web: busca, navega y extrae datos de forma autónoma.

```typescript theme={null}
import { generateText, stepCountIs } from 'ai';
import { agent, poll } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: 'anthropic/claude-sonnet-4.5',
  prompt: 'Encuentra los fundadores de Firecrawl, sus roles y sus trayectorias',
  tools: { agent, poll },
  stopWhen: stepCountIs(10),
});
```

<div id="all-exports">
  ## Todas las exportaciones
</div>

```typescript theme={null}
import {
  // Herramientas de doble propósito (usar directamente o llamar como factory)
  scrape,             // Extrae una sola URL
  search,             // Busca en la web
  map,                // Descubre URLs en un sitio
  crawl,              // Rastrea múltiples páginas (async)
  batchScrape,        // Extrae múltiples URLs (async)
  agent,              // Agente web autónomo (async)
  extract,            // Extrae datos estructurados (async)

  // Gestión de trabajos
  poll,               // Consulta trabajos async para obtener resultados
  status,             // Verifica el estado del trabajo
  cancel,             // Cancela trabajos en ejecución

  // Navegador (solo factory)
  browser,            // browser({ firecrawlApiKey: '...' })

  // Paquete todo en uno
  FirecrawlTools,     // FirecrawlTools({ apiKey, search, scrape, browser })

  // Utilidades
  stepLogger,         // Estadísticas de tokens por llamada a herramienta
  logStep,            // Registro simple en una línea
} from 'firecrawl-aisdk';
```
