Endpoints del navegador
Ejecutar código en el navegador
Ejecuta código en un entorno de navegador aislado (sandbox).
POST
/
browser
/
{sessionId}
/
execute
Ejecutar código en una sesión de navegador
curl --request POST \
--url https://api.firecrawl.dev/v2/browser/{sessionId}/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>",
"language": "node",
"timeout": 150
}
'import requests
url = "https://api.firecrawl.dev/v2/browser/{sessionId}/execute"
payload = {
"code": "<string>",
"language": "node",
"timeout": 150
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({code: '<string>', language: 'node', timeout: 150})
};
fetch('https://api.firecrawl.dev/v2/browser/{sessionId}/execute', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.firecrawl.dev/v2/browser/{sessionId}/execute",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'code' => '<string>',
'language' => 'node',
'timeout' => 150
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.firecrawl.dev/v2/browser/{sessionId}/execute"
payload := strings.NewReader("{\n \"code\": \"<string>\",\n \"language\": \"node\",\n \"timeout\": 150\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.firecrawl.dev/v2/browser/{sessionId}/execute")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"<string>\",\n \"language\": \"node\",\n \"timeout\": 150\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.firecrawl.dev/v2/browser/{sessionId}/execute")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"<string>\",\n \"language\": \"node\",\n \"timeout\": 150\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"stdout": "<string>",
"result": "<string>",
"stderr": "<string>",
"exitCode": 123,
"killed": true,
"error": "<string>"
}{
"error": "Payment required to access this resource."
}Cabeceras
| Cabecera | Valor |
|---|---|
Authorization | Bearer <API_KEY> |
Content-Type | application/json |
Cuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|---|
code | string | Sí | - | Código a ejecutar (1-100,000 caracteres) |
language | string | No | "node" | Idioma del código: "python", "node" o "bash" (para comandos CLI de agent-browser) |
timeout | number | No | - | Tiempo máximo de ejecución en segundos (1-300) |
Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
success | boolean | Indica si el código se ejecutó correctamente |
stdout | string | Salida estándar de la ejecución del código |
result | string | Resultado estándar de la ejecución del código |
stderr | string | Salida de error estándar de la ejecución del código |
exitCode | number | Código de salida del proceso ejecutado |
killed | boolean | Indica si el proceso se terminó por exceder el tiempo de espera |
error | string | Mensaje de error si la ejecución falló (solo presente en caso de error) |
Ejemplo de solicitud
curl -X POST "https://api.firecrawl.dev/v2/browser/550e8400-e29b-41d4-a716-446655440000/execute" \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"code": "await page.goto(\"https://example.com\")\ntitle = await page.title()\nprint(title)",
"language": "python"
}'
Ejemplo de respuesta (Éxito)
{
"success": true,
"result": "Example Domain"
}
Ejemplo de respuesta (error)
{
"success": true,
"error": "TimeoutError: page.goto: Timeout 30000ms exceeded."
}
Autorizaciones
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Parámetros de ruta
ID de la sesión del navegador
Cuerpo
application/json
Código que se ejecutará en el entorno aislado del navegador
Required string length:
1 - 100000Lenguaje del código que se va a ejecutar. Usa node para JavaScript o bash para comandos CLI de agent-browser.
Opciones disponibles:
python, node, bash Tiempo máximo de ejecución en segundos
Rango requerido:
1 <= x <= 300Respuesta
Código ejecutado con éxito
Salida estándar de la ejecución del código
Salida estándar (stdout)
Salida de error estándar de la ejecución del código
Código de salida del proceso ejecutado
Indica si el proceso terminó por tiempo de espera (timeout)
Mensaje de error si el código generó una excepción
⌘I
Ejecutar código en una sesión de navegador
curl --request POST \
--url https://api.firecrawl.dev/v2/browser/{sessionId}/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>",
"language": "node",
"timeout": 150
}
'import requests
url = "https://api.firecrawl.dev/v2/browser/{sessionId}/execute"
payload = {
"code": "<string>",
"language": "node",
"timeout": 150
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({code: '<string>', language: 'node', timeout: 150})
};
fetch('https://api.firecrawl.dev/v2/browser/{sessionId}/execute', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.firecrawl.dev/v2/browser/{sessionId}/execute",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'code' => '<string>',
'language' => 'node',
'timeout' => 150
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.firecrawl.dev/v2/browser/{sessionId}/execute"
payload := strings.NewReader("{\n \"code\": \"<string>\",\n \"language\": \"node\",\n \"timeout\": 150\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.firecrawl.dev/v2/browser/{sessionId}/execute")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"<string>\",\n \"language\": \"node\",\n \"timeout\": 150\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.firecrawl.dev/v2/browser/{sessionId}/execute")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"<string>\",\n \"language\": \"node\",\n \"timeout\": 150\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"stdout": "<string>",
"result": "<string>",
"stderr": "<string>",
"exitCode": 123,
"killed": true,
"error": "<string>"
}{
"error": "Payment required to access this resource."
}