Browser

Provides endpoints to launch a browser session and execute a list of browser actions.

Executes a list of browser actions and returns an envelope of the BrowserActionResults.

post

Invariants:

  • Actions list must contain at least 1 item.

  • Actions list must not exceed 50 items.

  • Actions execute sequentially; failures do not restart sequence.

  • VisitUrlAction.url must be absolute and use http or https scheme. Example payload: { "deviceName": "Desktop Chrome", "useAdvancedSpoofing": true, "actions": [ { "type": "VisitUrlAction", "url": "https://example.org" }, { "type": "GetHtmlAction" } ] }

Possible error codes:

  • validation_error: Request body failed validation or JSON was invalid

  • too_many_actions: Number of actions exceeds the allowed limit

  • device_not_found: The specified deviceName does not exist

  • unsupported_action: An action 'type' is unknown

  • invalid_url_scheme: VisitUrlAction contains disallowed or invalid URL

  • json_parse_error: Malformed JSON payload

  • unhandled_error: Unexpected server-side failure

Body

Request payload for launching a browser session. The backend will fetch the full context options by DeviceName.

deviceNamestring · min: 1Required

The key/name of the device fingerprint to use. The default is "Desktop Chrome".

useAdvancedSpoofingbooleanOptional

If true, applies advanced fingerprint spoofing. It is recommended to keep this enabled. However, it might not fully respect the device name.

localestring | nullableOptional

Optional BCP-47 locale (e.g., en-US) to override the device's locale.

timezonestring | nullableOptional

Optional IANA time zone ID (e.g., Europe/Berlin) to override the device's time zone.

Responses
200

OK

post
POST /browser/actions/execute HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 149

{
  "deviceName": "Desktop Chrome",
  "useAdvancedSpoofing": true,
  "actions": [
    {
      "type": "VisitUrlAction",
      "url": "https://example.org"
    },
    {
      "type": "GetHtmlAction"
    }
  ]
}
{
  "executionId": "123e4567-e89b-12d3-a456-426614174000",
  "results": [
    {
      "type": "VisitUrlActionResult",
      "success": true,
      "data": {
        "status": 200
      }
    },
    {
      "type": "GetHtmlActionResult",
      "success": true,
      "data": {
        "html": "<!doctype html><html>...</html>"
      }
    }
  ],
  "meta": {
    "actionsRequested": 2,
    "actionsSucceeded": 2,
    "startedAtUtc": "2025-01-01T12:00:00Z",
    "finishedAtUtc": "2025-01-01T12:00:02Z",
    "durationMs": 2000,
    "responseSizeBytes": 1234,
    "maxActionsAllowed": 50
  }
}

Visit a URL, then fetch the HTML (Convenience endpoint).

get

Possible error codes:

  • validation_error

  • device_not_found

  • unsupported_action

  • json_parse_error

  • unhandled_error

Query parameters
urlstringOptional
deviceNamestringOptionalDefault: Desktop Chrome
timezonestringOptionalDefault: America/New_York
localestringOptionalDefault: en-US
Responses
200

OK

get
GET /browser/html HTTP/1.1
Host: 
Accept: */*
{
  "executionId": "123e4567-e89b-12d3-a456-426614174000",
  "results": [
    {
      "type": "VisitUrlActionResult",
      "success": true,
      "data": {
        "status": 200
      }
    },
    {
      "type": "GetHtmlActionResult",
      "success": true,
      "data": {
        "html": "<!doctype html><html>...</html>"
      }
    }
  ],
  "meta": {
    "actionsRequested": 2,
    "actionsSucceeded": 2,
    "startedAtUtc": "2025-01-01T12:00:00Z",
    "finishedAtUtc": "2025-01-01T12:00:02Z",
    "durationMs": 2000,
    "responseSizeBytes": 1234,
    "maxActionsAllowed": 50
  }
}