Codes de statut
Crawlbase renvoie deux signaux de statut sur chaque réponse : le statut HTTP standard et un en-tête pc_status décrivant ce que Crawlbase a fait. Voici ce que signifie chaque combinaison.
Deux statuts, deux questions
La plupart des APIs HTTP ne fournissent qu'un seul code de statut. Crawlbase en fournit deux, car le crawling implique deux couches — l'infrastructure de Crawlbase et le site cible derrière celle-ci.
200 signifie que nous l'avons traitée ; 4xx/5xx signifie que nous n'avons pas pu.200 signifie que nous avons obtenu une page propre ; les autres codes décrivent ce qui a échoué en amont.Vérifiez toujours d'abord le statut HTTP. S'il est à 200, vérifiez ensuite pc_status. Si celui-ci est à 200, vérifiez alors original_status pour les erreurs côté site.
Codes de statut HTTP
Ce que Crawlbase lui-même a renvoyé à votre client.
| Code | Signification | Action |
|---|---|---|
200 | Requête traitée. Vérifiez pc_status pour le résultat. | Passez à pc_status |
401 | Token manquant ou invalide. | Vérifiez le token ; assurez-vous qu'il n'a pas été réinitialisé |
402 | Crédits épuisés ou période d'essai expirée. | Rechargez le compte |
403 | Le token n'a pas accès à ce produit. | Utilisez le bon type de token (Normal ou JS) |
422 | Requête malformée — généralement une URL manquante ou non encodée. | Encodez en URL le paramètre url |
429 | Limite de concurrence atteinte. | Patientez puis réessayez ; voir Rate Limits |
500 | Erreur interne Crawlbase. Rare et passagère. | Réessayez avec un backoff ; consultez la page de statut |
503 | Service temporairement indisponible. | Réessayez avec un backoff |
Codes pc_status
Ce qui s'est passé durant le crawl proprement dit. Renvoyé sous forme d'en-tête de réponse pc_status sur chaque requête en 200 OK.
Succès
| Code | Signification |
|---|---|
200 | Page crawlée avec succès. Le body contient le HTML ou le JSON de la page cible. |
201 | Requête async acceptée. Le résultat sera livré à votre webhook ou stocké sous le rid. |
Le site cible a renvoyé une erreur
Crawlbase a atteint le site, mais le site lui-même a renvoyé un code non-2xx. Le body contient ce que le site a renvoyé.
| Code | Signification |
|---|---|
404 | La page cible n'existe pas. |
410 | La page cible a été supprimée définitivement. |
451 | Page bloquée pour des raisons légales dans la zone géographique cible. |
Bloqué ou filtré
| Code | Signification | Que faire |
|---|---|---|
520 | Le site cible a renvoyé une réponse vide ou invalide. | Réessayez ; passez au token JS si ce n'est pas déjà fait |
521 | Le site cible a refusé la connexion. | Vérifiez que l'URL est correcte ; le site est peut-être hors service |
522 | Crawlbase n'a pas pu joindre le site cible (timeout). | Réessayez ; envisagez d'ajuster page_wait |
523 | Le site cible a renvoyé une erreur de handshake TLS. | Le site a peut-être un problème de certificat ; signalez-le au support |
525 | Le défi anti-bot n'a pas pu être résolu automatiquement. | Passez au token JS ; certains sites peuvent nécessiter un traitement personnalisé |
599 | Échec générique en amont. | Réessayez avec un backoff |
Lire la réponse
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/htmlfrom 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'])
