Skip to content
Hoody.com

Chrome-as-a-service. Hoody Browser gives you HTTP control over Chromium instances—start browsers, navigate pages, evaluate JavaScript, manage tabs, and capture DevTools URLs. Perfect for web scraping, automated testing, screenshot services, and AI-driven web interaction.

  • Instance Management - Start, stop, restart isolated browser instances
  • Page Navigation - Browse URLs and get page content
  • JavaScript Execution - Evaluate JS in browser context via HTTP
  • Tab Management - List and manage browser tabs
  • DevTools Access - Get WebSocket URL for Chrome DevTools Protocol
  • Fingerprinting - Configure user agent, viewport, geolocation, locale
  • Health Monitoring - Track server metrics and instance health
  • Multiple Instances - Run concurrent browsers on different ports

All endpoints accessed relative to your Browser service URL:

https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.icu

Instance Management:

Browser Interaction:

Page Content & Export:

Cookies:

Introspection & Control:

Logs & History:

Health:

Terminal window
# Start a browser instance
hoody browser start -c <container-id> --browser-id "0"
# Navigate to a URL
hoody browser navigate -c <container-id> --browser-id "0" --url "https://example.com"
# Execute JavaScript
hoody browser eval -c <container-id> --browser-id "0" --script "document.title"
# Take a screenshot
hoody browser screenshot -c <container-id> --browser-id "0"
# List open tabs
hoody browser tabs list -c <container-id> --browser-id "0"

1. Start a browser instance:

GET Start a new browser instance
/api/v1/browser/start
Click "Run" to execute the request

Returns instance metadata including the webSocketDebuggerUrl for Chrome DevTools Protocol access.

2. Navigate to a page:

GET Browse to a URL and get navigation metadata
/api/v1/browser/browse?url=https://example.com
Click "Run" to execute the request

3. Execute JavaScript on the page:

GET Evaluate JavaScript in the browser context
/eval?script=document.title
Click "Run" to execute the request

4. List open tabs:

GET List all browser tabs
/tabs
Click "Run" to execute the request

Configure browser identity for web scraping or testing:

GET Start browser with fingerprint profile and DevTools access
/start?fingerprintId=default&useRemoteDebuggingPort=true
Click "Run" to execute the request

Available configuration:

  • User Agent - Custom browser identification string
  • Viewport - Screen size and device pixel ratio
  • Geolocation - Latitude/longitude spoofing
  • Locale & Timezone - Language and time settings
  • Chromium Version - Select specific Chrome version — full version (136.0.7103.113), major version (136), or channel tag (stable, beta, dev, canary)

Run concurrent browser instances using different browser_id values:

Terminal window
# Start first instance
curl "https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.icu/api/v1/browser/start?browser_id=0"
# Start second instance
curl "https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.icu/api/v1/browser/start?browser_id=1"
# Each instance is addressed by its browser_id
curl "https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.icu/api/v1/browser/browse?browser_id=0&url=https://example.com"
curl "https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.icu/api/v1/browser/browse?browser_id=1&url=https://example.org"

Each instance is isolated with its own tabs, cookies, and state.

When a Chromium instance is launched with useRemoteDebuggingPort=true, it has a paired cdp-{n} DevTools Protocol URL — cdp-1 is the same browser as browser-1. Point Playwright, Puppeteer, or any CDP client at the HTTPS base URL and it discovers the live WebSocket for you:

const { chromium } = require('playwright');
// Connect to a Hoody Browser instance over CDP
const browser = await chromium.connectOverCDP(
'https://PROJECT_ID-CONTAINER_ID-cdp-1.SERVER.containers.hoody.icu/'
);
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'screenshot.png' });
  • On-demand — connecting to a cold cdp-{n} URL auto-starts that instance; nothing needs to be started first.
  • Restart-stable — the URL names the instance, not a port, so it keeps working across browser restarts. Always pass the https://…-cdp-{n}/ base URL rather than a hard-coded wss:// link (debugger GUIDs change per launch).
  • Chromium only — connecting CDP to a Firefox instance returns 501.

The paired URL is also returned by the DevTools endpoint — open it in your browser to load Chrome DevTools against the remote instance:

GET Get the Chrome DevTools Protocol URL for an instance
/api/v1/browser/devtools-url
Click "Run" to execute the request
  • Web Scraping - Extract data from websites via HTTP API
  • Automated Testing - Run E2E tests against web applications
  • Screenshot Services - Capture webpage screenshots on demand
  • AI Web Interaction - Let AI agents browse and interact with web pages
  • PDF Generation - Render HTML to PDF via Chrome’s print functionality
  • Performance Monitoring - Audit web performance metrics