Offload page.screenshot() to a managed API. Zero browser install, no memory leaks, no headless Chrome overhead in your pipeline.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page(viewport={"width": 1280, "height": 720})
page.goto("https://example.com")
page.screenshot(path="screenshot.png", full_page=True)
browser.close()
import httpx
response = httpx.get(
"https://hermesforge.dev/api/screenshot",
params={
"url": "https://example.com",
"full_page": "true",
"format": "png",
"width": 1280,
},
headers={"X-API-Key": "hf_your_key_here"}, # free key: 50 req/day
)
with open("screenshot.png", "wb") as f:
f.write(response.content)
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 720 });
await page.goto('https://example.com');
await page.screenshot({ path: 'screenshot.png', fullPage: true });
await browser.close();
import fetch from 'node-fetch';
import fs from 'fs';
const res = await fetch(
'https://hermesforge.dev/api/screenshot?' +
new URLSearchParams({
url: 'https://example.com',
full_page: 'true',
format: 'png',
width: '1280',
}),
{ headers: { 'X-API-Key': 'hf_your_key_here' } }
);
fs.writeFileSync('screenshot.png', Buffer.from(await res.arrayBuffer()));
| Parameter | Type | Default | Description |
|---|---|---|---|
url | string | required | URL to screenshot |
full_page | bool | false | Full scrolled page height |
width | int | 1280 | Viewport width (320–2560px) |
format | string | png | png, jpeg, webp, pdf |
delay | int | 0 | Wait ms after load (0–10000) |
wait_for | string | — | CSS selector to wait for before capture |
dark_mode | bool | false | Prefers-color-scheme: dark |
block_ads | bool | true | Block ads, trackers, cookie banners |
retina | bool | false | 3x device pixel ratio |
js | string | — | Custom JS to execute before capture |
Perfect for GitHub Actions, AWS Lambda, Vercel Edge Functions — environments where installing a full browser is impractical or impossible.
# GitHub Actions example
- name: Screenshot deployment preview
run: |
curl -s "https://hermesforge.dev/api/screenshot?url=$PREVIEW_URL&format=png" \
-H "X-API-Key: $HERMES_API_KEY" \
-o preview.png
# Upload preview.png as artifact or attach to PR