Skip to content

Getting started

Introduction

Capture screenshots, extract content and analyze any webpage with one REST API.

ScreenshotDude is a REST API that renders webpages in real Chromium browsers and returns what you need: screenshots and PDFs, clean content (HTML, Markdown, links, metadata), AI analysis, or the raw HTTP response. All endpoints share one API key, one credit balance and the same conventions.

Base URL

All requests go to:

http://localhost:4000

Every endpoint is a GET request with query-string parameters, so it works from any language, any HTTP client and no-code tools.

Authentication

Send your API key in the x-api-key header:

curl "http://localhost:4000/v1/usage" -H "x-api-key: YOUR_API_KEY"

Create and manage keys in the dashboard under API Keys. See Authentication & API keys for quotas, rotation and error codes.

Your first call

GET /v1/usage is free and returns your remaining credits, rate limits and key details — perfect for checking that everything is wired up:

curl "http://localhost:4000/v1/usage" \
  -H "x-api-key: $SNAPLENS_API_KEY"

You'll get a JSON object like { "remaining": 100, "total_used": 0, ... }. Then take your first screenshot in the Quick start.

The APIs

API Endpoint What it returns
Screenshot GET /v1/capture PNG, JPEG, WebP or PDF — or JSON with an S3 URL
Content GET /v1/content Metadata, links, HTML, Markdown, sitemap
AI Analysis GET /v1/analyze Summary, features, categories, audience, contacts, custom fields
Website crawler GET /v1/website/crawler Status, headers, redirects and raw HTML (no rendering)
Jobs GET /v1/jobs/{id} Status and result of async requests (free)
Usage GET /v1/usage Balances, rate limits and key details (free)
Stats GET /v1/stats Infrastructure health for the last hour (free)

Key concepts

  • Credits — 1 credit per successful request on billable endpoints. Failed requests are never billed. See Credits & billing.
  • Sync or async — requests are synchronous by default (60 s limit). Add is_async=true to get a job id and poll or receive a webhook.
  • Errors — every error is JSON { "error": "..." } with a meaningful status code. See Status codes.
  • Caching — cache=true serves repeat requests from the edge for up to 30 days. See Caching.

Next steps