# Interagir com uma página extraída (/pt-BR/api-reference/endpoint/scrape-execute)

<!-- agent-signals: reading_time_min: 8 · est_tokens: 4009 · updated: 2026-07-30 -->
Related: [Pesquisa](/pt-BR/api-reference/endpoint/search.md), [Feedback de busca](/pt-BR/api-reference/endpoint/search-feedback.md), [Raspar](/pt-BR/api-reference/endpoint/scrape.md), [Raspar em lote](/pt-BR/api-reference/endpoint/batch-scrape.md), [Obter status do scrape em lote](/pt-BR/api-reference/endpoint/batch-scrape-get.md), [Cancelar raspagem em lote](/pt-BR/api-reference/endpoint/batch-scrape-delete.md)

Use este endpoint para continuar interagindo com o mesmo estado do navegador iniciado a partir de um scraping anterior. É necessário fornecer `code` ou `prompt` — não ambos.

`POST /v2/scrape/{jobId}/interact` gerencia todo o ciclo de vida:

1. Se ainda não existir uma sessão do navegador para este job de scraping, o Firecrawl cria uma no mesmo estado da página do scraping original.
2. Quando `code` é fornecido, o Firecrawl o executa no sandbox do navegador. Quando `prompt` é fornecido, um agente de IA automatiza a tarefa usando linguagem natural.
3. Chamadas posteriores para `POST /interact` no mesmo `jobId` reutilizam o mesmo estado ativo do navegador.

Quando terminar, chame `DELETE /v2/scrape/{jobId}/interact` para encerrar a sessão.

<div id="path-parameters">
  ## Parâmetros do caminho [#parâmetros-do-caminho]
</div>

| Parâmetro | Tipo          | Obrigatório | Descrição                                                                   |
| --------- | ------------- | ----------- | --------------------------------------------------------------------------- |
| `jobId`   | string (UUID) | Sim         | O ID do job de scraping em `data.metadata.scrapeId` na resposta de scraping |

<div id="request-body">
  ## Corpo da requisição [#corpo-da-requisição]
</div>

| Parâmetro  | Tipo   | Obrigatório | Padrão   | Descrição                                                                                                            |
| ---------- | ------ | ----------- | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `code`     | string | Não         | —        | Código a ser executado no sandbox do navegador (1–100.000 caracteres). Obrigatório se `prompt` não estiver definido. |
| `prompt`   | string | Não         | —        | Tarefa em linguagem natural para o agente de IA (1–10.000 caracteres). Obrigatório se `code` não estiver definido.   |
| `language` | string | Não         | `"node"` | Um de `"python"`, `"node"` ou `"bash"`. Usado apenas com `code`.                                                     |
| `timeout`  | number | Não         | `30`     | Tempo limite de execução em segundos (1–300).                                                                        |
| `origin`   | string | Não         | —        | Rótulo de origem opcional usado para telemetria.                                                                     |

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

| Campo                    | Tipo    | Descrição                                                                                                                                                  |
| ------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `success`                | boolean | Indica se a execução foi concluída sem erros                                                                                                               |
| `cdpUrl`                 | string  | URL WebSocket bruta do Chrome DevTools Protocol (CDP) para a sessão do navegador. Conecte-se diretamente com Playwright, Puppeteer ou qualquer cliente CDP |
| `liveViewUrl`            | string  | URL de visualização em tempo real somente leitura da sessão do navegador                                                                                   |
| `interactiveLiveViewUrl` | string  | URL de visualização em tempo real interativa (os usuários podem controlar o navegador)                                                                     |
| `output`                 | string  | Resposta final do agente de IA (presente apenas ao usar `prompt`)                                                                                          |
| `stdout`                 | string  | Saída padrão da execução do código                                                                                                                         |
| `result`                 | string  | Valor de retorno — valor da última expressão no Node.js, instantâneo final da página para `prompt`                                                         |
| `stderr`                 | string  | Saída de erro padrão                                                                                                                                       |
| `exitCode`               | number  | Código de saída da execução (`0` = sucesso)                                                                                                                |
| `killed`                 | boolean | Indica se a execução foi encerrada devido ao tempo limite                                                                                                  |
| `error`                  | string  | Mensagem de erro (presente apenas em caso de falha)                                                                                                        |

<div id="example-request-code">
  ### Exemplo de requisição (Código) [#exemplo-de-requisição-código]
</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">
  ### Exemplo de resposta (Código) [#exemplo-de-resposta-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">
  ### Exemplo de requisição (Prompt) [#exemplo-de-requisição-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">
  ### Exemplo de resposta (Prompt) [#exemplo-de-resposta-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 erro [#códigos-de-erro]
</div>

| Status | Descrição                                                             |
| ------ | --------------------------------------------------------------------- |
| `402`  | Créditos insuficientes para uma sessão do navegador                   |
| `403`  | O job de scraping pertence a outra equipe                             |
| `404`  | Job de scraping não encontrado                                        |
| `409`  | Contexto de replay indisponível — refaça o scraping e tente novamente |
| `410`  | A sessão do navegador já foi encerrada                                |
| `429`  | Número máximo de sessões simultâneas do navegador atingido            |
| `502`  | Falha no serviço de navegador ou na execução do agente de IA          |
| `503`  | Recurso de navegador não configurado (apenas self-hosted)             |

Para detalhes de uso e exemplos, consulte o [guia do recurso Interact](/pt-BR/features/interact).

`POST /scrape/{jobId}/interact`

Interaja com a sessão do navegador associada a um job de scraping

## OpenAPI

```json
{
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "parameters": [
    {
      "description": "O ID do job de scraping",
      "in": "path",
      "name": "jobId",
      "required": true,
      "schema": {
        "format": "uuid",
        "type": "string"
      }
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "properties": {
            "code": {
              "description": "Código a ser executado no sandbox do navegador vinculado ao job de scraping",
              "maxLength": 100000,
              "minLength": 1,
              "type": "string"
            },
            "language": {
              "default": "node",
              "description": "Linguagem do código a ser executado. Use `node` para JavaScript ou `bash` para comandos CLI do agent-browser.",
              "enum": [
                "python",
                "node",
                "bash"
              ],
              "type": "string"
            },
            "origin": {
              "description": "Rótulo de origem opcional usado para telemetria de execução",
              "type": "string"
            },
            "timeout": {
              "default": 30,
              "description": "Tempo limite de execução em segundos",
              "maximum": 300,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "code"
          ],
          "type": "object"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "cdpUrl": {
                "description": "URL bruta de WebSocket do Chrome DevTools Protocol (CDP) da sessão do navegador. Use-a para se conectar diretamente com Playwright, Puppeteer ou qualquer cliente CDP.",
                "nullable": true,
                "type": "string"
              },
              "error": {
                "description": "Mensagem de erro caso o código gere uma exceção",
                "nullable": true,
                "type": "string"
              },
              "exitCode": {
                "description": "Código de saída do processo executado",
                "nullable": true,
                "type": "integer"
              },
              "interactiveLiveViewUrl": {
                "description": "URL da visualização em tempo real interativa (os usuários podem controlar o navegador)",
                "nullable": true,
                "type": "string"
              },
              "killed": {
                "description": "Se o processo foi encerrado devido ao tempo limite",
                "type": "boolean"
              },
              "liveViewUrl": {
                "description": "URL da visualização em tempo real somente leitura da sessão do navegador",
                "nullable": true,
                "type": "string"
              },
              "output": {
                "description": "Resposta final do agente de IA (presente apenas ao usar um prompt)",
                "nullable": true,
                "type": "string"
              },
              "result": {
                "description": "Saída padrão (alias de stdout)",
                "nullable": true,
                "type": "string"
              },
              "stderr": {
                "description": "Saída de erro padrão da execução do código",
                "nullable": true,
                "type": "string"
              },
              "stdout": {
                "description": "Saída padrão da execução do código",
                "nullable": true,
                "type": "string"
              },
              "success": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Código executado com sucesso"
    },
    "400": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Invalid job ID format.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "ID do job invá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": "Pagamento necessário"
    },
    "403": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Forbidden.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Proibido"
    },
    "404": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Job not found.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "Job de scraping não encontrado"
    },
    "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": "O contexto de replay do scraping não está disponível ou a sessão não pôde ser inicializada"
    },
    "410": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "error": {
                "example": "Browser session has been destroyed.",
                "type": "string"
              },
              "success": {
                "example": false,
                "type": "boolean"
              }
            },
            "type": "object"
          }
        }
      },
      "description": "A sessão do navegador do job de scraping já foi encerrada"
    },
    "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": "Há muitas sessões ativas do 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": "Falha ao se comunicar com o serviço do navegador"
    }
  }
}
```
