Cette page présente tous les types d’événements webhook que Firecrawl peut envoyer à votre point de terminaison. Chaque type d’événement correspond à une étape distincte de vos opérations de scraping.
Tous les événements webhook suivent cette structure de base :
{
"success": true,
"type": "crawl.page",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [...],
"metadata": {}
}
Champ | Type | Description |
---|
success | boolean | Indique si l’opération a réussi |
type | string | Identifiant du type d’événement |
id | string | Identifiant unique de la tâche |
data | array | Données propres à l’événement (varient selon le type) |
metadata | object | Métadonnées personnalisées issues de votre configuration webhook |
error | string | Message d’erreur (présent lorsque success vaut false ) |
Opérations de crawl multi‑pages qui suivent les liens.
Envoyé au début d’une opération de crawl.
{
"success": true,
"type": "crawl.started",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [],
"metadata": {}
}
Envoyé pour chaque page individuelle extraite pendant un crawl.
{
"success": true,
"type": "crawl.page",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [
{
"markdown": "# Bienvenue sur notre site\n\nVoici le contenu principal de la page...",
"metadata": {
"title": "Titre de la page",
"description": "Description de la page",
"url": "https://example.com/page",
"statusCode": 200,
"contentType": "text/html",
"scrapeId": "550e8400-e29b-41d4-a716-446655440001",
"sourceURL": "https://example.com/page",
"proxyUsed": "basic",
"cacheState": "hit",
"cachedAt": "2025-09-03T21:11:25.636Z",
"creditsUsed": 1
}
}
],
"metadata": {}
}
C’est l’événement le plus fréquent lors des crawls. Vous recevrez un événement crawl.page
pour chaque page correctement extraite.
Envoyé lorsque l’opération de crawl complète s’achève avec succès.
{
"success": true,
"type": "crawl.completed",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [],
"metadata": {}
}
Événements de scraping par lot
Opérations qui extraient plusieurs URL précises.
Envoyé lorsqu’une opération d’extraction par lots commence.
{
"success": true,
"type": "batch_scrape.started",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [],
"metadata": {}
}
Envoyé pour chaque URL individuelle extraite dans le lot.
{
"success": true,
"type": "batch_scrape.page",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [
{
"markdown": "# Page d’accueil de l’entreprise\n\nBienvenue sur le site de notre entreprise...",
"metadata": {
"title": "Nom de l’entreprise - Page d’accueil",
"description": "Description et présentation de l’entreprise",
"url": "https://example.com",
"statusCode": 200,
"contentType": "text/html",
"scrapeId": "550e8400-e29b-41d4-a716-446655440001",
"sourceURL": "https://example.com",
"proxyUsed": "basic",
"cacheState": "miss"
"cachedAt": "2025-09-03T23:30:53.434Z",
"creditsUsed": 1
}
}
],
"metadata": {}
}
C’est l’événement le plus fréquent lors des extractions par lot. Vous recevrez un
événement batch_scrape.page
pour chaque URL extraite avec succès.
Envoyé lorsque l’opération de scraping par lot est entièrement terminée.
{
"success": true,
"type": "batch_scrape.completed",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [],
"metadata": {}
}
Opérations d’extraction de données pilotées par des LLM.
Envoyé lorsqu’une opération d’extraction démarre.
{
"success": true,
"type": "extract.started",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [],
"metadata": {}
}
Envoyé lorsqu’une opération d’extraction s’achève avec succès.
{
"success": true,
"type": "extract.completed",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [
{
"success": true,
"data": { "siteName": "Site exemple", "category": "Technologie" },
"extractId": "550e8400-e29b-41d4-a716-446655440000",
"llmUsage": 0.0020118,
"totalUrlsScraped": 1,
"sources": {
"siteName": ["https://example.com"],
"category": ["https://example.com"]
}
}
],
"metadata": {}
}
Envoyé lorsqu’une opération d’extraction échoue.
{
"success": false,
"type": "extract.failed",
"id": "550e8400-e29b-41d4-a716-446655440000",
"data": [],
"error": "Échec de l’extraction des données : délai d’attente dépassé",
"metadata": {}
}
Vous pouvez contrôler les événements que vous recevez en indiquant un tableau events
dans la configuration de votre webhook :
{
"url": "https://votre-app.com/webhook",
"events": ["terminé", "échec"]
}