# Webshot > Webshot is a free public screenshot service maintained by Tuxxin. Capture any public URL as a PNG, JPG, WebP, or PDF using real headless Chrome. No signup, no API key, no watermark. A premium tier (Authorization: Bearer key) unlocks custom-resolution captures. The service exposes both a website (CSRF-fronted browser UI) and an open API (`POST` or `GET /api/capture`). The same engine powers both. Rate limit is 5 credits per 15 minutes per IP for the free tier; higher limits available via `webshot.site/contact`. Premium API keys are issued manually (no self-serve signup yet) and unlock `mode=custom` with arbitrary 320–3840 × 240–2160 viewports. ## MCP server (for AI assistants) Webshot speaks the Model Context Protocol, so an MCP-aware client can call it as a tool instead of scraping pages. - Endpoint: `https://webshot.site/mcp` (JSON-RPC 2.0 over HTTP POST) - Tool: `capture_sandbox_webshot(url, viewport?, full_page?, format?)` — renders the URL and returns a link to the image plus metadata - No key required. Shares the ordinary keyless credit bucket described below. Example client config: { "mcpServers": { "webshot": { "url": "https://webshot.site/mcp" } } } Note: `/mcp` is POST-only and returns 405 to GET — it is an API endpoint, not a page, and is deliberately absent from the sitemap. A capture is a real headless-Chrome render, so allow a client timeout of at least 90 seconds. Browser-based agents: pages also register the same tool via WebMCP (`document.modelContext`), which works natively in Edge 147 and in Chrome 149 behind its origin trial. The call is same-origin, so it uses your existing session and no key ever enters the model's context. ## API endpoint - [Developers / API docs](https://webshot.site/developers): full reference. Endpoint, request/response shape, modes, authentication, code samples (curl, Python, Node, PHP, Go). - `POST https://webshot.site/api/capture` — JSON or form body. Returns the raw image bytes with rate-limit headers. - `GET https://webshot.site/api/capture?url=...&format=png&mode=desktop_full` — convenience GET form for AI agents and quick tests. - `GET https://webshot.site/throttle-status` — current bucket state for the caller's IP. - `&response=json` on either form returns a JSON envelope instead of raw bytes: `{ok, image_url, format, mode, bytes, source_host, credits, retention, docs}`. The `image_url` is a public `https://webshot.site/shot/<32-hex>` link — no session, no key, reusable, and safe to hand to another tool. Without `response=json` the response is the raw image, unchanged. ### Quota — credits, not captures The keyless allowance is **5 credits per 15 minutes per IP — not 5 credits.** A viewport capture costs 1 credit; a full-page or custom-size capture costs 2. The default `mode` is `desktop_full`, which is full-page, so **a default anonymous call costs 2 credits and you get 2 captures per 15 minutes.** Pass `mode=desktop_viewport` to spend 1 and get 5. Output format (`jpg`/`png`/`webp`/`pdf`) does **not** affect cost. Read the live bucket at `GET /throttle-status`. ### Retention Stored captures are currently kept **indefinitely** — automatic pruning is disabled. The `retention` field in the JSON response reports the live policy at request time; read it rather than assuming, because if pruning is ever enabled that field becomes authoritative and existing `/shot/` links will begin to expire. - Modes: `desktop_full`, `desktop_viewport`, `tablet_full`, `tablet_viewport`, `mobile_full`, `mobile_viewport`, `custom` (premium). - Formats: `jpg`, `png`, `webp`, `pdf`. - Auth: `Authorization: Bearer wsk_`. Keys are **self-serve** — Starter ($1.99/mo), Pro ($6.99/mo) and Business ($19.99/mo) are purchasable at [/pricing](https://webshot.site/pricing) and issued immediately. `mode=custom` requires Pro or above. A present-but-invalid key fails with 401 rather than silently downgrading. - Honest scope: Webshot loads pages with real headless Chrome and does not attempt to bypass site protections. Sites that decline automated traffic will return their normal block/challenge page. ## Official SDKs (MIT, on GitHub) - [github.com/tuxxin/webshot.site-sdk](https://github.com/tuxxin/webshot.site-sdk): monorepo with three official client libraries. - JavaScript / TypeScript: `npm install @tuxxin/webshot` (Node 18+ and modern browsers). - Python: `pip install webshot` (sync + async clients, Python 3.9+). - PHP: `composer require tuxxin/webshot` (PHP 8.1+, cURL-based). ## Use-case landing pages - [/use-cases](https://webshot.site/use-cases): index of niche workflows. - [Google Maps screenshots](https://webshot.site/use-cases/google-maps-screenshot) - [WordPress / Elementor preview captures](https://webshot.site/use-cases/wordpress-screenshot) - [Landing-page QA](https://webshot.site/use-cases/landing-page-screenshot) - [Webpage evidence for legal / compliance](https://webshot.site/use-cases/legal-evidence-screenshot) - [Tweet / LinkedIn / social-post captures](https://webshot.site/use-cases/social-media-screenshot) - [Competitor monitoring](https://webshot.site/use-cases/competitor-screenshot) - [Email-friendly screenshots](https://webshot.site/use-cases/email-screenshot) - [Visual regression testing](https://webshot.site/use-cases/visual-regression-screenshot) - [URL to PDF converter](https://webshot.site/url-to-pdf): single-purpose page focused on the URL→PDF workflow. ## Blog - [Blog index](https://webshot.site/blog): tutorials, format comparisons, automation guides. - [Sitemap (XML)](https://webshot.site/sitemap.xml): canonical URL list (multilingual — 27 locale variants per indexable page). ## Tracking / canonical - Canonical hostname: `webshot.site` (the `www.` variant 301-redirects to apex). - Predecessor host: `webshot.tuxxin.com` 301-redirects here (legacy inbound links only). - 27 locale prefixes (`/es/`, `/de/`, `/fr/`, `/ja/`, `/zh-cn/`, `/ar/`, etc.) — the prefix is stripped by the router; non-localized pages canonicalize back to the English URL. ## Optional - [Privacy](https://webshot.site/privacy) - [Terms](https://webshot.site/terms) - [Maintainer: Tuxxin](https://tuxxin.com)