Pular para o conteúdo principal

Documentation Index

Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt

Use this file to discover all available pages before exploring further.

Combine o OpenRouter — uma API unificada para centenas de LLMs — com o Firecrawl para adicionar a qualquer modelo busca na web, scraping e rastreamento em tempo real. A API do OpenRouter é compatível com a OpenAI, então você pode usar o SDK da OpenAI apontado para a URL base do OpenRouter, além do SDK em Python ou JavaScript do Firecrawl como ferramenta.

Configuração

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

Scraping + resumo com qualquer modelo do OpenRouter

Faz o scraping de uma página com o Firecrawl e a resume com o modelo que você escolher no OpenRouter — aqui, Claude Haiku 4.5.
import FirecrawlApp from '@mendable/firecrawl-js';
import OpenAI from 'openai';

const firecrawl = new FirecrawlApp({ 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);
Altere a string model para qualquer modelo suportado pelo OpenRouteropenai/gpt-5, google/gemini-2.5-pro, meta-llama/llama-4-maverick etc.

Chamada de ferramenta: o modelo decide quando fazer scraping

O OpenRouter oferece suporte a chamadas de ferramenta no estilo da OpenAI, então o Firecrawl se integra como uma função que o modelo pode invocar.
import FirecrawlApp from '@mendable/firecrawl-js';
import OpenAI from 'openai';
import { z } from 'zod';

const firecrawl = new FirecrawlApp({ 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 FirecrawlApp
from openai import OpenAI

firecrawl = FirecrawlApp(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)

Notas

  • O Firecrawl é totalmente agnóstico em relação a modelos — escolha qualquer modelo do OpenRouter sem alterar o código de scraping.
  • Muitos dos principais apps do OpenRouter (Cline, Roo Code, Kilo, Cursor, Continue) são, eles próprios, frameworks de agentes que podem usar o Firecrawl MCP — consulte MCP Server para conectar o Firecrawl diretamente a eles.
  • Para jobs maiores, use extração em lote para ficar dentro dos limites de contexto do LLM.