Menu

Aucun menu défini dans le customizer.

Actus AutomatiséesActus TechCloudflarecrawlerdeveloppement/api-servicesSciencestutoriels-guides/tutoriels-avancesweb scraping

Cloudflare /crawl – Aspirez un site entier en un seul appel API

Actualités Automatisées

Cloudflare /crawl – Aspirez un site entier en un seul appel API

🕒 Publié le : 11/03/2026 à 13:59
 |  ✍️ Auteur : Korben
 |  📚 Source : Les news de Korben

Crawler un site entier, ça devrait pas être aussi compliqué. Et pourtant, entre les scripts maison qui cassent tous les 2 jours et les headless browsers qui bouffent de la RAM comme pas permis, c’est assez la galère ! Du coup, Cloudflare, dans sa grande bonté (lol) vient de sortir un endpoint /crawl (en open beta) dans la section Browser Rendering qui simplifie tout ça… vous balancez une URL dessus et hop, ça ASPIRE tout le site (oui oui).

En gros, vous envoyez une requête POST avec l’URL de départ, et le service se charge de découvrir les pages (via le sitemap, les liens internes, ou les deux), de les générer dans un navigateur headless, et de vous renvoyer le contenu en HTML, Markdown ou même en JSON structuré grâce à Workers AI. Le tout de manière asynchron ! Vous, vous récupérez juste un job ID et vous revenez plus tard chercher les résultats quand c’est prêt.

Créer votre token API

Avant toute chose, il vous faut un token API Cloudflare avec la permission “Browser Rendering – Edit”. Rendez-vous dans votre dashboard Cloudflare, section API Tokens, et créez-en un nouveau. Notez aussi votre Account ID (visible dans l’URL du dashboard ou dans la section Overview de n’importe quel domaine).

Lancer un crawl

Là, ensuite c’est hyper simple. Un seul appel curl suffit :

curl -X POST "https://api.cloudflare.com/client/v4/accounts/VOTRE_ACCOUNT_ID/browser-rendering/crawl" 
 -H "Authorization: Bearer VOTRE_TOKEN" 
 -H "Content-Type: application/json" 
 -d '{"url": "https://example.com"}'

Et là, vous récupérez un job ID en retour (genre c7f8s2d9-a8e7-4b6e-...). Par défaut, le crawler va explorer 10 pages max avec une profondeur quasi illimitée. Mais bon, 10 pages c’est vite limité, du coup vous pouvez ajuster tout ça comme ceci :

curl -X POST "https://api.cloudflare.com/client/v4/accounts/VOTRE_ACCOUNT_ID/browser-rendering/crawl" 
 -H "Authorization: Bearer VOTRE_TOKEN" 
 -H "Content-Type: application/json" 
 -d '{
 "url": "https://example.com/docs",
 "limit": 50,
 "depth": 3,
 "formats": ["markdown"],
 "render": false,
 "options": {
 "includePatterns": ["https://example.com/docs/**"],
 "excludePatterns": ["**/changelog/**"]
 }
 }'

Le paramètre render: false permet de récupérer le HTML brut sans lancer de navigateur headless, c’est carrément plus rapide pour les sites statiques. Sachez quand même que pendant la beta, ce mode n’est pas facturé ! Youpi !

Récupérer les résultats

Une fois le crawl lancé, vous interrogez le job avec un GET :

curl "https://api.cloudflare.com/client/v4/accounts/VOTRE_ACCOUNT_ID/browser-rendering/crawl/VOTRE_JOB_ID" 
 -H "Authorization: Bearer VOTRE_TOKEN"

Vous obtenez alors le statut (running, completed, errored…) et la liste des pages crawlées avec leur contenu dans le format demandé. Si le résultat dépasse 10 Mo, un curseur de pagination est inclus pour récupérer la suite.

Les options qui tuent

Y’a quelques paramètres bien pensés pour les cas plus avancés :

  • modifiedSince et maxAge pour du crawling incrémental (ne re-crawler que les pages modifiées récemment)
  • source: "sitemaps" pour ne suivre que le sitemap au lieu de parser tous les liens
  • jsonOptions avec un prompt Workers AI pour extraire des données structurées automatiquement (genre récupérer le nom, le prix et le stock de 500 fiches produit d’un e-commerce en une seule passe)
  • rejectResourceTypes pour bloquer images, fonts et CSS et accélérer le crawl
  • authenticate pour les sites protégés par une auth HTTP basique

Attention quand même, y’a quelques subtilités à savoir. Un job peut tourner 7 jours max et les résultats sont conservés 14 jours seulement, du coup pensez à les récupérer vite. Le crawler respecte le robots.txt (y compris le crawl-delay), et si un site vous bloque, les URLs apparaissent comme “disallowed” dans les résultats. Sauf que ça ne vous dit pas pourquoi, faudra aller checker le robots.txt vous-même.

Voilà, cette “merveille” pour les scrappeurs fous est dispo sur les plans Free et Paid de
Workers
, et si vous voulez aller plus loin, Cloudflare propose aussi des endpoints pour les
screenshots, les PDF et le scraping ciblé
.

Voilà, un petit crawler inclus dans le plan Free de Workers, qui respecte le robots.txt et qui sort du Markdown ou du JSON structuré… je vais surveiller ça de près !

Krigs's avatar

À propos de l'auteur

https://github.com/Krigsexe

Voir tous les articles de Krigs

Leave a Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Gravatar profile