Volle Seiten, Elemente per Selektor, Cookie-Banner automatisch ausgeblendet. Private Netze und Cloud-Metadaten sind für alle Ziele gesperrt.
curl -H "x-api-key: KEY" \ "https://api.apiwerk.info/v1/screenshot?url=https://example.com&full_page=true" \ -o seite.png
Für die Partnerübersicht brauchst du Vorschaubilder von sechzig Websites. Du öffnest jede einzeln, klickst das Cookie-Banner weg, machst einen Bildschirmausschnitt, schneidest zu und benennst um. Drei Monate später stimmt die Hälfte der Bilder nicht mehr, weil sich die Seiten geändert haben — und der Nachmittag geht wieder drauf.
Zahlenwerte werden beim Eingang auf die erlaubte Spanne geklemmt statt abgelehnt: Wer width=99999 schickt, bekommt kein Fehlerobjekt zurück, sondern ein 3840 Pixel breites Bild; was sich nicht als Zahl lesen lässt, fällt auf den Standard zurück. Ein Tippfehler in einem Parameter soll deinen Nachtlauf nicht abbrechen. Bei Texten ist es umgekehrt — eine URL über 4.096 Zeichen oder ein Selektor über 500 Zeichen wird mit input_too_long abgewiesen, eine fehlende URL mit missing_url.
| Parameter | Erlaubt | Standard |
|---|---|---|
url | http oder https, öffentlich auflösbar | Pflichtangabe |
full_page | true / false | false |
width | 320–3840 px | 1280 |
height | 200–2160 px | 800 |
scale | 1–3 (Pixeldichte) | 1 |
format | png, jpeg | png |
quality | 1–100, wirkt nur bei JPEG | 80 |
selector | CSS-Selektor, höchstens 500 Zeichen | — |
delay | 0–10.000 ms nach dem Laden | 0 |
dark_mode | true / false | false |
hide_cookie_banners | true / false | true |
timeout | 3.000–60.000 ms | 30.000 |
Drei Dinge, die in der Tabelle nicht stehen. format=webp nimmt die API zwar an, liefert aber ein JPEG — und deklariert es auch als image/jpeg, statt es still umzuetikettieren. Findet sich ein gesetzter selector nicht binnen fünf Sekunden im sichtbaren Zustand, endet der Auftrag mit 422 selector_not_found, statt ein Ersatzbild zu erfinden. Und jede Antwort trägt den Kopf x-render-ms mit der reinen Renderzeit, damit du eine langsame Zielseite von einer langsamen Leitung unterscheiden kannst.
#cookie-banner und .cookie-banner. Ein selbstgebautes Banner mit eigenem Namen fällt durch — dafür brauchst du einen selector auf den Bereich, den du wirklich willst. Nebenbei wird die Seite wieder scrollbar gesetzt, damit ein Banner den Vollseiten-Screenshot nicht abschneidet.delay=1500 gibt der Seite Zeit; verlassen kannst du dich nur auf das, was ohne Scrollen ausgeliefert wird.credentials_in_url abgelehnt. Aufgenommen wird nur, was jeder Besucher auch sieht.localhost, Namen auf .local und .internal sowie alle privaten IP-Bereiche laufen in einen Fehler (host_not_allowed, private_ip). Der Filter hängt am Browserkontext, greift also auch für Unterressourcen und Weiterleitungsziele. Er schützt davor, dass jemand über die API in fremde interne Netze schaut — und gilt deshalb auch für dich.timeout entsprechend weniger. Seiten, die dauerhaft nachladen, werden danach so aufgenommen, wie sie in diesem Moment stehen.de-DE. Für andere Sprachfassungen gibst du die sprachspezifische URL an.Harte Obergrenze pro Auftrag sind 90 Sekunden; danach wird der Browserkontext geschlossen, egal was die Zielseite noch vorhat. Davor greift die Warteschlange: Läuft sie voll, antwortet die API sofort mit 429 queue_full, statt deinen Aufruf unbegrenzt hängen zu lassen.
Nein — bekannte Consent-Banner werden vor der Aufnahme automatisch ausgeblendet. Du bekommst die Seite, nicht das Overlay. Für Beweiszwecke lässt sich das Ausblenden abschalten.
Beides: den sichtbaren Ausschnitt in frei wählbarer Auflösung, die komplette Seite bis zum Ende oder gezielt ein einzelnes Element per CSS-Selektor — etwa nur die Preistabelle.
Er entsteht live bei deinem Aufruf in einem echten Chromium-Browser, inklusive JavaScript-gerenderten Inhalten. Kein Cache, kein veralteter Stand — was die Seite in diesem Moment zeigt, steht im Bild.
Ja — die API ist zustandslos, jeder Aufruf ein Bild. Aus deinem Cronjob oder Workflow heraus kannst du beliebig viele URLs nacheinander abrufen; parallele Anfragen werden serverseitig sauber in eine Warteschlange gestellt.
Frei wählbare Viewport-Größe, volle Seitenlänge oder Ausschnitt, Ausgabe als PNG oder JPEG — auch mit 2x-Pixeldichte für gestochen scharfe Darstellungen in Präsentationen und Retina-Displays.
Aktuell ist alles in der Beta komplett kostenlos — keine Kreditkarte, keine Laufzeit. Nach dem Verkaufsstart beginnen die Tarife bei 8,50 € pro Monat (2.000 Aufrufe) — bewusst rund die Hälfte des üblichen Marktpreises. Wer in der Beta dabei ist, wird vor jeder Umstellung informiert.
E-Mail-Adresse in das Formular auf dieser Seite eintragen — der API-Schlüssel erscheint sofort, ohne Bestätigungs-Wartezeit. Damit hast du 1.000 Aufrufe pro Monat frei. Der Schlüssel wird als Hash gespeichert und nur einmal angezeigt, also direkt sicher ablegen.
Keine Kreditkarte, keine Wartezeit. E-Mail rein, Schlüssel raus.
Marktfuehrer: 17 $ für 2.000 Renders — wir starten bei der Haelfte.
| Stufe | Renders/Monat | später €/Monat |
|---|---|---|
| Frei | 100 | immer kostenlos |
| Start | 2.000 | 8,50 |
| Wachstum | 10.000 | 39,00 |
| Skala | 50.000 | 129,00 |
Alle vier Produkte · Betrieb in der EU · private Netze für Render-Ziele gesperrt
Verwandt: PDF-API · Bild-API · Website-Archiv · QR-Code-API · Alternative zu ScreenshotOne
E-Mail eintragen, Schlüssel erscheint sofort auf der Seite. Kein Konto, keine Kreditkarte, keine Freischaltung durch uns.
Ein einziger HTTP-Aufruf mit deinem Schlüssel im Kopf — aus jeder Programmiersprache, jedem Framework, jedem Automatisierungswerkzeug.
Du bekommst sauberes JSON oder die fertige Datei zurück. Fehler kommen als klare deutsche Meldung, nicht als Rätsel.
curl -H "x-api-key: KEY" \ "https://api.apiwerk.info/v1/screenshot?url=https://example.com&full_page=true" \ -o seite.png
Wir legen die Preise jetzt schon offen, damit du planen kannst. Beta-Nutzer werden rechtzeitig informiert, bevor sich etwas ändert — niemand wird automatisch in einen bezahlten Tarif überführt.
Alle Preise zuzüglich Umsatzsteuer. Monatlich kündbar, keine Mindestlaufzeit, keine Einrichtungsgebühr.