Saltar al contenido principal
Firecrawl Browser Sandbox ofrece a tus agentes un entorno de navegador seguro donde pueden interactuar con la web. Completa formularios, haz clic en botones, autentícate y mucho más. Sin configuración local, sin instalaciones de Chromium, sin problemas de compatibilidad de controladores. Agent Browser y Playwright ya vienen preinstalados. Disponible a través de API, CLI (Bash / agent-browser, Python, Node), Node SDK, Python SDK, Vercel AI SDK y MCP Server. Para añadir compatibilidad con navegador a un agente de programación de IA (Claude Code, Codex, Open Code, Cursor, etc.), instala la skill de Firecrawl:
npx -y firecrawl-cli@latest init --all --browser
Cada sesión se ejecuta en un sandbox aislado, desechable o persistente, que escala sin necesidad de gestionar infraestructura.

Inicio rápido

Crea una sesión, ejecuta código y ciérrala:
// npm install @mendable/firecrawl-js
import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

// 1. Iniciar una sesión
const session = await firecrawl.browser();
console.log(session.cdpUrl); // wss://cdp-proxy.firecrawl.dev/cdp/...

// 2. Execute code
const result = await firecrawl.browserExecute(session.id, {
  code: `
    await page.goto("https://news.ycombinator.com");
    const title = await page.title();
    console.log(title);
  `,
  language: "node",
});
console.log(result.result); // "Hacker News"

// 3. Close
await firecrawl.deleteBrowser(session.id);
  • Sin instalación de controladores - Sin binario de Chromium, sin playwright install, sin problemas de compatibilidad de controladores
  • Python, JavaScript y Bash - Envía código vía API, CLI o SDK y recibe los resultados. Los tres lenguajes se ejecutan de forma remota en el sandbox
  • agent-browser - CLI preinstalada con más de 40 comandos. Los agentes de IA escriben comandos bash simples en lugar de código de Playwright
  • Playwright disponible - Playwright viene preinstalado en el sandbox. Los agentes pueden escribir código con Playwright si lo prefieren.
  • Acceso CDP - Conecta tu propia instancia de Playwright por WebSocket cuando necesites control completo
  • Vista en vivo - Mira las sesiones en tiempo real mediante una URL de streaming integrable
  • Vista en vivo interactiva - Permite que los usuarios interactúen directamente con el navegador a través de un stream interactivo integrable

Iniciar una sesión

Devuelve un ID de sesión, una URL de CDP y una URL de vista en tiempo real.
import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

const session = await firecrawl.browser({
  ttl: 120,
  activityTtl: 60,
});

console.log(session.id);
console.log(session.cdpUrl);      // wss://cdp-proxy.firecrawl.dev/cdp/...
console.log(session.liveViewUrl); // https://liveview.firecrawl.dev/...
Response
{
  "success": true,
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "cdpUrl": "wss://cdp-proxy.firecrawl.dev/cdp/550e8400-e29b-41d4-a716-446655440000",
  "liveViewUrl": "https://liveview.firecrawl.dev/550e8400-e29b-41d4-a716-446655440000",
  "interactiveLiveViewUrl": "https://liveview.firecrawl.dev/550e8400-e29b-41d4-a716-446655440000?interactive=true"
}

Ejecutar código

import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

const result = await firecrawl.browserExecute("YOUR_SESSION_ID", {
  code: 'await page.goto("https://example.com"); const title = await page.title(); console.log(title);',
  language: "node",
});

console.log(result);
Response
{
  "success": true,
  "result": "Example Domain"
}

Gestión de descargas de archivos

Los archivos descargados dentro de una sesión se pueden capturar y devolver como base64. Usa la API de descargas de Playwright mediante el endpoint execute:
import base64

async with page.expect_download() as download_info:
    await page.click('a#download-link')  # Haz clic en el elemento que activa la descarga

download = download_info.value
path = await download.path()

# Opcionalmente, guarda el archivo en una ruta conocida
# await download.save_as('/tmp/myfile.pdf')

# Lee el contenido del archivo y genera la salida en base64
with open(path, "rb") as f:
    content = base64.b64encode(f.read()).decode()
    print(content)
El sistema de archivos del sandbox es efímero: los archivos descargados se pierden cuando termina la sesión. Para conservarlos, lee su contenido dentro de la sesión y guárdalo en tu propio almacenamiento. Los perfiles persistentes conservan el estado del navegador (cookies, localStorage), pero no los archivos en disco.

agent-browser (Modo Bash)

agent-browser es una CLI de navegador headless preinstalada en cada sandbox. En lugar de escribir código de Playwright, los agentes envían comandos de bash sencillos. La CLI inyecta automáticamente --cdp para que agent-browser se conecte a tu sesión activa.

Atajo

La forma más rápida de usar browser. Tanto el atajo como execute envían comandos a agent-browser automáticamente. El atajo simplemente omite execute y abre una sesión automáticamente si es necesario:
firecrawl browser "open https://example.com"
firecrawl browser "snapshot"
firecrawl browser "click @e5"

CLI

La forma explícita usa execute. Los comandos se envían automáticamente a agent-browser; no necesitas escribir agent-browser ni usar --bash:
firecrawl browser execute "open https://example.com"
firecrawl browser execute "snapshot"

API y SDK

Utiliza language: "bash" para ejecutar comandos de agent-browser a través de la API o los SDK:
curl -X POST "https://api.firecrawl.dev/v2/browser/YOUR_SESSION_ID/execute" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "agent-browser snapshot",
    "language": "bash"
  }'

Gestión de sesiones

Sesiones persistentes

De forma predeterminada, cada sesión de navegador comienza desde cero. Con profile, puedes guardar el estado del navegador entre sesiones. Esto es útil para seguir conectado y mantener tus preferencias. Para guardar o seleccionar un perfil, usa el parámetro profile al crear una sesión.
const session = await firecrawl.browser({
  ttl: 600,
  profile: {
    name: "my-profile",
    saveChanges: true,
  },
});
ParámetroPredeterminadoDescripción
nameUn nombre para el perfil persistente. Las sesiones con el mismo nombre comparten el almacenamiento.
saveChangestrueCuando es true, el estado del navegador se guarda de nuevo en el perfil al cerrarse. Establécelo en false para cargar datos existentes sin escribir, útil cuando necesitas varios lectores concurrentes.
Solo una sesión puede guardar en un perfil a la vez. Si otra sesión ya está guardando, recibirás un error 409. Aun así puedes abrir el mismo perfil con saveChanges: false o intentarlo de nuevo más tarde.
El estado de la sesión del navegador solo se guarda cuando la sesión se cierra. Por ello, recomendamos cerrar la sesión de navegador cuando termines de usarla para que pueda reutilizarse. Una vez cerrada una sesión, su ID de sesión deja de ser válido; no puedes reutilizarlo. En su lugar, crea una nueva sesión con el mismo nombre de perfil y usa el nuevo ID de sesión devuelto en la respuesta. Para guardarla y cerrarla:
import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

await firecrawl.deleteBrowser("YOUR_SESSION_ID");

Listar sesiones

import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

const { sessions } = await firecrawl.listBrowsers();
console.log(sessions);

// Filtrar por estado
const { sessions: active } = await firecrawl.listBrowsers({ status: "active" });
console.log(active);
Response
{
  "success": true,
  "sessions": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "status": "active",
      "cdpUrl": "wss://cdp-proxy.firecrawl.dev/cdp/550e8400-e29b-41d4-a716-446655440000",
      "liveViewUrl": "https://liveview.firecrawl.dev/550e8400-e29b-41d4-a716-446655440000",
      "interactiveLiveViewUrl": "https://liveview.firecrawl.dev/550e8400-e29b-41d4-a716-446655440000?interactive=true",
      "createdAt": "2025-01-15T10:30:00Z",
      "lastActivity": "2025-01-15T10:35:00Z"
    }
  ]
}

Configuración de TTL

Las sesiones tienen dos controles de TTL:
ParámetroPredeterminadoDescripción
ttl600s (10 min)Vida útil máxima de la sesión (30-3600s)
activityTtl300s (5 min)Cierre automático tras inactividad (10-3600s)

Cerrar una sesión

import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

await firecrawl.deleteBrowser("YOUR_SESSION_ID");

Vista en vivo

Cada sesión devuelve un liveViewUrl en la respuesta que puedes insertar para ver el navegador en tiempo real. Resulta útil para depuración, demostraciones o para crear interfaces de usuario basadas en el navegador.
Response
{
  "success": true,
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "cdpUrl": "wss://cdp-proxy.firecrawl.dev/cdp/550e8400-...",
  "liveViewUrl": "https://liveview.firecrawl.dev/550e8400-...",
  "interactiveLiveViewUrl": "https://liveview.firecrawl.dev/550e8400-...?interactive=true"
}
<iframe src="LIVE_VIEW_URL" width="100%" height="600" />

Vista interactiva en vivo

La respuesta también incluye un interactiveLiveViewUrl. A diferencia de la vista en vivo estándar, que solo permite observar, la vista interactiva en vivo permite a los usuarios hacer clic, escribir e interactuar con la sesión del navegador directamente a través de la transmisión incrustada. Esto es útil para crear interfaces de navegador orientadas al usuario, depuración colaborativa o cualquier escenario en el que quien la visualiza necesite controlar el navegador.
<iframe src="INTERACTIVE_LIVE_VIEW_URL" width="100%" height="600" />

Conexión mediante CDP

Cada sesión expone una URL de WebSocket de CDP. La API execute y la bandera --bash cubren la mayoría de los casos de uso, pero si necesitas control local completo puedes conectarte directamente.
import Firecrawl from '@mendable/firecrawl-js';
import { chromium } from "playwright-core";

const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });
const session = await firecrawl.browser();

const browser = await chromium.connectOverCDP(session.cdpUrl);
const context = browser.contexts()[0];
const page = context.pages()[0] || (await context.newPage());

await page.goto("https://example.com");
console.log(await page.title());

await browser.close();
await firecrawl.deleteBrowser(session.id);

Cuándo usar navegador

Caso de usoHerramienta adecuada
Extraer contenido de una URL conocidaScrape
Buscar en la web y obtener resultadosSearch
Gestionar la paginación, completar formularios y hacer clic en flujosnavegador
Flujos de trabajo multietapa con interacciónnavegador
Navegación en paralelo en muchos sitiosnavegador (cada sesión está aislada)

Casos de uso

  • Inteligencia competitiva - Explorar sitios de la competencia, navegar por formularios de búsqueda y filtros, y extraer precios y características en datos estructurados
  • Ingesta de base de conocimientos - Navegar por centros de ayuda, documentación y portales de soporte que requieren clics, paginación o autenticación
  • Investigación de mercado - Iniciar sesiones de navegador en paralelo para crear conjuntos de datos a partir de bolsas de trabajo, listados inmobiliarios o bases de datos legales

Precios

El precio es sencillo: 2 créditos por minuto de navegador. Los usuarios del plan gratuito disponen de 5 horas de uso sin coste.

Límites de uso

En el lanzamiento inicial, permitimos hasta 20 sesiones simultáneas de navegador en todos los planes.

Referencia de la API


¿Tienes comentarios o necesitas ayuda? Escríbenos a help@firecrawl.com o contáctanos por Discord.