v1.0 — Now in public beta

The internet,
but as a picture

Send a URL. Get a screenshot. Raw or beautiful. One API call, no browser to manage, no Puppeteer configs to debug at 2am.

Get your API key See the API
INTEGRATION

Three lines.
That's it.

Your alternative is 200 lines of Puppeteer config, a headless Chrome instance, and a prayer. We're not monsters.

cURL
JavaScript
Python
Mockup mode
curl https://api.nightglass.xyz/v1/screenshot \
  -H "Authorization: Bearer ng_live_abc123..." \
  -d '{"url": "https://stripe.com", "format": "png", "width": 1280}' \
  -o stripe.png
const res = await fetch('https://api.nightglass.xyz/v1/screenshot', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${NIGHTGLASS_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    url: 'https://stripe.com',
    format: 'png',
    width: 1280
  })
});
const screenshot = await res.blob();
import requests

resp = requests.post(
    "https://api.nightglass.xyz/v1/screenshot",
    headers={"Authorization": f"Bearer {NIGHTGLASS_KEY}"},
    json={"url": "https://stripe.com", "format": "png", "width": 1280}
)
with open("stripe.png", "wb") as f:
    f.write(resp.content)
// Same endpoint. One extra param. CleanShot-quality output.
const res = await fetch('https://api.nightglass.xyz/v1/screenshot', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${NIGHTGLASS_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    url: 'https://stripe.com',
    style: 'mockup',             // the magic
    background: 'gradient',       // or any hex colour
    padding: 64,
    borderRadius: 12,
    shadow: true,
    frame: 'browser',            // 'browser' | 'phone' | 'none'
  })
});
const beautiful = await res.blob();
CAPABILITIES

Everything you need.
Nothing you don't.

Built for developers who've been burned by screenshot APIs that promise the world, then deliver a 500 when you need them most.

Mockup modenew

CleanShot-quality presentation via API. Gradient backgrounds, rounded corners, browser frames, drop shadows. One param: style: "mockup".

HTML-to-screenshotnew

Send raw HTML instead of a URL. Perfect for email template previews, invoice rendering, dynamic OG images, and anything you build on the fly.

Any URL, any viewport

Desktop, tablet, mobile. Set exact pixel dimensions. We render the page exactly as a real browser would — because we are one.

Sub-2s captures

Warm browser pool, no cold starts. Most screenshots under 1.5 seconds. Full-page scrolls take a bit longer. Still faster than your CI pipeline.

SSRF-hardened

Private IP blocking, DNS rebinding protection, protocol whitelisting. We block the sketchy stuff so you don't have to think about it.

Metadata extractionnew

Get title, description, OG tags, and favicon alongside your screenshot. One call builds a complete link preview card. No extra requests.

PRICING

One price. No tiers.
No surprises.

Every competitor makes you pick a plan. We don't. Pay for what you capture. That's it.

$0.005per screenshot

Half a cent. All features included. No subscriptions.

50 free screenshots on signup · $5 minimum top-up · Credits never expire

Get your API key

Per-call pricing

Standard screenshot$0.005
Mockup mode$0.01
HTML-to-screenshot$0.005
Metadata extractionFREE

Volume discounts

0 – 10,000 / monthStandard
10,001 – 100,00020% off
100,000+Let's talk
Rate limit10 req/sec

Ship screenshots,
not infrastructure.

50 free screenshots. No credit card. Takes 30 seconds. You were going to spend longer reading this paragraph.

Get your API key