- Découvre les pages via le sitemap et le parcours récursif des liens
- Prend en charge le filtrage des chemins, les limites de profondeur et le contrôle des sous-domaines et des liens externes
- Renvoie les résultats via polling, WebSocket ou webhook
Essayez-le dans le Playground
Testez le crawl dans le Playground interactif — sans écrire de code.
Installation
Utilisation de base
POST /v2/crawl avec une URL de départ. Le point de terminaison renvoie un ID de tâche que vous utilisez pour interroger les résultats.
Chaque page crawlée consomme 1 crédit. La valeur par défaut de
limit pour le crawl est de 10 000 pages. Avant de démarrer, le point de terminaison de crawl vérifie que vos crédits restants suffisent à couvrir la valeur de limit — sinon, il renvoie une erreur 402 (Paiement requis). Définissez une valeur de limit plus basse pour correspondre à la taille de crawl prévue (par exemple limit: 100) afin d’éviter ce problème. Des crédits supplémentaires s’appliquent pour certaines options : le mode JSON coûte 4 crédits supplémentaires par page, et l’analyse des PDF coûte 1 crédit par page de PDF.Options de scrape
scrapeOptions (JS) / scrape_options (Python). Elles s’appliquent à chaque page que le crawler extrait, y compris les formats, le proxy, la mise en cache, les actions, la localisation et les tags.
Vérification du statut du crawl
Les résultats des jobs de crawl sont disponibles via l’API pendant 24 heures après leur achèvement. Après cette période, vous pouvez toujours consulter l’historique de vos crawls et leurs résultats dans les journaux d’activité.
Les pages dans le tableau
data des résultats de crawl sont des pages que Firecrawl a extraites avec succès, même si le site cible a renvoyé une erreur HTTP comme 404. Le champ metadata.statusCode indique le code de statut HTTP renvoyé par le site cible. Pour récupérer les pages que Firecrawl lui‑même n’a pas réussi à extraire (par exemple en cas d’erreurs réseau, d’expirations de délai ou de blocages liés à robots.txt), utilisez l’endpoint dédié Get Crawl Errors (GET /crawl/{id}/errors).Gestion des réponses
next est fourni. Vous devez appeler cette URL pour récupérer les 10 Mo de données suivants. Si le paramètre next est absent, cela indique la fin des données du crawl.
Les paramètres
skip et next ne sont pertinents que lors d’appels directs à l’API.
Si vous utilisez le SDK, la pagination est gérée automatiquement et tous
les résultats sont renvoyés en une seule fois.Méthodes du SDK
Crawler puis attendre
crawl attend la fin du crawl et renvoie la réponse complète. Elle gère automatiquement la pagination. Cela est recommandé pour la plupart des cas d’usage.
Démarrer et vérifier plus tard
startCrawl / start_crawl renvoie immédiatement un ID de crawl. Vous pouvez ensuite vérifier manuellement l’état. Utile pour les crawls de longue durée ou une logique de polling personnalisée.
Résultats en temps réel avec WebSocket
Webhooks
cURL
Types d’événements
Charge utile
Vérification des signatures de webhook
X-Firecrawl-Signature contenant une signature HMAC-SHA256. Vérifiez toujours cette signature pour vous assurer que le webhook est authentique et n’a pas été altéré.
- Récupérez votre secret de webhook dans l’onglet Advanced des paramètres de votre compte
- Extrayez la signature de l’en-tête
X-Firecrawl-Signature - Calculez le HMAC-SHA256 du corps brut de la requête à l’aide de votre secret
- Comparez-le avec l’en-tête de signature en utilisant une fonction sécurisée contre les attaques par temporisation
Exécution et comptabilisation des résultats
Lire les compteurs d’état
GET /v2/crawl/{id}) contient les compteurs qui décrivent l’exécution :
Le tableau
data ne contient que les pages que Firecrawl a extraites avec succès. Les pages tentées qui n’ont jamais produit de résultat n’y figurent pas — récupérez-les via Get Crawl Errors, ci-dessous.
Parcourir les résultats page par page
next contient l’URL de la page de résultats suivante.
next n’est pas seulement un signal indiquant qu’« il reste des données » : ce champ est également renvoyé dès que status n’est pas completed, si bien qu’un crawl dans l’état terminal failed ou cancelled peut fournir une URL next alors qu’il n’existe plus aucun résultat. N’utilisez pas l’absence de next comme condition de sortie de votre boucle : sur un crawl en échec ou annulé, ce champ ne disparaît jamais.
La condition terminale, c’est le champ d’état. Pour lire une exécution jusqu’au bout :
- Interrogez
GET /v2/crawl/{id}jusqu’à ce questatusvaillecompleted,failedoucancelled. - Tant que
nextest présent et que la dernière page a renvoyé un tableaudatanon vide, suiveznextpour collecter les résultats restants. - Arrêtez-vous lorsque
nextest absent, ou lorsqu’une page ne renvoie aucun nouveau document.
Pages en échec et bloquées
GET /v2/crawl/{id}/errors) recense les pages qui ne sont pas arrivées jusqu’à data. Ce point de terminaison renvoie deux tableaux :
errors— les tâches de scraping en erreur, chacune avecid,url,error(le message d’erreur) et untimestampde l’échec. Il s’agit des pages que Firecrawl lui-même n’a pas réussi à extraire : erreurs réseau, dépassements de délai et cas similaires. Les liens vers la page d’accueil d’un site externe volontairement ignorés sont signalés ici avec le code d’erreurEXTERNAL_LINK.robotsBlocked— les URL tentées mais bloquées par le fichier robots.txt du site.
Rien ne garantit que cette liste énumère l’intégralité des échecs : certaines classes d’échecs internes sont actuellement exclues de
errors avant la construction de la réponse. Voyez-la comme le relevé des échecs signalés par Firecrawl, et non comme la preuve que rien d’autre n’a échoué. Le code d’erreur mentionné ci-dessus (EXTERNAL_LINK) est aujourd’hui renvoyé dans les objets d’erreur, mais ne fait pas encore partie du schema publié de GET /crawl/{id}/errors ; une mise à jour de la référence API est en attente.data avec le code d’état du site dans metadata.statusCode.
Ce que le crawler est autorisé à atteindre
- Enfants uniquement par défaut. Le crawl ignore les sous-liens qui ne sont pas des enfants de l’URL que vous fournissez. Utilisez
crawlEntireDomainpour les chemins frères et parents,allowSubdomainspour les sous-domaines etallowExternalLinkspour suivre les liens hors du domaine. includePaths/excludePathss’appliquent au chemin de l’URL, sous forme d’expressions régulières — et non à l’URL complète ni aux paramètres de requête. DéfinissezregexOnFullURL: truepour effectuer la correspondance sur l’URL complète, chaînes de requête incluses. L’URL de départ est elle aussi confrontée àincludePaths: si elle ne correspond pas, le crawl peut renvoyer 0 page.- Mode sitemap. Avec la valeur par défaut
sitemap: "include", les URL proviennent du sitemap ainsi que de la découverte récursive de liens."skip"n’utilise que les liens HTML, ce qui fait manquer les pages présentes uniquement dans le sitemap, comme les PDF ou les pages très imbriquées."only"crawle le sitemap plus l’URL de départ, sans découvrir de liens depuis le HTML. maxDiscoveryDepthlimite le nombre de sauts de découverte de liens suivis depuis la racine. Les pages situées à la profondeur maximale sont tout de même extraites, mais les liens qui s’y trouvent ne sont pas suivis.limitlimite le nombre de pages, avec10000par défaut.ignoreQueryParametersévite d’extraire à nouveau le même chemin avec des paramètres de requête différents.- Le fichier robots.txt est respecté, sauf si
ignoreRobotsTxtest activé (Enterprise uniquement).
maxConcurrency correspond à la limite de concurrence de votre équipe, définie par votre offre — voir Limites de débit.
Quand les résultats varient d’une exécution à l’autre
maxDiscoveryDepth.
Pour rendre une exécution plus reproductible :
- Définissez
maxConcurrencysur1. Comme l’indique la référence de configuration,maxConcurrencycorrespond au « nombre maximal d’extractions concurrentes » — il limite le nombre de requests en cours simultanément. Cela réduit l’entrelacement dépendant du timing, mais n’élimine pas les variations d’une exécution à l’autre : la découverte du sitemap est mise en file en dehors de cette limite, les sitemaps imbriqués sont récupérés comme des jobs indépendants, et le tableaudatarenvoyé est ordonné selon l’heure de fin plutôt que selon l’ordre de découverte. Définirdelayforce également la concurrence à 1. - Utilisez
sitemap: "only"si le site dispose d’un sitemap complet, afin que l’ensemble des URL provienne du sitemap plutôt que de la découverte de liens.
Savoir quand un crawl est terminé
crawl.page se déclenche pour chaque page extraite avec succès, et crawl.completed (ou crawl.failed) se déclenche à la fin de l’exécution. Les résultats d’un job restent récupérables via l’API pendant 24 heures après son achèvement ; passé ce délai, consultez-les dans les journaux d’activité.
Référence de configuration
Détails importants
- Découverte du sitemap : Par défaut, le crawler inclut le sitemap du site pour découvrir les URL (
sitemap: "include"). Si vous définissezsitemap: "skip", seules les pages accessibles via des liens HTML depuis l’URL racine seront trouvées. Les ressources comme les PDF ou les pages profondément imbriquées listées dans le sitemap mais non directement liées en HTML ne seront pas découvertes. Pour une couverture maximale, conservez le paramètre par défaut. - Utilisation des crédits : Chaque page crawlée coûte 1 crédit. Le mode JSON ajoute 4 crédits par page, et l’analyse des PDF coûte 1 crédit par page de PDF.
- Expiration des résultats : Les résultats des jobs restent disponibles via l’API pendant 24 heures après leur exécution. Passé ce délai, vous pouvez consulter les résultats dans les journaux d’activité.
- Erreurs de crawl : Le tableau
datacontient les pages que Firecrawl a réussi à extraire. Utilisez le point de terminaison Get Crawl Errors pour récupérer les pages ayant échoué en raison d’erreurs réseau, de délais d’attente ou de blocages par robots.txt.
- Liens externes : Avec
allowExternalLinks: true, le crawler suit les liens pointant hors de votre domaine et extrait chaque page liée une seule fois — il ne crawl ensuite pas les liens trouvés sur ces pages externes. Les liens vers la page d’accueil d’un site externe (une URL racine sans chemin, par exemplehttps://example.com/) sont intentionnellement ignorés afin d’éviter d’extraire un site entier sans rapport ; ils apparaissent dans Get Crawl Errors avec le codeEXTERNAL_LINK. Les redirections sont suivies jusqu’à leur destination — y compris un lien qui se résout vers son URL canonique (par exemplehttp → httpsou la variantewww) — ainsi, seules les redirections qui aboutissent sur une page d’accueil externe sont ignorées.
- Résultats non déterministes : Les résultats du crawl peuvent varier d’une exécution à l’autre avec la même configuration, car les pages sont extraites de manière concurrente et l’ordre de découverte des liens dépend du timing réseau. Consultez Exécution et comptabilisation des résultats pour savoir ce qui varie et comment rendre une exécution plus reproductible.
Êtes-vous un agent IA qui a besoin d’une clé API Firecrawl ? Consultez firecrawl.dev/agent-onboarding/SKILL.md pour obtenir des instructions d’intégration automatisée.

