Agent Screenshot Hub
URL rein, Bild raus — oder URL rein, ganze Seite raus. Jeder Aufruf wird innerhalb der Anfrage über x402 bezahlt. Keine Anmeldung, kein API-Key, kein Dashboard.
Endpunkte
| Route | Preis | Was sie tut |
|---|---|---|
POST /screenshot | 0.004 USDC | Viewport-Aufnahme, png / webp / jpeg |
POST /screenshot mit full_page | 0.006 USDC | ganzes Dokument statt Viewport |
POST /snapshot | 0.006 USDC | DOM, Accessibility-Baum, Links, Formulare, Konsole, Bild, Zeiten und Anfragen — aus einem Seitenaufruf |
/screenshot: url, width, height, full_page, format, quality, delay_ms, selector, dark_mode, block_cookiebanner.
/snapshot: url, viewport, wait_until, wait_ms, include, screenshot_format, screenshot_quality, full_page, check_links.
Was /snapshot zurückgibt
Ein einziger Seitenaufruf, acht Teile in einer Antwort — nicht sechs Ladevorgänge:
- dom — das HTML nach JavaScript, gedeckelt bei 2 MB; eine Kürzung wird gemeldet, nicht verschwiegen.
- a11y — der Accessibility-Baum aus CDP, flach mit Elternverweis:
role,name,level,focusable. - links —
href, Text,rel,target, intern oder extern. Statuscode nur beicheck_links, ohne Aufpreis. - forms —
action,methodund je Feld Name, Typ, Pflicht, Beschriftung,autocomplete, Optionswerte. Das Verzeichnis selbst lässt Feldwerte weg;domist das HTML wörtlich und enthält versteckte Werte wie CSRF-Token sehr wohl. - console — Fehler und Warnungen mit Typ, Text, Quelle und Zeile.
- screenshot — Base64 plus Abhol-Adresse, Format, Pixelmaße aus dem Bild selbst und Bytes.
- timings — TTFB, DOMContentLoaded, Load, Gesamtdauer.
- requests_summary — Anzahl, Bytes, Drittanbieter-Hosts und jede aus der Seite heraus blockierte Anfrage.
Über 8 MB Antwortgröße wandert das Bild heraus und wird als Adresse mit 15 Minuten Gültigkeit geliefert; screenshot.delivery sagt, welche der beiden Formen ankam.
Wie ein Aufruf abläuft
curl -s -X POST https://shot.netzhandwerker.de/screenshot \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","width":1280,"height":800,"format":"webp"}'
curl -s -X POST https://shot.netzhandwerker.de/snapshot \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","viewport":{"width":1280,"height":800},
"wait_until":"networkidle","include":["dom","a11y","links","forms","console","screenshot"]}'
Der erste Aufruf antwortet mit HTTP 402 und den akzeptierten Zahlungsbedingungen. Ein x402-fähiger Client signiert sie und wiederholt die Anfrage; die Antwort kommt im selben Umlauf. Jede x402-Client-Bibliothek und jeder MCP-Client auf /mcp erledigt das ohne weitere Einrichtung.
Regeln, an die wir uns halten
- 20 Sekunden Zeitlimit je Aufruf, 8 MB je Antwort. Danach 504 und
charged=false. - Private und Link-Local-Adressbereiche werden abgewiesen — auch für Anfragen, die die Seite selbst auslöst.
- Chrome läuft ohne Zugangsdaten, ohne Cookie-Import, ohne Login. Anmeldeseiten werden abgebildet, nicht überwunden.
- Cookie-Banner werden ausgeblendet, nie angeklickt.
- Bezahlschranken und Bot-Sperren werden nicht umgangen.
- Bilder verfallen nach 15 Minuten.
- Ein gescheiterter Aufruf wird vor der Abrechnung abgewiesen.
Discovery
- /openapi.json
- /.well-known/x402
- /mcp — Model Context Protocol
- /pricing
- /llms.txt
- /health · /readiness
Betriebszahlen
Gleitendes 30-Tage-Fenster, live: 6 Aufrufe, davon 0 bezahlt, 0 Abrechnungen, 0 USDC Umsatz, Cache-Trefferquote 0 Prozent über 0 Abfragen (nur /screenshot; /snapshot wird nicht zwischengespeichert).