Guarded public-page rendering

A public URL in.
A clean artifact out.

Turn a public webpage into a screenshot or PDF without carrying Chromium, an unbounded queue, or a private-network exposure into your product.

Reference run: 197 of 200 preflighted public HTML pages rendered successfully. Method and limits.

Live instrument URL → JPEG
Ready
3 demos / hour
Renderer standing by Enter a public URL and capture it through the production service.
No capture requested 1440 × 900 · JPEG

Evidence before adjectives

Measured on pages we did not choose by hand.

A deterministic Tranco sample was preflighted for resolvable public HTML, then rendered through the same production endpoint at concurrency two. This is private-beta evidence, not an SLA.

Supported-page reference run 197 / 200
197 successful 3 bounded timeouts
Median end to end
2.42 seconds
95th percentile
7.68 seconds
Queue after run
0 active · 0 pending
Current smoke suite
10 / 10 passed
Read the evidence and supported boundaries

Narrow by design

Public pages only.
On purpose.

Latchshot is a render service, not a browser-for-hire. The smaller contract is easier to integrate, meter, defend, and support.

Built in

  • Private and special-use network blocking
  • Per-job Chromium process isolation
  • Bounded dimensions, delays, and deadlines
  • Finite concurrency and queue depth
  • Successful-render quota accounting
  • Navigation, font, and script diagnostics

Intentionally absent

  • CAPTCHA or anti-bot bypass
  • Proxy rotation
  • Arbitrary browser scripts
  • Private-network access
  • Cookies or login sessions
  • Automatic overage billing

One bounded request

The integration ends in a file.

  1. 1
    Send a public URL

    Choose PNG, JPEG, or PDF plus bounded viewport and wait options.

  2. 2
    Latchshot guards and renders

    Targets are validated, work is queued, and one isolated Chromium job runs.

  3. 3
    Receive the artifact

    The response is the image or PDF, with timing and fallback diagnostics in headers.

curl · screenshot
curl --fail-with-body https://latchshot.fly.dev/v1/render \
  -H "Authorization: Bearer $LATCHSHOT_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{
    "url": "https://example.com",
    "format": "png",
    "width": 1440,
    "height": 900
  }' \
  --output capture.png

Free tier + direct plans

Start free. Pay when the workflow fits.

The Free plan renews every UTC calendar month. Failed direct renders do not consume quota, and automatic overages stay off.

PlanSuccessful rendersPer 1,000MonthlyAction
FreeEvaluate and prototype 100$0Get free key
LaunchShip the first workflow 2,500$7.60$19Request Launch
ScalePower recurring capture jobs 50,000$2.98$149Request Scale

Swipe for monthly price and access

One-time implementation $99

Want the first call site wired for you?

Move one eligible public-repository JavaScript, TypeScript, or Python backend call with a focused patch, tests, an approved public sample, and rollback notes. API usage is separate.

Check the migration fit

Already operate a screenshot endpoint? Get one public-repository route reviewed for SSRF, DNS, redirect, subrequest, authorization, and error-handling risks for $149 once.

Check the safety-review scope

The Free plan replenishes to 100 successful renders at the start of each UTC calendar month. Existing key holders can request a paid tier below; the owner handles payment and activates the same key. Review data handling and retention before sending a target.

Free plan · no card

Take the key. Keep the free allowance.

Enter an email and get a key with 100 successful renders every UTC calendar month. Workflow context and contact permission stay optional.

  • No credit card
  • Key issued immediately
  • 100 renders each month
  • One free key per email
  • No meeting required
Share workflow context Optional

From test to production

Keep the key. Raise the limit.

Choose a higher tier with the API key you already tested. This request does not take payment; the owner replies to the email attached to the key, confirms payment separately, then activates the new quota on that same key.

1 · Request
Authenticate the current key and choose a higher plan.
2 · Confirm
The owner sends payment and activation instructions by email.
3 · Continue
After confirmed payment, the same key receives the paid quota.