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:4000Every 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=trueto 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=trueserves repeat requests from the edge for up to 30 days. See Caching.
Next steps
- Quick start — a screenshot in under a minute
- SDKs & CLI — official Node.js and Python clients
- MCP server — give Claude, Cursor and other agents web access
- Playbooks — end-to-end recipes