Passer au contenu principal
Associez OpenRouter — une API unifiée pour des centaines de LLM — à Firecrawl pour doter n’importe quel modèle de fonctionnalités de recherche web en temps réel, de scraper et de crawl. L’API d’OpenRouter est compatible avec OpenAI. Vous pouvez donc utiliser le SDK OpenAI configuré avec l’URL de base d’OpenRouter, ainsi que le SDK Python ou JavaScript de Firecrawl comme outil.

Configuration

npm install firecrawl openai zod
export FIRECRAWL_API_KEY=fc-YOUR-API-KEY
export OPENROUTER_API_KEY=sk-or-YOUR-OPENROUTER-KEY

Scraper + résumer avec n’importe quel modèle OpenRouter

Cette méthode scrape une page avec Firecrawl et la résume avec le modèle de votre choix sur OpenRouter — ici, Claude Haiku 4.5.
import { Firecrawl } from 'firecrawl';
import OpenAI from 'openai';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const openrouter = new OpenAI({
  apiKey: process.env.OPENROUTER_API_KEY,
  baseURL: 'https://openrouter.ai/api/v1',
});

const scraped = await firecrawl.scrape('https://docs.firecrawl.dev', {
  formats: ['markdown'],
});

const completion = await openrouter.chat.completions.create({
  model: 'anthropic/claude-haiku-4.5',
  messages: [
    { role: 'user', content: `Summarize in 5 bullets: ${scraped.markdown}` },
  ],
});

console.log(completion.choices[0]?.message.content);
Remplacez la valeur de model par n’importe quel modèle pris en charge par OpenRouteropenai/gpt-5, google/gemini-2.5-pro, meta-llama/llama-4-maverick, etc.

Appel d’outils : le modèle décide quand scraper

OpenRouter prend en charge les appels d’outils au format OpenAI, ce qui permet à Firecrawl de s’intégrer comme une fonction que le modèle peut appeler.
import { Firecrawl } from 'firecrawl';
import OpenAI from 'openai';
import { z } from 'zod';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const openrouter = new OpenAI({
  apiKey: process.env.OPENROUTER_API_KEY,
  baseURL: 'https://openrouter.ai/api/v1',
});

const ScrapeArgs = z.object({
  url: z.string().describe('The URL to scrape'),
});

const tools = [
  {
    type: 'function' as const,
    function: {
      name: 'scrape_website',
      description: 'Scrape the markdown content of any URL via Firecrawl',
      parameters: z.toJSONSchema(ScrapeArgs),
    },
  },
];

const response = await openrouter.chat.completions.create({
  model: 'anthropic/claude-haiku-4.5',
  tools,
  messages: [
    {
      role: 'user',
      content: 'What is Firecrawl? Visit firecrawl.dev and tell me.',
    },
  ],
});

const call = response.choices[0]?.message.tool_calls?.[0];
if (call?.function.name === 'scrape_website') {
  const { url } = ScrapeArgs.parse(JSON.parse(call.function.arguments));
  const page = await firecrawl.scrape(url, { formats: ['markdown'] });
  console.log(page.markdown);
}

Python

import os
from firecrawl import Firecrawl
from openai import OpenAI

firecrawl = Firecrawl(api_key=os.environ["FIRECRAWL_API_KEY"])

openrouter = OpenAI(
    api_key=os.environ["OPENROUTER_API_KEY"],
    base_url="https://openrouter.ai/api/v1",
)

page = firecrawl.scrape("https://docs.firecrawl.dev", formats=["markdown"])

completion = openrouter.chat.completions.create(
    model="anthropic/claude-haiku-4.5",
    messages=[{"role": "user", "content": f"Summarize: {page.markdown}"}],
)

print(completion.choices[0].message.content)

Remarques

  • Firecrawl est totalement agnostique vis-à-vis du modèle — choisissez n’importe quel modèle OpenRouter sans modifier le code de scraper.
  • Bon nombre des principales applications OpenRouter (Cline, Roo Code, Kilo, Cursor, Continue) sont elles-mêmes des intégrations pour agent capables d’utiliser Firecrawl MCP — voir MCP Server pour intégrer directement Firecrawl à celles-ci.
  • Pour les jobs volumineux, utilisez l’extraction par lot afin de respecter les limites de contexte des LLM.