A headless browser microservice that renders web pages and returns screenshots, HTML, and Markdown via a simple HTTP API. Built with Go and Rod (Chromium automation).
Send a URL, get back:
- A full-page screenshot (base64-encoded PNG)
- The fully rendered HTML of the page
- Optionally, the page content converted to Markdown
Useful for scraping JS-heavy pages, generating previews, or extracting content from sites that require JavaScript to render.
Render a URL and capture its content.
Request:
{
"url": "https://example.com",
"wait_time_seconds": 5,
"format": "markdown"
}| Field | Type | Required | Description |
|---|---|---|---|
url |
string | yes | URL to render |
wait_time_seconds |
number | no | Seconds to wait after page load (default: 5, max: 30) |
format |
string | no | Set to "markdown" to include Markdown in the response |
Response:
{
"image_base64": "iVBORw0KGgoAAAAN...",
"html_text": "<html>...</html>",
"markdown": "# Example Domain\n...",
"url": "https://example.com",
"error": "...",
"processed_at": "2026-03-25T17:30:45Z"
}Returns browser health status and request count.
Returns browser pool statistics.
Interactive test UI for manual use.
docker build -t nobrowser .
docker run -p 8080:8080 nobrowserRequires Go 1.24+ and Chromium installed on your system.
go run main.goServer starts on http://localhost:8080.
- Go 1.24
- go-rod — Chromium browser automation
- html-to-markdown — HTML to Markdown conversion
- Chromium + Xvfb (in Docker)