Ohne KYC – keine ID, kein Selfie, keine Dokumente. Mit Krypto bezahlen: BTC, USDT, USDC, ETH, SOL, LTC
Sprache: Deutsch
API-Schlüssel erhalten

Docs · response

Read-API-Antwortformat, Feld für Feld

Jeder Aufruf von /read liefert ein JSON-Objekt: den Inhalt der Seite im von Ihnen gewünschten Format, ihre Metadaten und drei Felder, die Ihnen sagen, was passiert ist und was es gekostet hat. Job-Ergebnisse verwenden dasselbe Objekt.

Zuletzt aktualisiert: · 5 Min. Lesezeit

Kurze Antwort

Was enthält die Read-Antwort von WebReaderAPI?

Eine WebReaderAPI-/read-Antwort enthält den Seiteninhalt in markdown (oder text oder html), ihre Metadaten (title, description, author, published_at, language, site_name, word_count) und die Fakten des Abrufs: final_url, status_code, rendered und credits_used. Eine einfache Seite kostet 1 Credit, ab 0,07 $/1K Seiten Stand Oktober 2026. Ohne KYC; mit Krypto bezahlen.

Welche Felder beschreiben den Abruf?

Diese Felder sind in einer erfolgreichen Antwort immer vorhanden.

FeldTypBedeutung
urlstringDie von Ihnen gesendete Adresse
final_urlstringDie tatsächlich gelesene Adresse nach Weiterleitungen (höchstens 5)
status_codeintegerDer HTTP-Status, den die Website für die endgültige Adresse zurückgegeben hat, normalerweise 200
fetched_atstringZeitpunkt des Abrufs, ISO 8601 in UTC
renderedbooleantrue, wenn ein Headless-Browser die Seite aufgebaut hat
credits_usedintegerFür diese Seite abgerechnete Credits: 1, 2 mit einem Browser, plus 10 mit country; PDFs 1 pro begonnene 10 Seiten

Welche Felder beschreiben die Seite?

Die Metadaten stammen von der Seite selbst: aus ihrem Titel-Tag, ihren Meta-Tags, ihren strukturierten Daten und der sichtbaren Autorenzeile. Ein Feld, das die Seite nicht liefert, fehlt, prüfen Sie es also vor der Verwendung.

FeldTypBedeutung
titlestringDer Titel der Seite oder des Artikels
descriptionstringDie Zusammenfassung, die die Seite von sich selbst gibt
languagestringSprachcode des Inhalts, etwa en oder de
authorstringDer auf der Seite genannte Autor
published_atstringVom der Seite angegebenes Veröffentlichungsdatum
site_namestringDer eigene Name der Website
word_countintegerWörter im zurückgegebenen Inhalt, nach der Extraktion und vor max_chars

Wo ist der Inhalt selbst?

Es wird ein Inhaltsfeld zurückgegeben, benannt nach dem format, das Sie gewählt haben.

FeldWannInhalt
markdownformat=markdown (Standard)Überschriften, Absätze, Listen, Tabellen und Links in Markdown; mit include_images=true auch Bilder
textformat=textReiner Text, Absätze durch Leerzeilen getrennt
htmlformat=htmlBereinigtes HTML des Hauptinhalts, ohne Skripte, Styles oder Werbung
linksinclude_links=trueListe der {url, text} für die auf der Seite gefundenen Links, absolute URLs
Eine vollständige Antwort (die Werte sind beispielhaft)
{
  "url": "https://example.com/guides/compost",
  "final_url": "https://example.com/guides/compost-at-home",
  "status_code": 200,
  "fetched_at": "2026-10-22T10:02:44Z",
  "rendered": false,
  "credits_used": 1,
  "title": "Compost at home: a beginner's guide",
  "description": "What to put in a compost bin, and what to leave out.",
  "language": "en",
  "author": "Sam Rivera",
  "published_at": "2026-09-14",
  "site_name": "Example Garden",
  "markdown": "# Compost at home: a beginner's guide\n\nA compost bin turns kitchen scraps into soil...\n\n## What goes in\n\n- Fruit and vegetable peels\n- Coffee grounds\n\nSee also [Choosing a bin](https://example.com/guides/bins).",
  "word_count": 1184,
  "links": [
    { "url": "https://example.com/guides/bins", "text": "Choosing a bin" }
  ]
}

Wie erkenne ich, ob eine Seite gerendert wurde oder nicht?

Sehen Sie sich rendered an. Mit render=auto liest die API zuerst das rohe HTML; einen Browser startet sie erst, wenn dieses HTML zu wenig Text enthält, und setzt dann rendered auf true und credits_used auf 2. Wenn eine Seite, die Sie oft lesen, immer gerendert zurückkommt, senden Sie render=true von Anfang an: Die Kosten sind gleich, und Sie sparen einen unnötigen ersten Schritt.

Wenn eine Seite ungerendert, aber dünn zurückkommt, vergleichen Sie word_count mit dem, was Sie im Browser sehen. Ein niedriger Wert bedeutet meist, dass der Inhalt JavaScript benötigt; versuchen Sie es einmal erneut mit render=true.

Warum kann final_url von url abweichen?

Weil Seiten weiterleiten. Ein Kurzlink, eine alte Adresse, ein fehlender abschließender Schrägstrich oder ein Sprachwechsel schicken Sie woandershin. Die API folgt bis zu 5 Weiterleitungen und meldet die Adresse, die sie schließlich gelesen hat, in final_url.

Speichern Sie final_url als kanonische Quelle eines Dokuments in einem RAG-Index. Zwei verschiedene url-Werte, die bei derselben final_url enden, sind dieselbe Seite, sodass Sie das Duplikat vor dem Einbetten verwerfen können.

Wie sieht das Ergebnis eines Jobs aus?

GET https://webreaderapi.com/api/v1/jobs/{job_id} gibt job_id, status (queued, running oder done), results, next_cursor und den laufenden credits_used des Jobs zurück. Jedes Element von results hat eine von zwei Formen:

  • eine vollständige /read-Antwort, genau wie oben beschrieben, für eine Seite, die gelesen wurde;
  • {url, error} für eine Seite, die nicht gelesen wurde, wobei error dieselbe code und message wie ein API-Fehler hat.

next_cursor ist vorhanden, solange weitere Ergebnisse bereitstehen; senden Sie es als cursor zurück, um sie abzurufen. Die Seite zu Batch und Crawl enthält eine vollständige Polling-Schleife.

Eine Job-Ergebnisseite (die Werte sind beispielhaft)
{
  "job_id": "job_5c1e8a90d2",
  "status": "done",
  "results": [
    { "url": "https://example.com/blog/post-1", "final_url": "https://example.com/blog/post-1", "status_code": 200, "rendered": false, "credits_used": 1, "title": "Post one", "markdown": "# Post one\n\n...", "word_count": 802 },
    { "url": "https://example.org/members/area", "error": { "code": "target_refused", "message": "The site refused the request.", "target_status": 403 } }
  ],
  "credits_used": 1
}

Wie sieht eine Fehlerantwort aus?

Ein Fehler kommt mit einem HTTP-Status von 400 oder mehr und einem JSON-Body {"error": {"code", "message"}} zurück. Wenn die Seite selbst die Anfrage abgelehnt hat, gibt target_status den Status an, den die Seite gesendet hat. Kein Fehler wird berechnet. Die Fehlerseite listet jeden Code mit seiner Ursache und ob ein erneuter Versuch helfen kann.

Antwortformat: häufige Fragen

Wird das Markdown abgeschnitten, wenn ich max_chars setze?

Ja. Das Feld content endet bei dieser Zeichenzahl. word_count beschreibt weiterhin den gesamten extrahierten Inhalt, sodass Sie sehen, wie viel ausgelassen wurde.

Warum fehlen author oder published_at?

Weil die Seite sie nicht in einer lesbaren Form angibt. Viele Seiten nennen keinen Autor und kein Datum. Fehlende Felder werden weggelassen statt leer zurückgegeben.

Links in der Liste links sind absolut. Schreiben Sie Ihren Code so, dass er beide Formen im Markdown-Body akzeptiert, und lösen Sie relative gegen final_url auf.

Kann ich das rohe HTML der ganzen Seite bekommen?

Am nächsten kommt format=html mit main_content=false, was die ganze Seite bereinigt von Skripten und Styles zurückgibt. Das byte-genaue Original-HTML ist nicht Teil von v1.

Ab 0,07 $/1K Seiten · ohne KYC

API-Schlüssel erhalten