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.
What You Can Do
Section titled “What You Can Do”- 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
API Endpoints Summary
Section titled “API Endpoints Summary”All endpoints accessed relative to your Browser service URL:
https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.icuInstance Management:
GET /start- Create or retrieve browser instanceGET /stop- Stop browser instanceGET /restart- Restart browser instance
Browser Interaction:
GET /browse?url=...- Navigate to URL (returns page content)POST /browse- Navigate with POST body optionsGET /eval?script=...- Evaluate JavaScript scriptPOST /eval- Evaluate JavaScript with POST body
Page Content & Export:
GET /html- Get page HTML contentGET /text- Get page text contentGET /screenshot- Take a screenshot of the pageGET /pdf- Export page as PDF
Cookies:
GET /cookies- Get browser cookiesPOST /cookies- Set browser cookiesDELETE /cookies- Clear browser cookies
Introspection & Control:
GET /metadata- Get instance metadata and DevTools URLGET /tabs- List browser tabsPOST /tab/close- Close a browser tabGET /devtools-url- Get DevTools WebSocket URLGET /shutdown- Shutdown browser instance
Logs & History:
GET /console- Get browser console logsGET /network- Get network request/response logsGET /history- Query browsing historyDELETE /history- Delete browsing history
Health & Metrics:
GET /api/v1/browser/health- Service health checkGET /metrics- Server performance metrics
Quick Start
Section titled “Quick Start”# Start a browser instancehoody browser start -c <container-id> --browser-id "main"
# Navigate to a URLhoody browser navigate-post -c <container-id> --browser-id "main" --url "https://example.com"
# Execute JavaScripthoody browser eval-post -c <container-id> --browser-id "main" --script "document.title"
# Take a screenshothoody browser screenshot -c <container-id> --browser-id "main"
# List open tabshoody browser tabs list -c <container-id> --browser-id "main"import { HoodyClient } from '@hoody-ai/hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://api.hoody.icu', token: process.env.HOODY_TOKEN });const containerClient = await client.withContainer({ id: CONTAINER_ID, project_id: PROJECT_ID, server: SERVER });
const BROWSER_ID = 'default';
// Start browser instanceconst instance = await containerClient.browser.instances.start({ browser_id: BROWSER_ID });
// Navigate to URLconst page = await containerClient.browser.interaction.browse({ browser_id: BROWSER_ID, url: 'https://example.com',});
// Execute JavaScriptconst result = await containerClient.browser.interaction.evalPost( { script: 'document.title' }, { browser_id: BROWSER_ID },);
// Take screenshotconst screenshot = await containerClient.browser.interaction.takeScreenshot({ browser_id: BROWSER_ID });
// List tabsconst tabs = await containerClient.browser.introspection.listTabs({ browser_id: BROWSER_ID });# Start browser instancecurl "https://PROJECT-CONTAINER-browser-1.SERVER.containers.hoody.icu/start?browser_id=default"
# Navigate to URLcurl "https://PROJECT-CONTAINER-browser-1.SERVER.containers.hoody.icu/browse?browser_id=default&url=https://example.com"
# Execute JavaScriptcurl "https://PROJECT-CONTAINER-browser-1.SERVER.containers.hoody.icu/eval?browser_id=default&script=document.title"
# List tabscurl "https://PROJECT-CONTAINER-browser-1.SERVER.containers.hoody.icu/tabs?browser_id=default"1. Start a browser instance:
Returns instance metadata including the webSocketDebuggerUrl for Chrome DevTools Protocol access.
2. Navigate to a page:
3. Execute JavaScript on the page:
4. List open tabs:
Browser Configuration
Section titled “Browser Configuration”Fingerprint Profiles
Section titled “Fingerprint Profiles”Configure browser identity for web scraping or testing:
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 (
stable,beta,dev,canary, or exact version)
Multiple Instances
Section titled “Multiple Instances”Run concurrent browser instances using different browser_id values:
# Start first instancecurl "https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.icu/start?browser_id=scraper"
# Start second instancecurl "https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.icu/start?browser_id=testing"
# Each instance is addressed by its browser_idcurl "https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.icu/browse?browser_id=scraper&url=https://example.com"curl "https://PROJECT_ID-CONTAINER_ID-browser-1.SERVER.containers.hoody.icu/browse?browser_id=testing&url=https://example.org"Each instance is isolated with its own tabs, cookies, and state.
Chrome DevTools Protocol
Section titled “Chrome DevTools Protocol”Get the WebSocket URL for direct CDP access:
Use the returned URL with Puppeteer, Playwright, or any CDP client:
const puppeteer = require('puppeteer-core');
// Connect to Hoody Browser instanceconst browser = await puppeteer.connect({ browserWSEndpoint: 'ws://...' // URL from /devtools-url});
const page = await browser.newPage();await page.goto('https://example.com');await page.screenshot({ path: 'screenshot.png' });Use Cases
Section titled “Use Cases”- 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
What’s Next
Section titled “What’s Next”- Browser Instance Management API - Start, stop, restart instances
- Browser Interaction API - Navigate and evaluate JavaScript
- Browser Control API - Metadata, tabs, and DevTools
- Browser Health API - Metrics and monitoring
- cURL Service - For simpler HTTP requests without a browser
- Exec Service - Execute scripts that orchestrate browser automation