Recherche
Recherchez sur le web et obtenez le contenu complet des résultats
Recherchez sur le web et obtenez un contenu propre et structuré pour chaque résultat en un seul appel d’API. Transmettez une requête à /search et Firecrawl renvoie les titres, les descriptions et les URL. Ajoutez scrapeOptions pour récupérer également, pour chaque résultat, le markdown de la page complète, le HTML, les liens ou les captures d’écran.
Les résultats de recherche incluent par défaut des Highlights pertinents par rapport à la requête. Définissez highlights sur false si vous souhaitez plutôt la description simple ou l’extrait de chaque site web.
Pour la liste complète des paramètres, consultez la référence de l’API du point de terminaison de recherche.
Essayez-le dans le Playground
Testez la recherche dans le Playground interactif — aucun code nécessaire.
Permet d’effectuer des recherches sur le web et, en option, de récupérer le contenu des résultats.
# pip install firecrawl-py
from firecrawl import Firecrawl
firecrawl = Firecrawl(
# Aucune clé API requise pour démarrer — ajoutez-en une pour des limites de débit plus élevées :
# api_key="fc-YOUR-API-KEY",
)from firecrawl import Firecrawl
firecrawl = Firecrawl(
# Aucune clé API requise pour démarrer — ajoutez-en une pour des limites de débit plus élevées :
# api_key="fc-YOUR-API-KEY",
)
results = firecrawl.search(
query="firecrawl",
limit=3,
)
print(results)Les SDKs renvoient directement l’objet de données. cURL renvoie le payload complet.
{
"success": true,
"data": {
"web": [
{
"url": "https://www.firecrawl.dev/",
"title": "Firecrawl - L'API de données web pour l'IA",
"description": "L'API d'exploration, de scraping et de recherche pour l'IA. Conçue pour passer à l'échelle. Firecrawl met l'ensemble du web à la portée des agents et développeurs d'IA.",
"position": 1
},
{
"url": "https://github.com/firecrawl/firecrawl",
"title": "mendableai/firecrawl : Transformez des sites entiers en contenus prêts pour les LLM… - GitHub",
"description": "Firecrawl est un service d'API qui prend une URL, l'explore et la convertit en Markdown propre ou en données structurées.",
"position": 2
},
...
],
"images": [
{
"title": "Guide de démarrage rapide | Firecrawl",
"imageUrl": "https://mintlify.s3.us-west-1.amazonaws.com/firecrawl/logo/logo.png",
"imageWidth": 5814,
"imageHeight": 1200,
"url": "https://docs.firecrawl.dev/",
"position": 1
},
...
],
"news": [
{
"title": "La startup de Y Combinator Firecrawl est prête à payer 1 M$ pour embaucher trois agents IA comme employés",
"url": "https://techcrunch.com/2025/05/17/y-combinator-startup-firecrawl-is-ready-to-pay-1m-to-hire-three-ai-agents-as-employees/",
"snippet": "Elle a désormais publié trois nouvelles annonces sur le job board de YC pour « agents IA uniquement » et a réservé un budget total de 1 million de dollars pour y parvenir.",
"date": "il y a 3 mois",
"position": 1
},
...
]
}
}Utilisateurs des SDKs : les résultats de recherche sont regroupés par type de source, et non dans un tableau .data générique. Accédez aux résultats web avec result.web, aux actualités avec result.news et aux images avec result.images.
result = firecrawl.search("query")
for item in result.web or []:
print(item.url, item.title)const result = await firecrawl.search("query");
for (const item of result.web ?? []) {
console.log(item.url, item.title);
}En plus des résultats web classiques, Search prend en charge des types de résultats spécialisés via le paramètre sources :
web: résultats web standard (par défaut)news: résultats axés sur l’actualitéimages: résultats de recherche d’images
Vous pouvez demander plusieurs sources dans un seul appel (par exemple, sources: ["web", "news"]). Dans ce cas, le paramètre limit s’applique par type de source — ainsi, limit: 5 avec sources: ["web", "news"] renvoie jusqu’à 5 résultats web et jusqu’à 5 résultats d’actualité (10 au total). Si vous avez besoin de paramètres différents par source (par exemple, des valeurs limit différentes ou des scrapeOptions différentes), effectuez plutôt des appels séparés.
Filtrez les résultats de recherche par catégorie à l’aide du paramètre categories :
github: Rechercher dans les dépôts GitHub, le code, les tickets et la documentationresearch: Rechercher sur des sites académiques et de recherche (arXiv, Nature, IEEE, PubMed, etc.)pdf: Rechercher des fichiers PDF
Recherchez spécifiquement dans les dépôts GitHub :
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-VOTRE_CLÉ_API" \
-d '{
"query": "web scraping python",
"categories": ["github"],
"limit": 10
}'Recherchez sur des sites académiques et de recherche :
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-VOTRE_CLÉ_API" \
-d '{
"query": "transformers en apprentissage automatique",
"categories": ["recherche"],
"limit": 10
}'Combinez plusieurs catégories dans une seule recherche :
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-VOTRE_CLE_API" \
-d '{
"query": "réseaux de neurones",
"categories": ["github", "recherche"],
"limit": 15
}'Utilisez includeDomains pour limiter les résultats de recherche à des domaines spécifiques, ou excludeDomains pour exclure certains domaines de la recherche. Ces champs ajoutent en interne les opérateurs site: et -site: à la requête ; indiquez donc uniquement les domaines, sans protocole ni chemin.
includeDomains et excludeDomains sont mutuellement exclusifs. Utilisez l’un ou l’autre dans une même requête.
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer VOTRE_CLÉ_API" \
-d '{
"query": "web scraping",
"includeDomains": ["firecrawl.dev", "docs.firecrawl.dev"],
"limit": 10
}'curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer VOTRE_CLÉ_API" \
-d '{
"query": "web scraping tools",
"excludeDomains": ["example.com"],
"limit": 10
}'Chaque résultat de recherche comporte un champ category indiquant sa source :
{
"success": true,
"data": {
"web": [
{
"url": "https://github.com/example/neural-network",
"title": "Implémentation de réseau de neurones"
"description": "Une implémentation PyTorch de réseaux de neurones"
"category": "github"
},
{
"url": "https://arxiv.org/abs/2024.12345",
"title": "Avancées dans l’architecture des réseaux de neurones"
"description": "Article de recherche sur les améliorations des réseaux de neurones"
"category": "research"
}
]
}
}Exemples :
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-VOTRE_CLÉ_API" \
-d '{
"query": "openai",
"sources": ["news"],
"limit": 5
}'curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "jupiter",
"sources": ["images"],
"limit": 8
}'Utilisez les opérateurs de recherche d’images pour trouver des images en haute résolution :
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "coucher de soleil imagesize:1920x1080",
"sources": ["images"],
"limit": 5
}'curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "fond d'écran montagne larger:2560x1440",
"sources": ["images"],
"limit": 8
}'Résolutions HD courantes :
imagesize:1920x1080- Full HD (1080p)imagesize:2560x1440- QHD (1440p)imagesize:3840x2160- 4K UHDlarger:1920x1080- HD et supérieurlarger:2560x1440- QHD et supérieur
Recherchez et récupérez le contenu des résultats de recherche en une seule opération.
from firecrawl import Firecrawl
firecrawl = Firecrawl(
# Aucune clé API requise pour démarrer — ajoutez-en une pour des limites de débit plus élevées :
# api_key="fc-YOUR_API_KEY",
)
# Rechercher et scraper le contenu
results = firecrawl.search(
"firecrawl web scraping",
limit=3,
scrape_options={
"formats": ["markdown", "links"]
}
)Toutes les options du point de terminaison /scrape sont prises en charge par ce point de terminaison de recherche via le paramètre scrapeOptions.
{
"success": true,
"data": [
{
"title": "Firecrawl - L’API ultime de web scraping",
"description": "Firecrawl est une API de web scraping puissante qui convertit n’importe quel site web en données propres et structurées, prêtes pour l’IA et l’analyse.",
"url": "https://firecrawl.dev/",
"markdown": "# Firecrawl\n\nL’API ultime de web scraping\n\n## Convertissez n’importe quel site web en données propres et structurées\n\nFirecrawl simplifie l’extraction de données depuis des sites web pour des applications d’IA, des études de marché, l’agrégation de contenu, et plus encore...",
"links": [
"https://firecrawl.dev/pricing",
"https://firecrawl.dev/docs",
"https://firecrawl.dev/guides"
],
"metadata": {
"title": "Firecrawl - L’API ultime de web scraping",
"description": "Firecrawl est une API de web scraping puissante qui convertit n’importe quel site web en données propres et structurées, prêtes pour l’IA et l’analyse.",
"sourceURL": "https://firecrawl.dev/",
"statusCode": 200
}
}
]
}Si vous devez filtrer ou traiter les résultats de recherche avant le scraping, utilisez une approche en deux étapes : lancez d’abord une recherche, puis scrapez les URL souhaitées.
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key="VOTRE_CLÉ_API")
# Étape 1 : Recherche
results = firecrawl.search("firecrawl web scraping", limit=5)
# Étape 2 : Scraper l’URL de chaque résultat pour obtenir le contenu complet
for item in results.web or []:
page = firecrawl.scrape(item.url, formats=["markdown"])
print(page.markdown[:200])Quand utiliser chaque approche :
- En une étape (
scrapeOptionsdans la recherche) : vous voulez récupérer le contenu de tous les résultats. Plus simple et plus rapide. - En deux étapes (recherche puis scraping) : vous voulez filtrer, classer ou scraper certains résultats de façon sélective. Plus flexible.
Les deux approches utilisent Firecrawl pour l’étape de scrape. N’utilisez pas une récupération HTTP générique et ne vous contentez pas de résumer à partir des seuls extraits de recherche -- c’est le contenu complet de la page obtenu avec le scrape Firecrawl qui rend les résultats fiables et complets.
L’API de recherche de Firecrawl prend en charge plusieurs paramètres pour personnaliser votre recherche :
from firecrawl import Firecrawl
firecrawl = Firecrawl(
# Aucune clé API requise pour démarrer — ajoutez-en une pour des limites de débit plus élevées :
# api_key="fc-YOUR_API_KEY",
)
# Recherche avec paramètres de localisation (Allemagne)
search_result = firecrawl.search(
"web scraping tools",
limit=5,
location="Germany"
)
# Traitement des résultats
for result in search_result.data:
print(f"Titre : {result['title']}")
print(f"URL : {result['url']}")Utilisez le paramètre tbs pour filtrer les résultats par période. Notez que tbs s’applique uniquement aux résultats de la source web — il ne filtre pas les résultats news ou images. Si vous avez besoin d’actualités filtrées par période, envisagez d’utiliser une source web avec l’opérateur site: pour cibler des domaines d’actualités spécifiques.
from firecrawl import Firecrawl
firecrawl = Firecrawl(
# Aucune clé API requise pour démarrer — ajoutez-en une pour des limites de débit plus élevées :
# api_key="fc-YOUR-API-KEY",
)
results = firecrawl.search(
query="firecrawl",
limit=5,
tbs="qdr:d",
)
print(len(results.get('web', [])))Valeurs tbs courantes :
qdr:h- Dernière heureqdr:d- Dernières 24 heuresqdr:w- Dernière semaineqdr:m- Dernier moisqdr:y- Dernière annéesbd:1- Trier par date (du plus récent au plus ancien)
Pour un filtrage temporel plus précis, vous pouvez spécifier des plages de dates exactes à l’aide du format personnalisé de plage de dates :
from firecrawl import Firecrawl
# Initialisez le client avec votre clé API
firecrawl = Firecrawl(api_key="VOTRE_CLÉ_API")
# Rechercher des résultats de décembre 2024
search_result = firecrawl.search(
"firecrawl updates",
limit=10,
tbs="cdr:1,cd_min:12/1/2024,cd_max:12/31/2024"
)Vous pouvez combiner sbd:1 avec des filtres temporels pour obtenir des résultats triés par date dans une plage donnée. Par exemple, sbd:1,qdr:w renvoie les résultats de la dernière semaine, triés du plus récent au plus ancien, et sbd:1,cdr:1,cd_min:12/1/2024,cd_max:12/31/2024 renvoie les résultats de décembre 2024 triés par date.
Définissez un délai d’attente personnalisé pour les opérations de recherche :
from firecrawl import Firecrawl
# Initialisez le client avec votre clé d’API
firecrawl = Firecrawl(api_key="VOTRE_CLÉ_API")
# Définissez un délai d’attente de 30 secondes
search_result = firecrawl.search(
"complex search query",
limit=10,
timeout=30000 # 30 secondes en millisecondes
)Pour les équipes ayant des exigences strictes en matière de traitement des données, Firecrawl propose des options Zero Data Retention (ZDR) pour le point de terminaison /search via le paramètre enterprise. La recherche ZDR est disponible avec les offres Enterprise — rendez-vous sur firecrawl.dev/enterprise pour démarrer.
Ceci est distinct de l’option de scrape zeroDataRetention, qui contrôle le ZDR pour les opérations de scraping. Consultez Scrape ZDR pour plus de détails. Le paramètre enterprise s’applique uniquement à la partie recherche de la requête.
Avec le ZDR de bout en bout, Firecrawl et notre fournisseur de recherche en amont appliquent tous deux une politique de rétention zéro des données. Aucune donnée de requête ni de résultat n’est stockée à aucun moment du pipeline.
- Coût : 10 crédits pour 10 résultats
- Paramètre :
enterprise: ["zdr"]
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer VOTRE_CLÉ_API" \
-d '{
"query": "sensitive topic",
"limit": 10,
"enterprise": ["zdr"]
}'Avec le ZDR anonymisé, Firecrawl applique une politique complète de rétention zéro des données de notre côté. Notre fournisseur de recherche peut mettre la requête en cache, mais elle est entièrement anonymisée — aucune information permettant de vous identifier n’y est associée.
- Coût : 2 crédits pour 10 résultats
- Paramètre :
enterprise: ["anon"]
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer VOTRE_CLÉ_API" \
-d '{
"query": "sensitive topic",
"limit": 10,
"enterprise": ["anon"]
}'Si vous utilisez la recherche avec du scraping de contenu (scrapeOptions), le paramètre enterprise couvre la partie recherche, tandis que zeroDataRetention dans scrapeOptions couvre la partie scraping. Pour bénéficier d’un ZDR complet sur les deux, définissez les deux :
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer VOTRE_CLÉ_API" \
-d '{
"query": "sensitive topic",
"limit": 5,
"enterprise": ["zdr"],
"scrapeOptions": {
"formats": ["markdown"],
"zeroDataRetention": true
}
}'Le coût d’une recherche est de 2 crédits pour 10 résultats de recherche, arrondi à l’unité supérieure (1 à 10 résultats = 2 crédits, 11 à 20 = 4 crédits, et ainsi de suite). Si les options de scraping sont activées, les coûts de scraping standard s’appliquent à chaque résultat de recherche :
- Basic scrape : 1 crédit par page web
- PDF parsing : 1 crédit par page PDF
- mode proxy amélioré : 4 crédits supplémentaires par page web
- mode JSON : 4 crédits supplémentaires par page web
Pour aider à contrôler les coûts :
- Définissez
parsers: []si l’analyse de PDF n’est pas nécessaire - Utilisez
proxy: "basic"plutôt que"enhanced"lorsque possible, ou réglez-le sur"auto" - Limitez le nombre de résultats de recherche avec le paramètre
limit
Pour plus de détails sur les options de scraping, consultez la documentation de la fonctionnalité Scrape. Toutes les fonctionnalités, à l’exception de l’agent FIRE-1 et du suivi des modifications, sont prises en charge par ce point de terminaison de recherche.
Ê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.
Lorsqu’un résultat de recherche est utile ou omet un contenu important, envoyez vos commentaires avec POST /v2/search/{jobId}/feedback. Le premier envoi de commentaires pour un job de recherche peut donner lieu au remboursement d’1 crédit, sous réserve des limites de l’équipe, et contribue à améliorer la qualité de la recherche de Firecrawl. Voir Search Feedback.