# Interact tras el scraping

> Interactúa con una página que has obtenido mediante prompts o ejecutando código.

import QuickstartPython from "/snippets/es/v2/interact/quickstart/python.mdx";
import QuickstartJS from "/snippets/es/v2/interact/quickstart/js.mdx";
import QuickstartCURL from "/snippets/es/v2/interact/quickstart/curl.mdx";
import QuickstartCLI from "/snippets/es/v2/interact/quickstart/cli.mdx";
import ExecNodePython from "/snippets/es/v2/interact/execute-node/python.mdx";
import ExecNodeJS from "/snippets/es/v2/interact/execute-node/js.mdx";
import ExecNodeCURL from "/snippets/es/v2/interact/execute-node/curl.mdx";
import ExecNodeCLI from "/snippets/es/v2/interact/execute-node/cli.mdx";
import ExecPythonPython from "/snippets/es/v2/interact/execute-python/python.mdx";
import ExecPythonJS from "/snippets/es/v2/interact/execute-python/js.mdx";
import ExecPythonCURL from "/snippets/es/v2/interact/execute-python/curl.mdx";
import ExecPythonCLI from "/snippets/es/v2/interact/execute-python/cli.mdx";
import ExecBashPython from "/snippets/es/v2/interact/execute-bash/python.mdx";
import ExecBashJS from "/snippets/es/v2/interact/execute-bash/js.mdx";
import ExecBashCURL from "/snippets/es/v2/interact/execute-bash/curl.mdx";
import ExecBashCLI from "/snippets/es/v2/interact/execute-bash/cli.mdx";
import PromptPython from "/snippets/es/v2/interact/prompt/python.mdx";
import PromptJS from "/snippets/es/v2/interact/prompt/js.mdx";
import PromptCURL from "/snippets/es/v2/interact/prompt/curl.mdx";
import PromptCLI from "/snippets/es/v2/interact/prompt/cli.mdx";
import PromptFormPython from "/snippets/es/v2/interact/prompt/python-form.mdx";
import PromptFormJS from "/snippets/es/v2/interact/prompt/js-form.mdx";
import PromptFormCURL from "/snippets/es/v2/interact/prompt/curl-form.mdx";
import PromptFormCLI from "/snippets/es/v2/interact/prompt/cli-form.mdx";
import PromptNavPython from "/snippets/es/v2/interact/prompt/python-navigate.mdx";
import PromptNavJS from "/snippets/es/v2/interact/prompt/js-navigate.mdx";
import PromptNavCURL from "/snippets/es/v2/interact/prompt/curl-navigate.mdx";
import PromptNavCLI from "/snippets/es/v2/interact/prompt/cli-navigate.mdx";
import PromptOutput from "/snippets/es/v2/interact/response/prompt-output.mdx";
import ResponseOutput from "/snippets/es/v2/interact/response/output.mdx";
import StopPython from "/snippets/es/v2/interact/stop/python.mdx";
import StopJS from "/snippets/es/v2/interact/stop/js.mdx";
import StopCURL from "/snippets/es/v2/interact/stop/curl.mdx";
import StopCLI from "/snippets/es/v2/interact/stop/cli.mdx";
import ProfilePython from "/snippets/es/v2/interact/profile/python.mdx";
import ProfileJS from "/snippets/es/v2/interact/profile/js.mdx";
import ProfileCURL from "/snippets/es/v2/interact/profile/curl.mdx";
import ProfileCLI from "/snippets/es/v2/interact/profile/cli.mdx";
import InteractFeedbackCTA from "/snippets/es/interact-feedback-cta.mdx";

Haz scraping de una página para obtener datos limpios y luego llama a `/interact` para empezar a realizar acciones en esa página: hacer clic en botones, completar formularios, extraer contenido dinámico o navegar más a fondo. Solo describe lo que quieres hacer, o escribe código si necesitas un control total.

<InteractFeedbackCTA src="docs-interact" />

<div id="choose-the-right-interaction-model">
  ## Selecciona el modelo de interacción adecuado
</div>

| Necesidad                                                            | Usar                                               | Documentación canónica                                                                                                                                                                                                                                                                                                      | Métodos del SDK (Node)                                               |
| -------------------------------------------------------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| Iniciar una sesión del navegador independiente sin hacer scraping antes | Browser Sandbox / sesión independiente de Interact | [Browser Sandbox](/es/features/browser), [Crear sesión del navegador](/es/api-reference/endpoint/browser-create), [Ejecutar código en el browser](/es/api-reference/endpoint/browser-execute), [Listar sesiones del navegador](/es/api-reference/endpoint/browser-list), [Eliminar sesión del navegador](/es/api-reference/endpoint/browser-delete) | `browser()`, `browserExecute()`, `listBrowsers()`, `deleteBrowser()` |
| Continuar desde un resultado de scraping usando `scrapeId`           | Interact tras el scraping                          | [Ejecutar Interact](/es/api-reference/endpoint/scrape-execute), [Detener Interact](/es/api-reference/endpoint/scrape-browser-delete)                                                                                                                                                                                              | `interact()`, `stopInteraction()`                                    |

Usa Interact vinculado al scraping cuando el flujo de trabajo comienza con `POST /v2/scrape` y la respuesta incluye `data.metadata.scrapeId`. Usa Browser Sandbox cuando necesites una sesión independiente con su propio ciclo de vida. El SDK de Python usa los equivalentes en snake&#95;case (`browser()`, `browser_execute()`, `list_browsers()`, `delete_browser()`, `interact()`, `stop_interaction()`).

<CardGroup cols={3}>
  <Card title="Prompts de IA" icon="wand-magic-sparkles">
    Describe qué acción quieres realizar en la página
  </Card>

  <Card title="Ejecución de código" icon="code">
    Interactúa de forma segura mediante la ejecución de código con playwright, agent-browser
  </Card>

  <Card title="Vista en vivo" icon="eye">
    Observa o interactúa con el browser en tiempo real mediante un stream incrustable
  </Card>
</CardGroup>

<div id="how-it-works">
  ## Cómo funciona
</div>

1. **Haz scraping de** una URL con `POST /v2/scrape`. La respuesta incluye un `scrapeId` en `data.metadata.scrapeId`. Si quieres conservar el estado del navegador, pasa `profile` en esta solicitud.
2. **Interactúa** llamando a `POST /v2/scrape/{scrapeId}/interact` con un `prompt` o con código de Playwright `code`. No pases `profile` aquí; la sesión de interacción hereda el perfil del trabajo de scraping.
3. **Detén** la sesión con `DELETE /v2/scrape/{scrapeId}/interact` cuando hayas terminado. En los perfiles con escritura, los cambios se guardan cuando la sesión se detiene.

<div id="quick-start">
  ## Inicio rápido
</div>

Haz scraping de una página, interactúa con ella y detén la sesión:

<CodeGroup>
  <QuickstartPython />

  <QuickstartJS />

  <QuickstartCURL />

  <QuickstartCLI />
</CodeGroup>

<ResponseOutput />

<div id="interact-via-prompting">
  ## Interactúa mediante prompts
</div>

La forma más simple de interactuar con una página. Describe lo que quieres en lenguaje natural y hará clic, escribirá, se desplazará y extraerá datos automáticamente.

<CodeGroup>
  <PromptPython />

  <PromptJS />

  <PromptCURL />

  <PromptCLI />
</CodeGroup>

La respuesta incluye un campo `output` con la respuesta del agente:

<PromptOutput />

<div id="keep-prompts-small-and-focused">
  ### Mantén los prompts pequeños y enfocados
</div>

Los prompts funcionan mejor cuando cada uno consiste en una **única tarea clara**. En lugar de pedirle al agente que realice un flujo de trabajo complejo de varios pasos de una sola vez, divídelo en llamadas `interact` independientes. Cada llamada reutiliza la misma sesión del navegador, por lo que el estado se conserva entre una y otra.

<div id="running-code">
  ## Ejecución de código
</div>

Para tener control total, puedes ejecutar código directamente en el sandbox del navegador. La variable `page` (un objeto Page de Playwright) está disponible en Node.js y Python. El modo Bash incluye [agent-browser](https://github.com/vercel-labs/agent-browser) preinstalado. También puedes hacer capturas de pantalla dentro de la sesión: usa `(await page.screenshot()).toString("base64")` en Node.js, `await page.screenshot(path="/tmp/screenshot.png")` en Python o `agent-browser screenshot` en Bash.

<div id="nodejs-playwright">
  ### Node.js (Playwright)
</div>

El lenguaje predeterminado. Escribe código de Playwright directamente. `page` ya está conectado al navegador.

<CodeGroup>
  <ExecNodePython />

  <ExecNodeJS />

  <ExecNodeCURL />

  <ExecNodeCLI />
</CodeGroup>

<div id="python">
  ### Python
</div>

Configura `language` como `"python"` para usar la API de Python de Playwright.

<CodeGroup>
  <ExecPythonPython />

  <ExecPythonJS />

  <ExecPythonCURL />

  <ExecPythonCLI />
</CodeGroup>

<div id="bash-agent-browser">
  ### Bash (agent-browser)
</div>

[agent-browser](https://github.com/vercel-labs/agent-browser) es una CLI preinstalada en el sandbox con más de 60 comandos. Proporciona un árbol de accesibilidad con referencias de elementos (`@e1`, `@e2`, ...), lo que es ideal para la automatización controlada por LLM.

<CodeGroup>
  <ExecBashPython />

  <ExecBashJS />

  <ExecBashCURL />

  <ExecBashCLI />
</CodeGroup>

Comandos comunes de agent-browser:

| Comando                   | Descripción                                                  |
| ------------------------- | ------------------------------------------------------------ |
| `snapshot`                | Árbol de accesibilidad completo con referencias de elementos |
| `snapshot -i`             | Solo elementos interactivos                                  |
| `click @e1`               | Hacer clic en un elemento por referencia                     |
| `fill @e1 "text"`         | Borrar el campo y escribir texto                             |
| `type @e1 "text"`         | Escribir sin borrar                                          |
| `press Enter`             | Pulsar una tecla del teclado                                 |
| `scroll down 500`         | Desplazarse 500 píxeles hacia abajo                          |
| `get text @e1`            | Obtener el contenido de texto                                |
| `get url`                 | Obtener la URL actual                                        |
| `wait @e1`                | Esperar a que aparezca el elemento                           |
| `wait --load networkidle` | Esperar a que la red quede inactiva                          |
| `find text "X" click`     | Buscar un elemento por texto y hacer clic                    |
| `screenshot`              | Tomar una captura de pantalla de la página actual            |
| `eval "js code"`          | Ejecutar JavaScript en la página                             |

<div id="live-view">
  ## vista en vivo
</div>

Cada respuesta de interact devuelve una `liveViewUrl` que puedes incrustar para ver el navegador en tiempo real. Es útil para depuración, demos o para crear interfaces con navegador.

```json Response
{
  "success": true,
  "cdpUrl": "wss://browser.firecrawl.dev/...",
  "liveViewUrl": "https://liveview.firecrawl.dev/...",
  "interactiveLiveViewUrl": "https://liveview.firecrawl.dev/...",
  "stdout": "",
  "result": "...",
  "exitCode": 0
}
```

```html
<iframe src="LIVE_VIEW_URL" width="100%" height="600" />
```

<div id="interactive-live-view">
  ### Vista en vivo interactiva
</div>

La respuesta también incluye un `interactiveLiveViewUrl`. A diferencia de la vista en vivo estándar, que es solo de visualización, la vista en vivo interactiva permite a los usuarios hacer clic, escribir e interactuar con la sesión del navegador directamente a través del stream integrado. Esto resulta útil para crear interfaces de navegador orientadas al usuario, como flujos de inicio de sesión o flujos de trabajo guiados en los que los usuarios finales necesitan controlar el navegador.

```html
<iframe src="INTERACTIVE_LIVE_VIEW_URL" width="100%" height="600" />
```

<div id="cdp-url">
  ### URL de CDP
</div>

Cada respuesta de interact también devuelve una `cdpUrl`: la URL de WebSocket sin procesar del Chrome DevTools Protocol (CDP) para la sesión del navegador. Úsala para conectarte directamente a la sesión activa desde Playwright, Puppeteer o cualquier cliente CDP, y controlar el navegador con tu propio código.

```js
import { chromium } from "playwright";

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

<div id="session-lifecycle">
  ## Ciclo de vida de la sesión
</div>

<div id="creation">
  ### Creación
</div>

La primera llamada `POST /v2/scrape/{scrapeId}/interact` continúa la sesión de scraping e inicia la interacción.

<div id="reuse">
  ### Reutilización
</div>

Las llamadas posteriores a `interact` sobre el mismo `scrapeId` reutilizan la sesión existente. El navegador permanece abierto y conserva su estado entre llamadas, por lo que puedes encadenar varias interacciones:

<CodeGroup>
  ```python Python
  # Primera llamada: haz clic en una pestaña
  app.interact(scrape_id, code="await page.click('#tab-2')")

  # Segunda llamada: la pestaña sigue seleccionada, extrae su contenido
  result = app.interact(scrape_id, code="await page.$eval('#tab-2-content', el => el.textContent)")
  print(result.result)
  ```

  ```js Node
  // Primera llamada: haz clic en una pestaña
  await app.interact(scrapeId, { code: "await page.click('#tab-2')" });

  // Segunda llamada: la pestaña sigue seleccionada, extrae su contenido
  const result = await app.interact(scrapeId, {
    code: "await page.$eval('#tab-2-content', el => el.textContent)",
  });
  console.log(result.result);
  ```

  ```bash CLI
  # Primera llamada: haz clic en una pestaña
  firecrawl interact -c "await page.click('#tab-2')"

  # Segunda llamada: la pestaña sigue seleccionada, extrae su contenido
  firecrawl interact -c "await page.\$eval('#tab-2-content', el => el.textContent)"
  ```
</CodeGroup>

<div id="cleanup">
  ### Limpieza
</div>

Detén la sesión explícitamente al terminar:

<CodeGroup>
  <StopPython />

  <StopJS />

  <StopCURL />

  <StopCLI />
</CodeGroup>

Las sesiones también expiran automáticamente según el TTL (predeterminado: 10 minutos) o el timeout de inactividad (predeterminado: 5 minutos).

<Warning>
  Detén siempre las sesiones al terminar para evitar Billing innecesario. Los credits se prorratean por segundo, con un cargo mínimo de un minuto de browser. Las sesiones que usan un `prompt` facturan 7 credits por minuto de browser; las sesiones sin prompt facturan 2. Consulta [Billing](/es/billing#credit-costs-per-endpoint) para más detalles.
</Warning>

<div id="persistent-profiles-with-scrape-interact">
  ## Perfiles persistentes con Scraping + Interact
</div>

De forma predeterminada, cada sesión de scraping + interact se inicia con un navegador limpio. Con `profile`, puedes guardar y reutilizar el estado del navegador (cookies, localStorage, sesiones) entre scrapings. Esto resulta útil para mantener la sesión iniciada y conservar las preferencias.

Pasa el objeto `profile` en la solicitud inicial `POST /v2/scrape`. No pases `profile` a `POST /v2/scrape/{scrapeId}/interact`; la sesión de interact reutiliza la sesión del navegador y la configuración del perfil del trabajo de scraping. Detén la sesión de interact con `DELETE /v2/scrape/{scrapeId}/interact` para que puedan guardarse los cambios del perfil.

```bash cURL
curl -X POST "https://api.firecrawl.dev/v2/scrape" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "profile": {
      "name": "my-profile",
      "saveChanges": true
    }
  }'

curl -X POST "https://api.firecrawl.dev/v2/scrape/SCRAPE_ID/interact" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Click the login button"
  }'

curl -X DELETE "https://api.firecrawl.dev/v2/scrape/SCRAPE_ID/interact" \
  -H "Authorization: Bearer fc-YOUR_API_KEY"
```

El ciclo de vida del perfil es:

1. Crea el scraping con `profile.name` y `saveChanges: true`.
2. Ejecuta interacciones con prompt o código usando el `scrapeId` devuelto.
3. Detén la sesión para guardar cookies, localStorage y otro estado del navegador.
4. Inicia un scraping posterior con el mismo `profile.name`. Usa `saveChanges: false` cuando solo quieras leer el estado existente sin volver a escribir cambios.

<CodeGroup>
  <ProfilePython />

  <ProfileJS />

  <ProfileCURL />

  <ProfileCLI />
</CodeGroup>

| Parámetro     | Predeterminado | Descripción                                                                                                                                                                                                                                                      |
| ------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`        | None           | Nombre del perfil persistente. Los scrapings con el mismo nombre comparten el estado del navegador.                                                                                                                                                              |
| `saveChanges` | `true`         | Cuando es `true`, el estado del navegador se vuelve a guardar en el perfil cuando se detiene la sesión de interact. Establécelo en `false` para cargar datos existentes sin escribir cambios, lo que resulta útil cuando necesitas varios lectores concurrentes. |

<Note>
  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 volver a intentarlo más tarde.
</Note>

El estado del navegador se guarda cuando se detiene la sesión de interact. Detén siempre la sesión cuando termines para que el perfil pueda reutilizarse.

<div id="validate-persistence">
  ### Validar la persistencia
</div>

Puedes probar la persistencia sin depender de un flujo de inicio de sesión real: escribe un valor en `localStorage` en una sesión, detenla y luego lee ese valor en una segunda sesión con el mismo perfil.

```bash cURL
# Sesión 1: escribir el estado del navegador y guardarlo
RESPONSE=$(curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "profile": { "name": "profile-validation", "saveChanges": true }
  }')

SCRAPE_ID=$(echo "$RESPONSE" | jq -r ".data.metadata.scrapeId")

curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "await page.evaluate(() => { localStorage.setItem(\"firecrawlProfileCheck\", \"saved\"); document.cookie = \"firecrawl_profile_check=saved; path=/; max-age=3600\"; return localStorage.getItem(\"firecrawlProfileCheck\"); });"
  }'

curl -s -X DELETE "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY"

# Sesión 2: cargar el mismo perfil en modo de solo lectura y verificar el valor
RESPONSE=$(curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "profile": { "name": "profile-validation", "saveChanges": false }
  }')

SCRAPE_ID=$(echo "$RESPONSE" | jq -r ".data.metadata.scrapeId")

curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "await page.evaluate(() => ({ localStorage: localStorage.getItem(\"firecrawlProfileCheck\"), cookie: document.cookie.includes(\"firecrawl_profile_check=saved\") }));"
  }'

curl -s -X DELETE "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY"
```

La segunda respuesta de Interact debería mostrar `localStorage` como `"saved"` y `cookie` como `true`.

<Info>
  Puede que los perfiles creados a través de la API todavía no aparezcan en Dashboard &gt; Interact &gt; Profiles. Actualmente, el dashboard no ofrece un inventario completo de los perfiles persistentes creados mediante la API.
</Info>

<div id="when-to-use-what">
  ## Cuándo usar cada opción
</div>

| Caso de uso                                  | Recomendado                  | Por qué                                       |
| -------------------------------------------- | ---------------------------- | --------------------------------------------- |
| Búsqueda web                                 | [Search](/es/features/search)   | Endpoint de búsqueda específico               |
| Obtener contenido limpio de una URL          | [scraping](/es/features/scrape) | Una llamada a la API, sin necesidad de sesión |
| Hacer clic, escribir y navegar en una página | **Interact** (prompt)        | Solo descríbelo en inglés                     |
| Extraer datos tras interacciones             | **Interact** (prompt)        | No se necesitan selectores                    |
| Lógica de scraping compleja                  | **Interact** (code)          | Control total de Playwright                   |

<Info>
  **Interact vs Browser Sandbox**: Interact se basa en la misma infraestructura que [Browser Sandbox](/es/features/browser), pero ofrece una mejor interfaz para el patrón más común: hacer scraping de una página y luego profundizar. Browser Sandbox es mejor cuando necesitas una sesión del navegador independiente que no esté vinculada a un scraping específico.
</Info>

<div id="pricing">
  ## Precios
</div>

* **Solo código** (sin `prompt`): 2 credits por minuto de sesión
* **Con prompts de IA**: 7 credits por minuto de sesión
* **scraping**: se factura por separado (1 credit por scraping, más cualquier costo específico del formato)

<div id="api-reference">
  ## Referencia de la API
</div>

* [Ejecutar Interact](/es/api-reference/endpoint/scrape-execute): `POST /v2/scrape/{scrapeId}/interact`
* [Detener Interact](/es/api-reference/endpoint/scrape-browser-delete): `DELETE /v2/scrape/{scrapeId}/interact`

<div id="request-body-post">
  ### Cuerpo de la solicitud (POST)
</div>

| Campo      | Tipo     | Predeterminado | Descripción                                                                                                               |
| ---------- | -------- | -------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `prompt`   | `string` | Ninguno        | Tarea en lenguaje natural para el agente de IA. Obligatorio si no se establece `code`. Máximo 10.000 caracteres.          |
| `code`     | `string` | Ninguno        | Código que se va a ejecutar (Node.js, Python o Bash). Obligatorio si no se establece `prompt`. Máximo 100.000 caracteres. |
| `language` | `string` | `"node"`       | `"node"`, `"python"` o `"bash"`. Solo se usa con `code`.                                                                  |
| `timeout`  | `number` | `30`           | Timeout en segundos (1–300).                                                                                              |
| `origin`   | `string` | Ninguno        | Identificador del llamante para el seguimiento de la actividad.                                                           |

<div id="response">
  ### Respuesta
</div>

| Field                    | Description                                                                                                                                                                             |
| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `success`                | `true` si la ejecución se completó sin errores                                                                                                                                          |
| `cdpUrl`                 | URL WebSocket sin procesar de Chrome DevTools Protocol (CDP) para la sesión del navegador. Conéctate directamente con Playwright, Puppeteer o cualquier cliente CDP                     |
| `liveViewUrl`            | URL de vista en vivo de solo lectura para la sesión del navegador                                                                                                                       |
| `interactiveLiveViewUrl` | URL de vista en vivo interactiva (quienes la vean pueden controlar el navegador)                                                                                                        |
| `output`                 | La respuesta en lenguaje natural del agente a tu prompt. Solo está presente cuando se utiliza `prompt`.                                                                                 |
| `stdout`                 | Salida estándar de la ejecución del código                                                                                                                                              |
| `result`                 | Valor de retorno sin procesar del sandbox. Para `code`: la última expresión evaluada. Para `prompt`: la captura sin procesar de la página que el agente utilizó para producir `output`. |
| `stderr`                 | Salida de error estándar                                                                                                                                                                |
| `exitCode`               | Código de salida (`0` = éxito)                                                                                                                                                          |
| `killed`                 | `true` si la ejecución se finalizó debido a timeout                                                                                                                                     |

***

¿Tienes comentarios o necesitas ayuda? Envía un correo a [help@firecrawl.com](mailto:help@firecrawl.com) o comunícate en [Discord](https://discord.gg/firecrawl).
