API-Dokumentation
Screenshots automatisch aus deinen eigenen Programmen, Websites oder Skripten erstellen – kostenlos, 100 pro Tag.
Schnellstart
GET https://shotfox.de/api/screenshot.php?key=DEIN_KEY&url=https://example.com&wait=20
Den Key kannst du als Header X-Api-Key: DEIN_KEY (empfohlen) oder als Parameter key=DEIN_KEY übergeben.
Bilder von API-Aufrufen haben kein Wasserzeichen.
Screenshot anfordern
GET|POST https://shotfox.de/api/screenshot.php
Legt einen Auftrag an und liefert ihn als JSON zurück. Mit wait=20 wartet der Aufruf bis zu 20 Sekunden auf
das fertige Bild – für die meisten Seiten reicht das, du brauchst dann keinen zweiten Aufruf.
Parameter
| Parameter | Standard | Beschreibung |
|---|---|---|
url | – | Zielseite (http/https), Pflicht |
width | 1280 | Fensterbreite in px (320–1920) |
height | 800 | Fensterhöhe in px (200–1440) |
full_page | 0 | 1 = ganze Seite (max. 10.000 px hoch) |
delay | 0 | Zusätzliche Wartezeit nach dem Laden in ms (0–10000) |
format | png | png oder jpeg |
hide_cookies | 1 | Cookie-/Consent-Banner ausblenden (0 = anzeigen) |
block_ads | 1 | Werbung und Werbe-Tracker blockieren |
dismiss_popups | 1 | Newsletter-Popups, Chat-Widgets und Dialoge schließen |
wait | 0 | Bis zu so vielen Sekunden (max. 25) auf das fertige Bild warten |
fresh | 0 | 1 = Cache ignorieren und neu aufnehmen |
output | json | image = bei fertigem Bild direkt per Weiterleitung auf das Bild |
Antwort
200 = fertig, 202 = noch in Arbeit (dann status_url erneut abfragen).
{
"id": "3f9c0a1b2c3d4e5f6a7b",
"status": "done", // pending | processing | done | failed | expired
"url": "https://example.com/",
"width": 1280, "height": 800, "full_page": false, "format": "png",
"clean": { "hide_cookies": true, "block_ads": true, "dismiss_popups": true },
"image_url": "https://shotfox.de/shots/3f9c0a1b2c3d4e5f6a7b-1a2b3c4d.png",
"error": null,
"cached": false,
"created_at": "2026-11-12 08:00:00Z",
"finished_at": "2026-11-12 08:00:04Z",
"status_url": "https://shotfox.de/api/status.php?id=3f9c0a1b2c3d4e5f6a7b"
}
Status abfragen
GET https://shotfox.de/api/status.php?id=JOB_ID&key=DEIN_KEY[&wait=20]
Liefert denselben Aufbau wie oben. Auch hier wartet wait bis zu 25 Sekunden auf das Ergebnis.
Cache & Limits
- Cache: Gibt es zur gleichen URL mit gleichen Einstellungen schon ein Bild, das jünger als 14 Tage ist,
kommt es sofort zurück (
"cached": true) und zählt nicht zum Tageslimit.fresh=1erzwingt ein neues Bild. - Tageslimit: 100 neue Screenshots pro Tag und Key. Mehr? Schreib uns, was du vorhast.
- Aufbewahrung: Bilder werden nach 14 Tagen automatisch gelöscht – speichere sie bei Bedarf selbst.
- Nicht möglich: private/lokale Adressen, andere Ports als 80/443/8080/8443, Seiten mit Bot-Schutz (z. B. Cloudflare-Prüfung).
Fehlercodes
| Code | Bedeutung |
|---|---|
400 | Ungültige Parameter (z. B. URL fehlt, private Adresse) |
401 | API-Key fehlt oder ist ungültig |
403 | Konto noch nicht freigeschaltet oder gesperrt |
404 | Auftrag nicht gefunden |
429 | Tageslimit erreicht |
500 | Interner Fehler – bitte später erneut versuchen |
Fehler kommen immer als JSON: {"error": "Beschreibung"}. Schlägt die Aufnahme selbst fehl, ist
status = failed und error enthält den Grund.
Beispiele
curl
curl -H "X-Api-Key: DEIN_KEY" \ "https://shotfox.de/api/screenshot.php?url=https://example.com&wait=20"
PHP
<?php
$ctx = stream_context_create(['http' => ['header' => "X-Api-Key: DEIN_KEY\r\n"]]);
$r = json_decode(file_get_contents(
'https://shotfox.de/api/screenshot.php?wait=20&url=' . urlencode('https://example.com'), false, $ctx
), true);
echo $r['image_url'];
JavaScript (Node / Browser-Backend)
const r = await fetch('https://shotfox.de/api/screenshot.php?wait=20&url=' + encodeURIComponent('https://example.com'),
{ headers: { 'X-Api-Key': 'DEIN_KEY' } });
const job = await r.json();
console.log(job.image_url);
Python
import requests
r = requests.get('https://shotfox.de/api/screenshot.php',
params={'url': 'https://example.com', 'wait': 20},
headers={'X-Api-Key': 'DEIN_KEY'})
print(r.json()['image_url'])
Als Bild einbinden
<img src="https://shotfox.de/api/screenshot.php?key=DEIN_KEY&wait=20&output=image&url=https://example.com">
Achtung: So steht dein Key für jeden sichtbar im HTML. Für öffentliche Seiten die API besser serverseitig aufrufen
und nur image_url ausgeben.