# Interactuar con una página extraída (/es/api-reference/endpoint/scrape-execute)

<!-- agent-signals: reading_time_min: 8 · est_tokens: 4131 · updated: 2026-07-30 -->
Related: [Búsqueda](/es/api-reference/endpoint/search.md), [Comentarios sobre la búsqueda](/es/api-reference/endpoint/search-feedback.md), [Scrape](/es/api-reference/endpoint/scrape.md), [Raspado en lote](/es/api-reference/endpoint/batch-scrape.md), [Obtener el estado de la captura por lotes](/es/api-reference/endpoint/batch-scrape-get.md), [Cancelar extracción en lote](/es/api-reference/endpoint/batch-scrape-delete.md)

Usa este endpoint para seguir interactuando con el mismo estado del navegador inicializado a partir de un scrape anterior. Debes proporcionar `code` o `prompt`, pero no ambos.

`POST /v2/scrape/{jobId}/interact` gestiona el ciclo de vida completo:

1. Si todavía no existe una sesión del navegador para este trabajo de scrape, Firecrawl crea una con el mismo estado de la página que el scrape original.
2. Cuando se proporciona `code`, Firecrawl lo ejecuta en el sandbox del navegador. Cuando se proporciona `prompt`, un agente de IA automatiza la tarea al utilizar lenguaje natural.
3. Las llamadas posteriores a `POST /interact` con el mismo `jobId` reutilizan el mismo estado activo del navegador.

Cuando hayas terminado, llama a `DELETE /v2/scrape/{jobId}/interact` para detener la sesión.

<div id="path-parameters">
  ## Parámetros de ruta [#parámetros-de-ruta]
</div>

| Parámetro | Tipo          | Obligatorio | Descripción                                                                       |
| --------- | ------------- | ----------- | --------------------------------------------------------------------------------- |
| `jobId`   | string (UUID) | Sí          | El ID del trabajo de scrape de `data.metadata.scrapeId` en la respuesta de scrape |

<div id="request-body">
  ## Request Body [#request-body]
</div>

| parámetro  | tipo   | Required | Default  | descripción                                                                                                          |
| ---------- | ------ | -------- | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `code`     | string | No       | —        | Código que se ejecutará en el sandbox del navegador (1–100,000 caracteres). Obligatorio si no se establece `prompt`. |
| `prompt`   | string | No       | —        | Tarea en lenguaje natural para el agente de IA (1–10,000 caracteres). Obligatorio si no se establece `code`.         |
| `language` | string | No       | `"node"` | Uno de `"python"`, `"node"` o `"bash"`. Solo se usa con `code`.                                                      |
| `timeout`  | number | No       | `30`     | Tiempo de espera de ejecución en segundos (1–300).                                                                   |
| `origin`   | string | No       | —        | Etiqueta de origen opcional que se usa para telemetría.                                                              |

<div id="response">
  ## respuesta [#respuesta]
</div>

| Field                    | tipo    | descripción                                                                                                                                                             |
| ------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `success`                | boolean | Si la ejecución se completó sin errores                                                                                                                                 |
| `cdpUrl`                 | string  | URL de WebSocket sin procesar del Chrome DevTools Protocol (CDP) para la sesión del navegador. Conéctate directamente con Playwright, Puppeteer o cualquier cliente CDP |
| `liveViewUrl`            | string  | URL de vista en vivo de solo lectura para la sesión del navegador                                                                                                       |
| `interactiveLiveViewUrl` | string  | URL de vista en vivo interactiva (los espectadores pueden controlar el navegador)                                                                                       |
| `output`                 | string  | Respuesta final del agente de IA (solo presente al utilizar `prompt`)                                                                                                   |
| `stdout`                 | string  | Salida estándar de la ejecución del código                                                                                                                              |
| `result`                 | string  | Valor de retorno — valor de la última expresión para Node.js, instantánea final de la página para `prompt`                                                              |
| `stderr`                 | string  | Salida de error estándar                                                                                                                                                |
| `exitCode`               | number  | Código de salida de la ejecución (`0` = éxito)                                                                                                                          |
| `killed`                 | boolean | Si la ejecución se terminó debido al tiempo de espera                                                                                                                   |
| `error`                  | string  | Mensaje de error (solo presente en caso de fallo)                                                                                                                       |

<div id="example-request-code">
  ### solicitud de ejemplo (Code) [#solicitud-de-ejemplo-code]
</div>

```bash
curl -X POST "https://api.firecrawl.dev/v2/scrape/550e8400-e29b-41d4-a716-446655440000/interact" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "const title = await page.title(); JSON.stringify({ title });",
    "language": "node",
    "timeout": 30
  }'
```

<div id="example-response-code">
  ### Respuesta de ejemplo (código) [#respuesta-de-ejemplo-código]
</div>

```json
{
  "success": true,
  "cdpUrl": "wss://browser.firecrawl.dev/...",
  "liveViewUrl": "https://liveview.firecrawl.dev/...",
  "interactiveLiveViewUrl": "https://liveview.firecrawl.dev/...",
  "stdout": "",
  "result": "{\"title\":\"Example Domain\"}",
  "stderr": "",
  "exitCode": 0,
  "killed": false
}
```

<div id="example-request-prompt">
  ### Solicitud de ejemplo (Prompt) [#solicitud-de-ejemplo-prompt]
</div>

```bash
curl -X POST "https://api.firecrawl.dev/v2/scrape/550e8400-e29b-41d4-a716-446655440000/interact" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Find the pricing section and tell me the price of the Pro plan",
    "timeout": 60
  }'
```

<div id="example-response-prompt">
  ### respuesta de ejemplo (Prompt) [#respuesta-de-ejemplo-prompt]
</div>

```json
{
  "success": true,
  "cdpUrl": "wss://browser.firecrawl.dev/...",
  "liveViewUrl": "https://liveview.firecrawl.dev/...",
  "interactiveLiveViewUrl": "https://liveview.firecrawl.dev/...",
  "output": "The Pro plan costs $49/month and includes unlimited scrapes, priority support, and custom integrations.",
  "stdout": "...",
  "result": "...",
  "stderr": "",
  "exitCode": 0,
  "killed": false
}
```

<div id="error-codes">
  ### Códigos de error [#códigos-de-error]
</div>

| Status | descripción                                                                             |
| ------ | --------------------------------------------------------------------------------------- |
| `402`  | Créditos insuficientes para una sesión del navegador                                    |
| `403`  | El trabajo de scrape pertenece a otro equipo                                            |
| `404`  | No se encontró el trabajo de scrape                                                     |
| `409`  | Contexto de repetición no disponible — vuelve a ejecutar el scrape e inténtalo de nuevo |
| `410`  | La sesión del navegador ya ha sido destruida                                            |
| `429`  | Se alcanzó el número máximo de sesiones simultáneas del navegador                       |
| `502`  | Falló el servicio del navegador o la ejecución del agente de IA                         |
| `503`  | La función del navegador no está configurada (solo autogestionado)                      |

Para obtener información detallada sobre el uso con ejemplos, consulta la [guía de la función Interact](/es/features/interact).

`POST /scrape/{jobId}/interact`

Interactúa con la sesión del navegador asociada a un trabajo de scrape

## OpenAPI

```json
{
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "parameters": [
    {
      "description": "El ID de trabajo de scrape",
      "in": "path",
      "name": "jobId",
      "required": true,
      "schema": {
        "format": "uuid",
        "type": "string"
      }
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "properties": {
            "code": {
              "description": "Código que se ejecutará en el entorno aislado del navegador vinculado al scrape",
              "maxLength": 100000,
              "minLength": 1,
              "type": "string"
            },
            "language": {
              "default": "node",
              "description": "Lenguaje del código que se ejecutará. Usa `node` para JavaScript o `bash` para comandos de CLI de agent-browser.",
              "enum": [
                "python",
                "node",
                "bash"
              ],
              "type": "string"
            },
            "origin": {
              "description": "Etiqueta de origen opcional usada para la telemetría de ejecución",
              "type": "string"
            },
            "timeout": {
              "default": 30,
              "description": "timeout de ejecución en segundos",
              "maximum": 300,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "code"
          ],
          "type": "object"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "cdpUrl": {
                "description": "URL WebSocket sin procesar del protocolo Chrome DevTools (CDP) para la sesión del navegador. Úsala para conectarte directamente con Playwright, Puppeteer o cualquier cliente CDP.",
                "nullable": true,
                "type": "string"
              },
              "error": {
                "description": "Mensaje de error si el código generó una excepción",
                "nullable": true,
                "type": "string"
              },
              "exitCode": {
                "description": "Código de salida del proceso ejecutado",
                "nullable": true,
                "type": "integer"
              },
              "interactiveLiveViewUrl": {
                "description": "URL de la vista en vivo interactiva (los espectadores pueden controlar el navegador)",
                "nullable": true,
                "type": "string"
              },
              "killed": {
                "description": "Indica si el proceso se finalizó debido a un timeout",
                "type": "boolean"
              },
              "liveViewUrl": {
                "description": "URL de la vista en vivo de solo lectura para la sesión del navegador",
                "nullable": true,
                "type": "string"
              },
              "output": {
                "description": "Respuesta final del agente de IA (solo está presente cuando se utiliza prompt)",
                "nullable": true,
                "type": "string"
              },
              "result": {
                "description": "salida estándar (alias de stdout)",
                "nullable": true,
                "type": "string"
              },
              "stderr": {
                "description": "salida de error estándar de la ejecución del código",
                "nullable": true,
                "type": "string"
              },
              "stdout": {
                "description": "salida estándar de la ejecución del código",
                "nullable": true,
                "type": "string"
              },
              "success": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Código ejecutado correctamente"
    },
    "400": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Invalid job ID format.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "ID de trabajo no válido"
    },
    "402": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Payment required to access this resource.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Pago requerido"
    },
    "403": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Forbidden.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Prohibido"
    },
    "404": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Job not found.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "No se encontró el trabajo de scrape"
    },
    "409": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Replay context is unavailable for this scrape job. Please rerun the scrape.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "El contexto de reproducción del scrape no está disponible o no se pudo inicializar la sesión"
    },
    "410": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Browser session has been destroyed.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "La sesión del navegador de scrape ya se ha destruido"
    },
    "429": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "You have reached the maximum number of active browser sessions.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Demasiadas sesiones activas del navegador"
    },
    "502": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Failed to execute code in browser session.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "No se pudo establecer comunicación con el servicio del navegador"
    }
  }
}
```
