SDKs
Node.js and Python SDKs
Official client libraries for Node.js and Python. Both SDKs provide typed interfaces for every endpoint, automatic error handling, and binary response support.
Node.js SDK
bash
npm install browsefleetInitialization
typescript
import { BrowseFleet } from 'browsefleet';
const bf = new BrowseFleet({
apiKey: 'bf_your_api_key', // Required
baseUrl: 'https://api.browsefleet.com', // Optional (default)
timeout: 60000, // Optional, ms (default: 60000)
});Methods Reference
| Method | Return Type | Description |
|---|---|---|
bf.sessions.create(opts?) | Session | Create a browser session |
bf.sessions.list() | SessionList | List active sessions |
bf.sessions.get(id) | Session | Get session by ID |
bf.sessions.release(id) | { released } | Release a session |
bf.sessions.releaseAll(ids?) | { released } | Release batch or all |
bf.sessions.actions(id, actions) | ActionResponse | Execute Computer API actions |
bf.sessions.solveCaptcha(id, opts?) | CaptchaSolveResponse | Solve CAPTCHA on page |
bf.sessions.listFiles(id) | FileListResponse | List session files |
bf.sessions.downloadFile(id, name) | ArrayBuffer | Download a file |
bf.profiles.create(opts) | Profile | Create a profile |
bf.profiles.list() | ProfileList | List all profiles |
bf.profiles.get(id) | Profile | Get profile by ID |
bf.profiles.delete(id) | { deleted } | Delete a profile |
bf.scrape(url, opts?) | ScrapeResponse | Scrape URL to content |
bf.screenshot(url, opts?) | ArrayBuffer | Screenshot URL |
bf.pdf(url, opts?) | ArrayBuffer | Generate PDF |
bf.usage() | UsageStats | Get usage statistics |
bf.health() | boolean | Health check |
Error Handling
typescript
import { BrowseFleet, AuthError, NotFoundError, RateLimitError, BrowseFleetError } from 'browsefleet';
try {
const session = await bf.sessions.get('invalid-id');
} catch (err) {
if (err instanceof AuthError) {
console.error('Invalid API key');
} else if (err instanceof NotFoundError) {
console.error('Session not found');
} else if (err instanceof RateLimitError) {
console.error('Rate limited — retry later');
} else if (err instanceof BrowseFleetError) {
console.error(`API error ${err.status}: ${err.message}`);
}
}Python SDK
bash
pip install browsefleetInitialization
python
from browsefleet import BrowseFleet
bf = BrowseFleet(
api_key="bf_your_api_key",
base_url="https://api.browsefleet.com", # Required
timeout=60.0, # Optional, seconds (default: 60)
)
# Supports context manager
with BrowseFleet(api_key="bf_...", base_url="https://api.browsefleet.com") as bf:
session = bf.sessions.create(stealth="full")
# bf.close() called automaticallyMethods Reference
| Method | Return Type | Description |
|---|---|---|
bf.sessions.create(**kwargs) | Session | Create a browser session |
bf.sessions.list() | list[Session] | List active sessions |
bf.sessions.get(id) | Session | Get session by ID |
bf.sessions.release(id) | bool | Release a session |
bf.sessions.release_all() | int | Release all sessions |
bf.sessions.release_batch(ids) | int | Release multiple sessions |
bf.sessions.actions(id, actions) | ActionResponse | Execute Computer API actions |
bf.sessions.solve_captcha(id, type) | CaptchaResult | Solve CAPTCHA |
bf.sessions.upload_file(id, name, data) | dict | Upload file |
bf.sessions.list_files(id) | list[str] | List session files |
bf.sessions.download_file(id, name) | bytes | Download a file |
bf.profiles.create(name) | Profile | Create a profile |
bf.profiles.list() | list[Profile] | List profiles |
bf.profiles.get(id) | Profile | Get profile |
bf.profiles.delete(id) | bool | Delete profile |
bf.scrape(url, **kwargs) | ScrapeResult | Scrape URL |
bf.screenshot(url, **kwargs) | bytes | Screenshot URL |
bf.pdf(url, **kwargs) | bytes | Generate PDF |
bf.usage() | UsageStats | Get usage |
bf.health() | dict | Health check |
Error Handling
python
from browsefleet.errors import (
BrowseFleetError,
AuthError,
NotFoundError,
RateLimitError,
ValidationError,
ServerError,
)
try:
session = bf.sessions.get("invalid-id")
except AuthError:
print("Invalid API key")
except NotFoundError:
print("Session not found")
except RateLimitError:
print("Rate limited")
except BrowseFleetError as e:
print(f"API error {e.status}: {e.message}")Building Your Own SDK
BrowseFleet exposes a standard REST API. You can build clients in any language:
REST API
JSON request/response on all endpoints. Authentication via x-api-key header. Error responses use the format { "error": "message" }.
CDP WebSocket
Standard Chrome DevTools Protocol over WebSocket. Connect to ws://host/cdp/SESSION_ID. BrowseFleet transparently proxies all CDP messages.
Binary Responses
Screenshot and PDF endpoints return binary data by default. Send Accept: application/json to get base64 JSON instead.