Overview
The Browserize API lets you programmatically create, manage, and control headless (or headed) browser instances. Every browser spins up on our edge network and is ready to use within seconds — no infrastructure to manage.
Each browser supports VNC for live viewing, CDP for Playwright/Puppeteer integration, and MCP for AI agent tool use. You pay only for the compute hours consumed.
Base URL
All API requests should be made to: https://browserize.com/api/v1
Authentication
All API requests require an API key sent via the Authorization header. You can generate API keys from your project dashboard.
Authorization: Bearer sk-brz-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAPI keys are scoped to a single project. A key grants full access to all browser operations within that project. Keep your keys secure — do not share them in client-side code or version control.
Base URL
https://browserize.com/api/v1All endpoints below are relative to this base URL. Responses are always JSON. Successful responses include success: true and the relevant data field.
API Endpoints
Seven endpoints cover the full browser lifecycle — listing, creating, reading, updating, deleting, starting, and stopping.
/browsersReturns a paginated list of all browsers in your project. Non-deleted browsers only.
Query Parameters
Response
{
"success": true,
"data": [
{
"id": "abc123def456",
"name": "scraper-prod-01",
"status": "Running",
"uptime": "3h 42m",
"cpuLimit": 1,
"memoryLimit": 1024,
"vncEnabled": true,
"mcpEnabled": true,
"cdpEnabled": true,
"novnc_url": "https://proxy.browserize.com/abc123/novnc",
"debug_url": "https://proxy.browserize.com/abc123/cdp",
"createdAt": 1700000000000
}
],
"pagination": {
"total": 42,
"limit": 50,
"offset": 0,
"hasMore": false
}
}/browsersCreates a new browser instance and immediately launches it. The browser transitions through Starting → Running automatically.
Request Body
Example Request
curl -X POST https://browserize.com/api/v1/browsers \
-H "Authorization: Bearer sk-brz-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "scraper-prod-01",
"cpuLimit": 2,
"memoryLimit": 2048,
"vncEnabled": true,
"mcpEnabled": true,
"cdpEnabled": true
}'Response
{
"success": true,
"data": {
"browserId": "abc123def456"
}
}/browsers/:idReturns a single browser instance by its ID.
Path Parameters
Response
{
"success": true,
"data": {
"id": "abc123def456",
"name": "scraper-prod-01",
"status": "Running",
"uptime": "1h 23m",
"cpuLimit": 2,
"memoryLimit": 2048,
"vncEnabled": true,
"mcpEnabled": true,
"cdpEnabled": true,
"flyMachineId": "e7d8e9f0a1b2",
"novnc_url": "https://proxy.browserize.com/abc123/novnc",
"debug_url": "https://proxy.browserize.com/abc123/cdp",
"createdAt": 1700000000000
}
}/browsers/:idUpdate the name and/or resource limits of an existing browser. Only provided fields are changed.
Request Body
Response
{
"success": true
}/browsers/:idPermanently deletes a browser instance. Destroys the underlying Fly machine and stops billing. This action cannot be undone.
Response
{
"success": true
}/browsers/:id/startStarts a previously stopped browser. The Fly machine boots and the browser becomes accessible within seconds.
Response
{
"success": true
}Billing
Starting a browser resumes billing. Usage is tracked per-second and deducted from your account balance.
/browsers/:id/stopStops a running browser. The Fly machine is shut down and billing is stopped.
Response
{
"success": true
}Pagination
The GET /browsers endpoint returns paginated results. Use the limit and offset query parameters to navigate through pages.
# First page (default)
GET /api/v1/browsers
# Next page
GET /api/v1/browsers?limit=50&offset=50
# Custom page size
GET /api/v1/browsers?limit=20&offset=40The response includes a pagination object with total, limit, offset, and hasMore fields so you can determine when you've reached the last page.
Error Codes
The API uses standard HTTP status codes. Errors return a JSON body with an error field describing the issue.
{
"error": "Insufficient balance. Please purchase more compute hours."
}Code Examples
Quick-start examples for creating and managing browsers in popular languages.
Python
import requests
API_KEY = "sk-brz-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
BASE_URL = "https://browserize.com/api/v1"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
# Create and launch a browser
res = requests.post(
f"{BASE_URL}/browsers",
headers=HEADERS,
json={
"name": "my-browser",
"cpuLimit": 2,
"memoryLimit": 2048,
},
)
browser_id = res.json()["data"]["browserId"]
print(f"Created: {browser_id}")
# List all browsers
res = requests.get(f"{BASE_URL}/browsers", headers=HEADERS)
for b in res.json()["data"]:
print(f" {b['name']} — {b['status']}")
# Stop when done
requests.put(f"{BASE_URL}/browsers/{browser_id}/stop", headers=HEADERS)Node.js
const API_KEY = "sk-brz-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const BASE = "https://browserize.com/api/v1";
const headers = {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
};
// Create and launch
const { data } = await fetch(`${BASE}/browsers`, {
method: "POST",
headers,
body: JSON.stringify({ name: "my-browser" }),
}).then((r) => r.json());
console.log("Browser ID:", data.browserId);
// List all
const { data: browsers } = await fetch(
`${BASE}/browsers?limit=10`,
{ headers },
).then((r) => r.json());
browsers.forEach((b) =>
console.log(`${b.name} — ${b.status}`)
);Go
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
apiKey := "sk-brz-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
base := "https://browserize.com/api/v1"
body, _ := json.Marshal(map[string]any{
"name": "my-browser",
})
req, _ := http.NewRequest("POST",
base+"/browsers",
bytes.NewReader(body),
)
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
var result map[string]any
json.NewDecoder(res.Body).Decode(&result)
fmt.Println(result)
}cURL
# Create a browser
curl -X POST https://browserize.com/api/v1/browsers \
-H "Authorization: Bearer sk-brz-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"name": "my-browser"}'
# List browsers (first page)
curl https://browserize.com/api/v1/browsers \
-H "Authorization: Bearer sk-brz-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Stop a browser
curl -X PUT https://browserize.com/api/v1/browsers/BROWSER_ID/stop \
-H "Authorization: Bearer sk-brz-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Rate Limits
API keys are rate-limited to protect the platform. Limits are applied per-key and scale with your plan:
Rate limit headers (X-RateLimit-Remaining, X-RateLimit-Reset) are included in all API responses.