Docs
Anmelden

Zwei Status, zwei Fragen

Die meisten HTTP-APIs geben Ihnen einen einzelnen Statuscode. Crawlbase gibt Ihnen zwei, weil Crawling zwei Schichten umfasst: die Infrastruktur von Crawlbase und die dahinterliegende Zielseite.

HTTP-Status
int
Der Status Ihres Requests an Crawlbase. 200 bedeutet, wir haben ihn verarbeitet; 4xx/5xx bedeutet, wir konnten es nicht.
pc_status
intheader
Der Status des Requests von Crawlbase an die Zielseite. 200 bedeutet, wir haben eine saubere Seite erhalten; andere Codes beschreiben, was upstream schiefgelaufen ist.
original_status
intheader
Der rohe HTTP-Status, den die Zielseite zurückgegeben hat. Nützlich, wenn die Seite selbst einen Nicht-200-Status zurückgibt, den Sie behandeln müssen (404, 403 usw.).
Das mentale Modell

Prüfen Sie immer zuerst den HTTP-Status. Wenn er 200 ist, prüfen Sie pc_status. Wenn dieser 200 ist, prüfen Sie original_status auf seitenseitige Fehler.

HTTP-Statuscodes

Was Crawlbase selbst an Ihren Client zurückgegeben hat.

CodeBedeutungAktion
200Request verarbeitet. Prüfen Sie pc_status für das Ergebnis.Weiter zu pc_status
401Token fehlt oder ist ungültig.Token überprüfen; sicherstellen, dass es nicht zurückgesetzt wurde
402Keine Credits mehr oder Testphase abgelaufen.Konto aufladen
403Token hat keinen Zugriff auf dieses Produkt.Den richtigen Token-Typ verwenden (Normal vs. JS)
422Fehlerhafter Request, in der Regel fehlende oder nicht kodierte URL.Den url-Parameter URL-kodieren
429Concurrency-Limit erreicht.Zurückfahren und erneut versuchen; siehe Rate Limits
500Interner Crawlbase-Fehler. Selten und vorübergehend.Mit Backoff erneut versuchen; Statusseite prüfen
503Dienst vorübergehend nicht verfügbar.Mit Backoff erneut versuchen

pc_status-Codes

Was während des eigentlichen Crawls passiert ist. Wird als pc_status-Response-Header bei jedem 200-OK-Request zurückgegeben.

Erfolg

CodeBedeutung
200Seite erfolgreich gecrawlt. Der Body enthält das HTML oder JSON der Zielseite.
201Async-Request akzeptiert. Das Ergebnis wird an Ihren Webhook geliefert oder unter der rid gespeichert.

Zielseite hat mit einem Fehler geantwortet

Crawlbase hat die Seite erreicht, aber die Seite selbst hat einen Nicht-2xx-Status zurückgegeben. Der Body enthält das, was die Seite zurückgesendet hat.

CodeBedeutung
404Zielseite existiert nicht.
410Zielseite wurde dauerhaft entfernt.
451Seite aus rechtlichen Gründen in der Zielregion blockiert.

Blockiert oder gefiltert

CodeBedeutungWas Sie versuchen können
520Zielseite hat eine leere oder ungültige Response zurückgegeben.Erneut versuchen; auf JS Token wechseln, falls noch nicht geschehen
521Zielseite hat die Verbindung verweigert.URL auf Korrektheit prüfen; Seite ist möglicherweise nicht erreichbar
522Crawlbase konnte die Zielseite nicht erreichen (Timeout).Erneut versuchen; page_wait-Anpassung erwägen
523Zielseite hat einen TLS-Handshake-Fehler gesendet.Seite hat möglicherweise Zertifikatsprobleme; an den Support melden
525Bot-Challenge konnte nicht automatisch gelöst werden.Auf JS Token wechseln; einige Seiten benötigen möglicherweise eine individuelle Behandlung
599Allgemeiner Upstream-Fehler.Mit Backoff erneut versuchen

Die Response lesen

curl -i 'https://api.crawlbase.com/?token=YOUR_TOKEN&url=https%3A%2F%2Fexample.com'

# HTTP/1.1 200 OK
# pc_status: 200
# original_status: 200
# url: https://example.com/
# content-type: text/html
from crawlbase import CrawlingAPI

api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get('https://example.com')

# Layer 1: did Crawlbase accept the request?
if res['status_code'] != 200:
    raise RuntimeError(f"Crawlbase: {res['status_code']}")

# Layer 2: did Crawlbase succeed in fetching the page?
if res['pc_status'] != 200:
    raise RuntimeError(f"Crawl failed: {res['pc_status']}")

# Layer 3: did the target site return content?
if res['original_status'] != 200:
    print(f"Site returned {res['original_status']}")

print(res['body'])

Nächste Schritte

Muster für Retries, Dead-Letter-Queues und Observability.
Konkrete Hinweise zu 429-Statuscodes und Concurrency.