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.
| Feld | Typ | Bedeutung |
|---|---|---|
url | string | Die von Ihnen gesendete Adresse |
final_url | string | Die tatsächlich gelesene Adresse nach Weiterleitungen (höchstens 5) |
status_code | integer | Der HTTP-Status, den die Website für die endgültige Adresse zurückgegeben hat, normalerweise 200 |
fetched_at | string | Zeitpunkt des Abrufs, ISO 8601 in UTC |
rendered | boolean | true, wenn ein Headless-Browser die Seite aufgebaut hat |
credits_used | integer | Fü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.
| Feld | Typ | Bedeutung |
|---|---|---|
title | string | Der Titel der Seite oder des Artikels |
description | string | Die Zusammenfassung, die die Seite von sich selbst gibt |
language | string | Sprachcode des Inhalts, etwa en oder de |
author | string | Der auf der Seite genannte Autor |
published_at | string | Vom der Seite angegebenes Veröffentlichungsdatum |
site_name | string | Der eigene Name der Website |
word_count | integer | Wö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.
| Feld | Wann | Inhalt |
|---|---|---|
markdown | format=markdown (Standard) | Überschriften, Absätze, Listen, Tabellen und Links in Markdown; mit include_images=true auch Bilder |
text | format=text | Reiner Text, Absätze durch Leerzeilen getrennt |
html | format=html | Bereinigtes HTML des Hauptinhalts, ohne Skripte, Styles oder Werbung |
links | include_links=true | Liste der {url, text} für die auf der Seite gefundenen Links, absolute URLs |
{
"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, wobeierrordieselbecodeundmessagewie 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.
{
"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.
Sind die Links im Markdown absolut?
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.