> ## Documentation Index
> Fetch the complete documentation index at: https://student-213fb9fc.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Vercel AI SDK

> Outils Firecrawl pour Vercel AI SDK. Web scraping, recherche, navigation et extraction de données pour les applications d'IA.

Outils Firecrawl pour Vercel AI SDK. Effectuez du web scraping, recherchez, naviguez et extrayez des données web dans vos applications d'IA.

<div id="install">
  ## Installation
</div>

```bash theme={null}
npm install firecrawl-aisdk ai @ai-sdk/openai
```

Configurer les variables d'environnement :

```bash theme={null}
FIRECRAWL_API_KEY=fc-your-key
OPENAI_API_KEY=sk-your-key
```

<Note>
  Ces exemples utilisent OpenAI, mais les outils Firecrawl fonctionnent avec n'importe quel fournisseur du SDK Vercel AI, y compris Anthropic, Google, Mistral et d'autres. Consultez la liste complète des [fournisseurs pris en charge](https://ai-sdk.dev/providers/ai-sdk-providers).
</Note>

<div id="quick-start">
  ## Prise en main rapide
</div>

```typescript theme={null}
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: 'Scrape https://firecrawl.dev et résume ce que ça fait',
  tools: { scrape: scrapeTool },
});
```

<div id="available-tools">
  ## Outils disponibles
</div>

```typescript theme={null}
import {
  scrapeTool,         // Scrape single URL
  searchTool,         // Search the web
  browserTool,        // Sessions de navigateur interactives
  agentTool,          // Autonomous web agent
  mapTool,            // Discover URLs on a site
  crawlTool,          // Crawl multiple pages
  batchScrapeTool,    // Scrape multiple URLs
  extractTool,        // Extract structured data
  pollTool,           // Poll async jobs
  statusTool,         // Check job status
  cancelTool,         // Cancel jobs
} from 'firecrawl-aisdk';
```

<div id="examples">
  ## Exemples
</div>

<div id="scrape">
  ### Scraping
</div>

```typescript theme={null}
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: 'Scrape https://firecrawl.dev et résume ce que ça fait',
  tools: { scrape: scrapeTool },
});

console.log(text);
```

<div id="search">
  ### Recherche
</div>

```typescript theme={null}
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: 'Recherchez Firecrawl et résumez ce que vous trouvez',
  tools: { search: searchTool },
});

console.log(text);
```

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

```typescript theme={null}
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: 'Map https://docs.firecrawl.dev and list the main sections',
  tools: { map: mapTool },
});

console.log(text);
```

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

Opération asynchrone — incluez `pollTool` pour vérifier l'état de la tâche.

```typescript theme={null}
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: 'Parcourir https://docs.firecrawl.dev (limite 3 pages) et résumer',
  tools: { crawl: crawlTool, poll: pollTool },
});

console.log(text);
```

<div id="batch-scrape">
  ### Scraping par lots
</div>

Opération asynchrone : incluez `pollTool` pour vérifier le statut du job.

```typescript theme={null}
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: 'Scrape https://firecrawl.dev and https://docs.firecrawl.dev, then compare',
  tools: { batchScrape: batchScrapeTool, poll: pollTool },
});

console.log(text);
```

<div id="extract">
  ### Extraction
</div>

Opération asynchrone : inclure `pollTool` pour vérifier l'état de la tâche.

```typescript theme={null}
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: 'Extract the main features from https://firecrawl.dev',
  tools: { extract: extractTool, poll: pollTool },
});

console.log(text);
```

<div id="search-scrape">
  ### Recherche + Extraction
</div>

```typescript theme={null}
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: 'Recherche Firecrawl, scrape le premier résultat et explique ce qu'il fait',
  tools: { search: searchTool, scrape: scrapeTool },
});

console.log(text);
```

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

```typescript theme={null}
import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { scrapeTool } from 'firecrawl-aisdk';

const result = streamText({
  model: openai('gpt-5-mini'),
  prompt: 'Scrape https://firecrawl.dev and explain what it does',
  tools: { scrape: scrapeTool },
});

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

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

Utilisez `browserTool` avec `ToolLoopAgent` pour une navigation web interactive. L’agent peut parcourir des pages, cliquer sur des éléments, remplir des formulaires et extraire des données.

```typescript theme={null}
import { ToolLoopAgent, stepCountIs } from 'ai';
import { openai } from '@ai-sdk/openai';
import { browserTool } from 'firecrawl-aisdk';

const { text } = await new ToolLoopAgent({
  model: openai('gpt-5-mini'),
  tools: { browserTool },
  stopWhen: stepCountIs(25),
}).generate({
  prompt: 'Go to https://news.ycombinator.com, get the top 3 stories with their titles, points, and links.',
});

console.log(text);
```

<div id="browser-search">
  ### Navigateur + Recherche
</div>

Combinez `browserTool` avec `searchTool` pour des workflows qui commencent par une recherche, puis se poursuivent par une navigation interactive.

```typescript theme={null}
import { ToolLoopAgent, stepCountIs } from 'ai';
import { openai } from '@ai-sdk/openai';
import { browserTool, searchTool } from 'firecrawl-aisdk';

const { text } = await new ToolLoopAgent({
  model: openai('gpt-5-mini'),
  tools: { browserTool, searchTool },
  stopWhen: stepCountIs(25),
}).generate({
  prompt: 'Search for the top AI paper this week, browse it, and summarize the key findings.',
});

console.log(text);
```

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

Utilisez `agentTool` pour la collecte autonome de données sur le web. L’agent recherche, navigue et extrait les données de manière autonome.

```typescript theme={null}
import { generateText, stepCountIs } from 'ai';
import { openai } from '@ai-sdk/openai';
import { agentTool, pollTool } from 'firecrawl-aisdk';

const { text } = await generateText({
  model: openai('gpt-5-mini'),
  prompt: 'Trouve les fondateurs de Firecrawl, leurs rôles et leurs parcours',
  tools: { agent: agentTool, poll: pollTool },
  stopWhen: stepCountIs(10),
});

console.log(text);
```
