Skip to content
Hoody.com

Hoody Browser gives you HTTP control over Chromium instances: start browsers, navigate pages, evaluate JavaScript, manage tabs, and capture DevTools URLs. Typical uses are web scraping, automated testing, screenshot services, and AI-driven web interaction.

  • Instance management - Start, stop, and restart Chromium processes, each with its own tabs, cookies, and state
  • Page navigation - Browse a URL and read back its navigation metadata, HTML, or text
  • JavaScript execution - Evaluate a script in the page context over GET or POST
  • Tab management - List the open tabs and close them individually
  • DevTools access - Get the WebSocket URL for the Chrome DevTools Protocol
  • Fingerprinting - Set user agent, viewport, geolocation, locale, and Chromium version
  • Health monitoring - Track server metrics and instance health
  • Multiple instances - Run concurrent browsers on different ports

All endpoints are relative to your Browser service URL:

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

Instance management:

Browser interaction:

Page content and export:

Cookies:

Introspection and control:

Logs and 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"

Starting an instance returns its metadata, including the webSocketDebuggerUrl for Chrome DevTools Protocol access.

Everything about the instance is set at /start, before Chromium launches. A fingerprint profile supplies the baseline and any parameter you pass on top of it wins, so you can start from a known identity and change one thing:

Terminal window
# Start from the "default" fingerprint, then override identity and network
hoody browser start -c <container-id> --browser-id "0" \
--fingerprint-id default \
--chromium-version 136 \
--locale en-GB --timezone-id Europe/London \
--viewport 1920x1080 \
--proxy-server socks5://127.0.0.1:9050 \
--use-remote-debugging-port

Engine and profile

ParameterWhat it does
chromiumVersionFull version (136.0.7103.113), major version (136), or channel (stable, beta, dev, canary). The call blocks while the build downloads.
fingerprintIdLoads storage/config/fingerprints/<id>.json for its context and launch defaults. Request parameters override it.
stealthAnti-detection patches. On by default.

Identity presented to the page

ParameterWhat it does
userAgentReplaces the user-agent string.
localeBCP 47 language tag, for example en-GB.
timezoneIdIANA timezone, for example Europe/London.
geolocationCoordinates reported to the geolocation API.
viewport / noViewportWindow size, or let the window size itself.

Network

ParameterDefaultWhat it does
proxyServernonehttp://, https://, socks5:// or socks5h://. Paired with proxyUsername, proxyPassword, proxyBypass.
enableQuicfalseQUIC and HTTP/3 are blocked unless you turn them on.
enableDnsOverHttpstrueDNS-over-HTTPS, resolver set by dnsOverHttpsUrl.
dnsOverHttpsUrlCloudflareAny HTTPS resolver.

Debugging and display

ParameterDefaultWhat it does
useRemoteDebuggingPorttrueLaunches with --remote-debugging-port and fills in webSocketDebuggerUrl.
remoteDebuggingPortfree portPin the DevTools port.
remoteDebuggingAddress127.0.0.1Use 0.0.0.0 only in trusted environments.
showBrowsertrueHeadful. Required for extensions.
displaynoneX display number for headful mode.
extensions, extensionsDir, extensionsStoreIdsnoneLoad unpacked extensions, a directory of them, or Chrome Web Store IDs. All need showBrowser=true.

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.com/api/v1/browser/start?browser_id=0"
# Start second instance
curl "https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.com/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.com/api/v1/browser/browse?browser_id=0&url=https://example.com"
curl "https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.com/api/v1/browser/browse?browser_id=1&url=https://example.org"

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

Launch a Chromium instance with useRemoteDebuggingPort=true and it gets a paired cdp-{n} DevTools Protocol URL, where 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.com/'
);
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, so you do not have to start it first.
  • Restart-stable - The URL names the instance rather than a port, so it keeps working across browser restarts. Always pass the https://…-cdp-{n}/ base URL rather than a hard-coded wss:// link, because debugger GUIDs change on every launch.
  • Chromium only - Connecting CDP to a Firefox instance returns 501.

The DevTools endpoint returns the same paired URL. Open it in your browser to load Chrome DevTools against the remote instance:

Terminal window
# Get the DevTools Protocol URLs for an instance
hoody browser devtools -c <container-id> --browser-id "0"
  • Web scraping - Fetch a page’s rendered HTML or text over HTTP
  • Automated testing - Run end-to-end tests against web applications, including CDP-driven Playwright and Puppeteer suites
  • Screenshot services - Capture page images on demand without running Chrome locally
  • AI web interaction - Let AI agents browse pages and evaluate scripts against them
  • PDF generation - Render HTML to PDF via Chrome’s print functionality
  • Performance monitoring - Audit web performance metrics