# Recherche (/fr/features/search)

<!-- agent-signals: reading_time_min: 19 · est_tokens: 8697 · updated: 2026-07-30 -->
Related: [Extraits de recherche](/fr/features/search-highlights.md), [Index de recherche](/fr/features/research.md), [Scrape](/fr/features/scrape.md), [Scraping plus rapide](/fr/features/fast-scraping.md), [Scrape par lots](/fr/features/batch-scrape.md), [Mode JSON - Résultat structuré](/fr/features/llm-extract.md)

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](/fr/features/search-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](https://docs.firecrawl.dev/api-reference/endpoint/search).

<Card title="Essayez-le dans le Playground" icon="<svg xmlns=&#x22;http://www.w3.org/2000/svg&#x22; viewBox=&#x22;0 0 24 24&#x22; fill=&#x22;none&#x22;><path d=&#x22;M18.8906 12.846C18.5371 14.189 16.8667 15.138 13.5257 17.0361C10.296 18.8709 8.6812 19.7884 7.37983 19.4196C6.8418 19.2671 6.35159 18.9776 5.95624 18.5787C5 17.6139 5 15.7426 5 12C5 8.2574 5 6.3861 5.95624 5.42132C6.35159 5.02245 6.8418 4.73288 7.37983 4.58042C8.6812 4.21165 10.296 5.12907 13.5257 6.96393C16.8667 8.86197 18.5371 9.811 18.8906 11.154C19.0365 11.7084 19.0365 12.2916 18.8906 12.846Z&#x22; stroke=&#x22;currentColor&#x22; stroke-linejoin=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/></svg>" href="https://www.firecrawl.dev/playground?endpoint=search">
  Testez la recherche dans le Playground interactif — aucun code nécessaire.
</Card>

<div id="performing-a-search-with-firecrawl">
  ## Effectuer une recherche avec Firecrawl [#effectuer-une-recherche-avec-firecrawl]
</div>

<div id="search-endpoint">
  ### point de terminaison /search [#point-de-terminaison-search]
</div>

Permet d’effectuer des recherches sur le web et, en option, de récupérer le contenu des résultats.

<div id="installation">
  ### Installation [#installation]
</div>

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      # 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",
      )
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      // npm install firecrawl

      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // Aucune clé API requise pour démarrer — ajoutez-en une pour des limites de débit plus élevées :
        // apiKey: "fc-YOUR-API-KEY",
      });
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # Installer globalement avec npm
      npm install -g firecrawl

      # Authentification (configuration unique)
      firecrawl login
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="basic-usage">
  ### Utilisation de base [#utilisation-de-base]
</div>

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      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)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // Aucune clé API requise pour démarrer — ajoutez-en une pour des limites de débit plus élevées :
        // apiKey: "fc-YOUR-API-KEY",
      });

      const results = await firecrawl.search('firecrawl', {
        limit: 3,
        scrapeOptions: { formats: ['markdown'] }
      });
      console.log(results);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # Aucune clé API requise pour démarrer — ajoutez -H "Authorization: Bearer $FIRECRAWL_API_KEY" pour des limites de débit plus élevées :
      curl -s -X POST "https://api.firecrawl.dev/v2/search" \
        -H "Content-Type: application/json" \
        -d '{
          "query": "firecrawl",
          "limit": 3
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # Rechercher sur le web
      firecrawl search "firecrawl web scraping" --limit 5 --pretty
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="response">
  ### Réponse [#réponse]
</div>

Les SDKs renvoient directement l’objet de données. cURL renvoie le payload complet.

```json title="JSON"
{
  "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
      },
      ...
    ]
  }
}
```

<Note>
  **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`.

  ```python title="Python"
  result = firecrawl.search("query")
  for item in result.web or []:
      print(item.url, item.title)
  ```

  ```js title="JavaScript"
  const result = await firecrawl.search("query");
  for (const item of result.web ?? []) {
    console.log(item.url, item.title);
  }
  ```
</Note>

<div id="search-result-types">
  ## Types de résultats de recherche [#types-de-résultats-de-recherche]
</div>

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.

<div id="search-categories">
  ## Catégories de recherche [#catégories-de-recherche]
</div>

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 documentation
* `research` : Rechercher sur des sites académiques et de recherche (arXiv, Nature, IEEE, PubMed, etc.)
* `pdf` : Rechercher des fichiers PDF

<div id="github-category-search">
  ### Recherche par catégorie sur GitHub [#recherche-par-catégorie-sur-github]
</div>

Recherchez spécifiquement dans les dépôts GitHub :

```bash title="cURL"
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
  }'
```

<div id="research-category-search">
  ### Recherche par catégorie [#recherche-par-catégorie]
</div>

Recherchez sur des sites académiques et de recherche :

```bash title="cURL"
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
  }'
```

<div id="mixed-category-search">
  ### Recherche multi-catégories [#recherche-multi-catégories]
</div>

Combinez plusieurs catégories dans une seule recherche :

```bash title="cURL"
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
  }'
```

<div id="domain-filters">
  ## Filtres de domaines [#filtres-de-domaines]
</div>

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.

<Note>
  `includeDomains` et `excludeDomains` sont mutuellement exclusifs. Utilisez l'un ou l'autre dans une même requête.
</Note>

<div id="include-domains">
  ### Domaines à inclure [#domaines-à-inclure]
</div>

```bash title="cURL"
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
  }'
```

<div id="exclude-domains">
  ### Domaines à exclure [#domaines-à-exclure]
</div>

```bash title="cURL"
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
  }'
```

<div id="category-response-format">
  ### Format de réponse par catégorie [#format-de-réponse-par-catégorie]
</div>

Chaque résultat de recherche comporte un champ `category` indiquant sa source :

```json
{
  "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 :

```bash title="cURL"
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
  }'
```

```bash title="cURL"
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
  }'
```

<div id="hd-image-search-with-size-filtering">
  ### Recherche d’images HD avec filtre de taille [#recherche-dimages-hd-avec-filtre-de-taille]
</div>

Utilisez les opérateurs de recherche d’images pour trouver des images en haute résolution :

```bash title="cURL"
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
  }'
```

```bash title="cURL"
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 UHD
* `larger:1920x1080` - HD et supérieur
* `larger:2560x1440` - QHD et supérieur

<div id="search-with-content-scraping">
  ## Recherche avec extraction de contenu [#recherche-avec-extraction-de-contenu]
</div>

Recherchez et récupérez le contenu des résultats de recherche en une seule opération.

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      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"]
          }
      )
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // Aucune clé API requise pour démarrer — ajoutez-en une pour des limites de débit plus élevées :
        // apiKey: "fc-YOUR-API-KEY",
      });

      const results = await firecrawl.search('firecrawl', {
        limit: 3,
        scrapeOptions: { formats: ['markdown'] }
      });
      console.log(results);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # Aucune clé API requise pour démarrer — ajoutez -H "Authorization: Bearer fc-VOTRE_CLÉ_API" pour des limites de débit plus élevées :
      curl -X POST https://api.firecrawl.dev/v2/search \
        -H "Content-Type: application/json" \
        -d '{
          "query": "firecrawl web scraping",
          "limit": 3,
          "scrapeOptions": {
            "formats": ["markdown", "links"]
          }
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # Rechercher et scraper les résultats
      firecrawl search "firecrawl" --scrape --scrape-formats markdown --limit 5 --pretty
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

Toutes les options du point de terminaison /scrape sont prises en charge par ce point de terminaison de recherche via le paramètre `scrapeOptions`.

<div id="response-with-scraped-content">
  ### Réponse avec contenu extrait [#réponse-avec-contenu-extrait]
</div>

```json
{
  "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
      }
    }
  ]
}
```

<div id="search-then-scrape-two-step-pattern">
  ## Recherche puis scraping (schéma en deux étapes) [#recherche-puis-scraping-schéma-en-deux-étapes]
</div>

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.

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="javascript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="JavaScript">
        JavaScript
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      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])
      ```
    </CodeBlockTab>

    <CodeBlockTab value="JavaScript">
      ```js  
      import Firecrawl from '@mendable/firecrawl-js';

      const firecrawl = new Firecrawl({ apiKey: "VOTRE_CLÉ_API" });

      // Étape 1 : Recherche
      const results = await firecrawl.search("firecrawl web scraping", { limit: 5 });

      // Étape 2 : Scraper l’URL de chaque résultat pour obtenir le contenu complet
      for (const item of results.web ?? []) {
        const page = await firecrawl.scrape(item.url, { formats: ["markdown"] });
        console.log(page.markdown?.substring(0, 200));
      }
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<Tip>
  **Quand utiliser chaque approche :**

  * **En une étape** (`scrapeOptions` dans 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.
</Tip>

<div id="advanced-search-options">
  ## Options de recherche avancées [#options-de-recherche-avancées]
</div>

L’API de recherche de Firecrawl prend en charge plusieurs paramètres pour personnaliser votre recherche :

<div id="location-customization">
  ### Personnalisation de la localisation [#personnalisation-de-la-localisation]
</div>

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      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']}")
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // Aucune clé API requise pour démarrer — ajoutez-en une pour des limites de débit plus élevées :
        // apiKey: "fc-YOUR-API-KEY",
      });

      // Recherche avec paramètres de localisation (Allemagne)
      const results = await firecrawl.search('web scraping tools', {
        limit: 5,
        location: "Germany"
      });

      // Traitement des résultats
      console.log(results);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # Aucune clé API requise pour démarrer — ajoutez -H "Authorization: Bearer fc-VOTRE_CLÉ_API" pour des limites de débit plus élevées :
      curl -X POST https://api.firecrawl.dev/v2/search \
        -H "Content-Type: application/json" \
        -d '{
          "query": "web scraping tools",
          "limit": 5,
          "location": "Germany"
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # Recherche avec localisation
      firecrawl search "local restaurants" --location "San Francisco,California,United States" --country US --pretty
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="time-based-search">
  ### Recherche par plage temporelle [#recherche-par-plage-temporelle]
</div>

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.

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      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', [])))
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // Aucune clé API requise pour démarrer — ajoutez-en une pour des limites de débit plus élevées :
        // apiKey: "fc-YOUR-API-KEY",
      });

      const results = await firecrawl.search('firecrawl', {
        limit: 5,
        tbs: 'qdr:d', // dernier jour
      });

      console.log(results.web);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # Aucune clé API nécessaire pour démarrer — ajoutez -H "Authorization: Bearer fc-VOTRE_CLÉ_API" pour des limites de débit plus élevées :
      curl -X POST https://api.firecrawl.dev/v2/search \
        -H "Content-Type: application/json" \
        -d '{
          "query": "latest web scraping techniques",
          "limit": 5,
          "tbs": "qdr:w"
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # Recherche avec filtre temporel (semaine passée)
      firecrawl search "firecrawl updates" --tbs qdr:w --limit 5 --pretty
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

Valeurs `tbs` courantes :

* `qdr:h` - Dernière heure
* `qdr:d` - Dernières 24 heures
* `qdr:w` - Dernière semaine
* `qdr:m` - Dernier mois
* `qdr:y` - Dernière année
* `sbd: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 :

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="curl+javascript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="JavaScript">
        JavaScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      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"
      )
      ```
    </CodeBlockTab>

    <CodeBlockTab value="JavaScript">
      ```js  
      import { Firecrawl } from 'firecrawl';

      // Initialisez le client avec votre clé API
      const firecrawl = new Firecrawl({apiKey: "VOTRE_CLÉ_API"});

      // Rechercher des résultats de décembre 2024
      firecrawl.search("firecrawl updates", {
        limit: 10,
        tbs: "cdr:1,cd_min:12/1/2024,cd_max:12/31/2024"
      })
      .then(searchResult => {
        console.log(searchResult.data);
      });
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      curl -X POST https://api.firecrawl.dev/v2/search \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer VOTRE_CLÉ_API" \
        -d '{
          "query": "firecrawl updates",
          "limit": 10,
          "tbs": "cdr:1,cd_min:12/1/2024,cd_max:12/31/2024"
        }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

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.

<div id="custom-timeout">
  ### Délai d’attente personnalisé [#délai-dattente-personnalisé]
</div>

Définissez un délai d’attente personnalisé pour les opérations de recherche :

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="curl+javascript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="JavaScript">
        JavaScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      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
      )
      ```
    </CodeBlockTab>

    <CodeBlockTab value="JavaScript">
      ```js  
      import { Firecrawl } from 'firecrawl';

      // Initialisez le client avec votre clé d’API
      const firecrawl = new Firecrawl({apiKey: "VOTRE_CLÉ_API"});

      // Définissez un délai d’attente de 30 secondes
      firecrawl.search("complex search query", {
        limit: 10,
        timeout: 30000  // 30 secondes en millisecondes
      })
      .then(searchResult => {
        // Traitez les résultats
        console.log(searchResult.data);
      });
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      curl -X POST https://api.firecrawl.dev/v2/search \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer VOTRE_CLÉ_API" \
        -d '{
          "query": "complex search query",
          "limit": 10,
          "timeout": 30000
        }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="zero-data-retention-zdr">
  ## Zero Data Retention (ZDR) [#zero-data-retention-zdr]
</div>

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](https://www.firecrawl.dev/enterprise) pour démarrer.

<Note>
  Ceci est distinct de l’option de scrape `zeroDataRetention`, qui contrôle le ZDR pour les opérations de scraping. Consultez [Scrape ZDR](/fr/features/scrape#zero-data-retention-zdr) pour plus de détails. Le paramètre `enterprise` s’applique uniquement à la partie recherche de la requête.
</Note>

<div id="end-to-end-zdr">
  ### ZDR de bout en bout [#zdr-de-bout-en-bout]
</div>

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"]`

```bash title="cURL"
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"]
  }'
```

<div id="anonymized-zdr">
  ### ZDR anonymisé [#zdr-anonymisé]
</div>

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"]`

```bash title="cURL"
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"]
  }'
```

<div id="combining-search-zdr-with-scrape-zdr">
  ### Combiner la recherche ZDR avec Scrape ZDR [#combiner-la-recherche-zdr-avec-scrape-zdr]
</div>

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 :

```bash title="cURL"
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
    }
  }'
```

<div id="cost-implications">
  ## Impact sur les coûts [#impact-sur-les-coûts]
</div>

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`

<div id="advanced-scraping-options">
  ## Options de scraping avancées [#options-de-scraping-avancées]
</div>

Pour plus de détails sur les options de scraping, consultez la [documentation de la fonctionnalité Scrape](https://docs.firecrawl.dev/features/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](https://www.firecrawl.dev/agent-onboarding/SKILL.md) pour obtenir des instructions d’intégration automatisée.

<div id="search-feedback">
  ## Commentaires sur la recherche [#commentaires-sur-la-recherche]
</div>

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](/fr/api-reference/endpoint/search-feedback).
