Skip to content
Firecrawl Docs
Firecrawl Docs
Harnesses para agentes

OpenRouter

Usa Firecrawl como herramienta con cualquier modelo ofrecido por OpenRouter.

Combina OpenRouter —una API unificada para cientos de LLM— con Firecrawl para que cualquier modelo tenga búsqueda web, scraping y crawl en tiempo real.

La API de OpenRouter es compatible con OpenAI, por lo que puedes usar el SDK de OpenAI configurado para apuntar a la URL base de OpenRouter, junto con el SDK de Python o JavaScript de Firecrawl como herramienta.

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

Esto hace scraping de una página con Firecrawl y la resume con el modelo de OpenRouter que elijas; aquí, 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);

Reemplaza la cadena model por cualquier modelo compatible con OpenRouteropenai/gpt-5, google/gemini-2.5-pro, meta-llama/llama-4-maverick, etc.

OpenRouter admite llamadas a herramientas al estilo de OpenAI, por lo que Firecrawl se integra como una función que el modelo puede invocar.

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);
}
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)
  • Firecrawl es totalmente agnóstico respecto al modelo: elige cualquier modelo de OpenRouter sin cambiar el código de scraping.
  • Muchas de las principales aplicaciones de OpenRouter (Cline, Roo Code, Kilo, Cursor, Continue) son en sí mismas entornos de agentes que pueden usar el MCP de Firecrawl; consulta MCP Server para integrar Firecrawl directamente en ellas.
  • Para trabajos de gran volumen, usa extracción por lotes para mantenerte dentro de los límites de contexto del LLM.
Was this page helpful?Suggest editsRaise issue