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

Installation

npm install firecrawl-aisdk ai @ai-sdk/openai
Configurer les variables d’environnement :
FIRECRAWL_API_KEY=fc-your-key
OPENAI_API_KEY=sk-your-key
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.

Prise en main rapide

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 },
});

Outils disponibles

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';

Exemples

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: 'Scrape https://firecrawl.dev et résume ce que ça fait',
  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: 'Recherchez Firecrawl et résumez ce que vous trouvez',
  tools: { search: searchTool },
});

console.log(text);

Cartographie

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);

Crawl

Opération asynchrone — incluez pollTool pour vérifier l’état de la tâche.
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);

Scraping par lots

Opération asynchrone : incluez pollTool pour vérifier le statut du job.
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);

Extraction

Opération asynchrone : inclure pollTool pour vérifier l’état de la tâche.
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);

Recherche + Extraction

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);

Streaming

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);
}
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.
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);
Combinez browserTool avec searchTool pour des workflows qui commencent par une recherche, puis se poursuivent par une navigation interactive.
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);

Agent

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.
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);