> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 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.

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).

<div className="firecrawl-cta-box">
  <div style={{ display: "flex", alignItems: "flex-start", gap: "8px", marginBottom: "8px" }}>
    <Icon icon="sack-dollar" color="#ff4d00" size={22} />

    <div className="firecrawl-cta-title" style={{ margin: 0 }}>
      <span style={{ color: "#ff4d00" }}>Prime : récompense de 5 000 crédits</span>
      <span style={{ fontWeight: 400 }}> pour des retours de qualité sur /search (GitHub)</span>
    </div>
  </div>

  <p className="firecrawl-cta-description">
    Pour être éligible, répondez à un entretien riche en informations (cas d'utilisation réfléchis, concrets, etc.) avec notre assistant de feedback Firecrawl. Cela ne prend que quelques minutes, peut être interrompu à tout moment et convient aussi bien aux humains qu'aux agents (il suffit de coller le lien dans votre harness agentique !).
  </p>

  <a href={"https://www.firecrawl.dev/interview?study=20260629-fri-github-usage&src=" + (props.src || "docs-research")} className="firecrawl-cta-btn-primary firecrawl-cta-btn-inline">
    Démarrer l'entretien
  </a>

  <p className="firecrawl-cta-description" style={{ fontSize: "12px", fontStyle: "italic", margin: "12px 0 0 0" }}>
    Indiquez votre e-mail pour être éligible. Les entretiens sont examinés en fin de semaine pour en évaluer la qualité.
  </p>
</div>

<Card title="Essayez-le dans le Playground" icon="play" 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
</div>

<div id="search-endpoint">
  ### 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
</div>

<CodeGroup>
  ```python Python theme={null}
  # 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",
  )
  ```

  ```js Node theme={null}
  // 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",
  });
  ```

  ```bash CLI theme={null}
  # Installer globalement avec npm
  npm install -g firecrawl

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

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

<CodeGroup>
  ```python Python theme={null}
  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)
  ```

  ```js Node theme={null}
  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);
  ```

  ```bash cURL theme={null}
  # 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
    }'
  ```

  ```bash CLI theme={null}
  # Rechercher sur le web
  firecrawl search "firecrawl web scraping" --limit 5 --pretty
  ```
</CodeGroup>

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

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

```json JSON theme={null}
{
  "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 Python theme={null}
  result = firecrawl.search("query")
  for item in result.web or []:
      print(item.url, item.title)
  ```

  ```js JavaScript theme={null}
  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
</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
</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
</div>

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

```bash cURL theme={null}
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
</div>

Recherchez sur des sites académiques et de recherche :

```bash cURL theme={null}
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
</div>

Combinez plusieurs catégories dans une seule recherche :

```bash cURL theme={null}
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
</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
</div>

```bash cURL theme={null}
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
</div>

```bash cURL theme={null}
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
</div>

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

```json theme={null}
{
  "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 cURL theme={null}
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 cURL theme={null}
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
</div>

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

```bash cURL theme={null}
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 cURL theme={null}
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
</div>

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

<CodeGroup>
  ```python Python theme={null}
  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"]
      }
  )
  ```

  ```js Node theme={null}
  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);
  ```

  ```bash cURL theme={null}
  # 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"]
      }
    }'
  ```

  ```bash CLI theme={null}
  # Rechercher et scraper les résultats
  firecrawl search "firecrawl" --scrape --scrape-formats markdown --limit 5 --pretty
  ```
</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
</div>

```json theme={null}
{
  "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)
</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>
  ```python Python theme={null}
  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])
  ```

  ```js JavaScript theme={null}
  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));
  }
  ```
</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
</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
</div>

<CodeGroup>
  ```python Python theme={null}
  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']}")
  ```

  ```js Node theme={null}
  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);
  ```

  ```bash cURL theme={null}
  # 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"
    }'
  ```

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

<div id="time-based-search">
  ### 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>
  ```python Python theme={null}
  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', [])))
  ```

  ```js Node theme={null}
  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);
  ```

  ```bash cURL theme={null}
  # 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"
    }'
  ```

  ```bash CLI theme={null}
  # Recherche avec filtre temporel (semaine passée)
  firecrawl search "firecrawl updates" --tbs qdr:w --limit 5 --pretty
  ```
</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>
  ```python Python theme={null}
  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"
  )
  ```

  ```js JavaScript theme={null}
  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);
  });
  ```

  ```bash cURL theme={null}
  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"
    }'
  ```
</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é
</div>

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

<CodeGroup>
  ```python Python theme={null}
  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
  )
  ```

  ```js JavaScript theme={null}
  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);
  });
  ```

  ```bash cURL theme={null}
  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
    }'
  ```
</CodeGroup>

<div id="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
</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 cURL theme={null}
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é
</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 cURL theme={null}
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
</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 cURL theme={null}
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
</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
</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
</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).
