Vous pouvez désormais extraire en lot plusieurs URL simultanément. La fonction prend les URL de départ et des paramètres optionnels comme arguments. L’argument params vous permet de définir des options supplémentaires pour le traitement en lot, telles que les formats de sortie.
C’est très similaire au fonctionnement du point de terminaison /crawl. Vous pouvez soit lancer le lot et attendre qu’il se termine, soit le lancer et gérer vous‑même sa finalisation.
batchScrape (JS) / batch_scrape (Python) : lance un lot et attend sa fin, puis renvoie les résultats.
startBatchScrape (JS) / start_batch_scrape (Python) : lance un lot et renvoie l’ID du job pour que vous puissiez effectuer du polling ou utiliser des webhooks.
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")
start = firecrawl.start_batch_scrape([
"https://firecrawl.dev",
"https://docs.firecrawl.dev",
], formats=["markdown"]) # renvoie un identifiant
job = firecrawl.batch_scrape([
"https://firecrawl.dev",
"https://docs.firecrawl.dev",
], formats=["markdown"], poll_interval=2, wait_timeout=120)
print(job.status, job.completed, job.total)
Réponse
Appeler batchScrape/batch_scrape renvoie les résultats complets une fois le lot terminé.
{
"status": "terminée",
"total": 36,
"completed": 36,
"creditsUsed": 36,
"expiresAt": "2024-00-00T00:00:00.000Z",
"next": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789?skip=26",
"data": [
{
"markdown": "[Page d’accueil de la documentation Firecrawl!...",
"html": "<!DOCTYPE html><html lang=\"en\" class=\"js-focus-visible lg:[--scroll-mt:9.5rem]\" data-js-focus-visible=\"\">...",
"metadata": {
"title": "Créer un « chat avec un site web » avec Groq Llama 3 | Firecrawl",
"language": "en",
"sourceURL": "https://docs.firecrawl.dev/learn/rag-llama3",
"description": "Apprenez à utiliser Firecrawl, Groq Llama 3 et LangChain pour créer un bot « discuter avec votre site web ».",
"ogLocaleAlternate": [],
"statusCode": 200
}
},
...
]
}
Appeler startBatchScrape/start_batch_scrape renvoie
un ID de tâche que vous pouvez suivre via getBatchScrapeStatus/get_batch_scrape_status, en utilisant
le point de terminaison API /batch/scrape/{id} ou des webhooks. Les résultats de la tâche sont accessibles via l’API pendant 24 heures après son achèvement. Passé ce délai, vous pouvez toujours consulter l’historique et les résultats de vos batch scrapes dans les journaux d’activité.
{
"success": true,
"id": "123-456-789",
"url": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789"
}
Vous pouvez aussi utiliser le point de terminaison de grattage en lot pour extraire des données structurées depuis les pages. C’est utile si vous voulez obtenir les mêmes données structurées à partir d’une liste d’URL.
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")
# Récupérer plusieurs sites web :
batch_scrape_result = firecrawl.batch_scrape(
['https://docs.firecrawl.dev', 'https://docs.firecrawl.dev/sdks/overview'],
formats=[{
'type': 'json',
'prompt': 'Extrait le titre et la description de la page.',
'schema': {
'type': 'object',
'properties': {
'title': {'type': 'string'},
'description': {'type': 'string'}
},
'required': ['title', 'description']
}
}]
)
print(batch_scrape_result)
# Ou vous pouvez utiliser la méthode start :
batch_scrape_job = firecrawl.start_batch_scrape(
['https://docs.firecrawl.dev', 'https://docs.firecrawl.dev/sdks/overview'],
formats=[{
'type': 'json',
'prompt': 'Extrait le titre et la description de la page.',
'schema': {
'type': 'object',
'properties': {
'title': {'type': 'string'},
'description': {'type': 'string'}
},
'required': ['title', 'description']
}
}]
)
print(batch_scrape_job)
# Vous pouvez ensuite utiliser l’ID du job pour vérifier l’état du batch scrape :
batch_scrape_status = firecrawl.get_batch_scrape_status(batch_scrape_job.id)
print(batch_scrape_status)
batchScrape/batch_scrape retourne les résultats complets :
{
"status": "completed",
"total": 36,
"completed": 36,
"creditsUsed": 36,
"expiresAt": "2024-00-00T00:00:00.000Z",
"next": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789?skip=26",
"data": [
{
"json": {
"title": "Créer un « chat avec un site web » avec Groq Llama 3 | Firecrawl",
"description": "Découvrez comment utiliser Firecrawl, Groq Llama 3 et LangChain pour créer un bot de « chat avec votre site web »."
}
},
...
]
}
startBatchScrape/start_batch_scrape retourne un ID de tâche :
{
"success": true,
"id": "123-456-789",
"url": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789"
}
Récupération en lot avec webhooks
Vous pouvez configurer des webhooks pour recevoir des notifications en temps réel à mesure que chaque URL de votre lot est récupérée. Cela vous permet de traiter les résultats immédiatement, sans attendre la fin de l’ensemble du lot.
curl -X POST https://api.firecrawl.dev/v2/batch/scrape \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer VOTRE_CLÉ_API' \
-d '{
"urls": [
"https://example.com/page1",
"https://example.com/page2",
"https://example.com/page3"
],
"webhook": {
"url": "https://your-domain.com/webhook",
"metadata": {
"any_key": "n_importe_quelle_valeur"
},
"events": ["démarrage", "page", "terminé"]
}
}'
Types d’événements :
batch_scrape.started - Lorsque le scraping par lot démarre
batch_scrape.page - Pour chaque URL extraite avec succès
batch_scrape.completed - Lorsque toutes les URL sont traitées
batch_scrape.failed - Si le scraping par lot rencontre une erreur
Charge utile de base :
{
"success": true,
"type": "batch_scrape.page",
"id": "batch-job-id",
"data": [...], // Données de page pour les événements 'page'
"metadata": {}, // Your custom metadata
"error": null
}
Sécurité : vérification des signatures de webhook
Chaque requête de webhook provenant de Firecrawl inclut un en-tête 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é.
Fonctionnement :
- Récupérez votre secret de webhook dans l’onglet Advanced des paramètres de votre compte
- Extrayez la signature depuis l’en-tête
X-Firecrawl-Signature
- Calculez le HMAC-SHA256 du corps brut de la requête en utilisant votre secret
- Comparez-la à l’en-tête de signature à l’aide d’une fonction sécurisée vis-à-vis du temps d’exécution (timing-safe)
Ne traitez jamais un webhook sans vérifier d’abord sa signature. L’en-tête X-Firecrawl-Signature contient la signature au format : sha256=abc123def456...
Pour des exemples d’implémentation complets en JavaScript et Python, consultez la documentation sur la sécurité des webhooks.
Pour une documentation complète sur les webhooks, incluant des payloads d’événements détaillés, une configuration avancée et des conseils de dépannage, consultez la documentation sur les webhooks.