# Extract (/fr/features/extract)

<!-- agent-signals: reading_time_min: 11 · est_tokens: 5205 · updated: 2026-07-30 -->

<Note>
  **Présentation d’Agent : la prochaine évolution d’Extract**
  Nous lançons [`/agent`](/fr/features/agent) — le successeur de `/extract`. Il est plus rapide, plus fiable et ne nécessite aucune URL. Décrivez simplement ce dont vous avez besoin et laissez l’agent IA trouver et extraire les données pour vous. [Essayez Agent dès maintenant →](/fr/features/agent)
</Note>

Le point de terminaison `/extract` simplifie la collecte de données structurées depuis n’importe quel nombre d’URL ou de domaines entiers. Fournissez une liste d’URL, éventuellement avec des jokers (p. ex. `example.com/*`), ainsi qu’un prompt ou un schéma décrivant les informations souhaitées. Firecrawl gère l’exploration, l’analyse et l’agrégation, que l’ensemble de données soit petit ou volumineux.

<Info>
  Nous avons simplifié la facturation afin qu’Extract utilise désormais des crédits, comme tous les autres points de terminaison. Chaque crédit équivaut à 15 tokens.
</Info>

<div id="using-extract">
  ## Utiliser `/extract` [#utiliser-extract]
</div>

Vous pouvez extraire des données structurées à partir d’une ou plusieurs URL, y compris avec des caractères génériques :

* **Page unique**\
  Exemple : `https://firecrawl.dev/some-page`
* **Pages multiples / Domaine complet**\
  Exemple : `https://firecrawl.dev/*`

Lorsque vous utilisez `/*`, Firecrawl va automatiquement explorer et analyser toutes les URL qu’il peut découvrir dans ce domaine, puis extraire les données demandées. Cette fonctionnalité est expérimentale ; envoyez un e-mail à [help@firecrawl.com](mailto:help@firecrawl.com) si vous rencontrez des problèmes.

<div id="example-usage">
  ### Exemple d’utilisation [#exemple-dutilisation]
</div>

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

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

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

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

      schema = {
          "type": "object",
          "properties": {"description": {"type": "string"}},
          "required": ["description"],
      }

      res = firecrawl.extract(
          urls=["https://docs.firecrawl.dev"],
          prompt="Extrait la description de la page",
          schema=schema,
      )

      print(res.data["description"])
      ```
    </CodeBlockTab>

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

      const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

      const schema = {
        type: 'object',
        properties: {
          title: { type: 'string' }
        },
        required: ['title']
      };

      const res = await firecrawl.extract({
        urls: ['https://docs.firecrawl.dev'],
        prompt: 'Extract the page title',
        schema,
        scrapeOptions: { formats: [{ type: 'json', prompt: 'Extract', schema }] }
      });

      console.log(res.status || res.success, res.data);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      curl -s -X POST "https://api.firecrawl.dev/v2/extract" \
        -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "urls": ["https://docs.firecrawl.dev"],
          "prompt": "Extrait le titre de la page",
          "schema": {
            "type": "object",
            "properties": {"title": {"type": "string"}},
            "required": ["title"]
          },
          "scrapeOptions": {
            "formats": [{"type": "json", "prompt": "Extrait", "schema": {"type": "object"}}]
          }
        }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

**Paramètres clés :**

* **urls** : Tableau d’une ou plusieurs URL. Prend en charge les caractères génériques (`/*`) pour un crawl plus large.
* **prompt** (Optionnel sauf si aucun schéma) : Instruction en langage naturel décrivant les données souhaitées ou la manière dont vous voulez qu’elles soient structurées.
* **schema** (Optionnel sauf si aucun prompt) : Structure plus stricte si vous connaissez déjà le format JSON.
* **enableWebSearch** (Optionnel) : Lorsque `true`, l’extraction peut suivre des liens en dehors du domaine spécifié.

Voir la [référence de l’API](https://docs.firecrawl.dev/api-reference/endpoint/extract) pour plus de détails.

<div id="response-sdks">
  ### Réponse (SDKs) [#réponse-sdks]
</div>

```json title="JSON"
{
  "success": true,
  "data": {
    "company_mission": "Firecrawl est le moyen le plus simple d’extraire des données du web. Les développeurs l’utilisent pour convertir de façon fiable des URL en markdown prêt pour les LLM ou en données structurées avec un simple appel à l’API.",
    "supports_sso": false,
    "is_open_source": true,
    "is_in_yc": true
  }
}
```

<div id="job-status-and-completion">
  ## Statut et achèvement du job [#statut-et-achèvement-du-job]
</div>

Lorsque vous lancez un job d’extraction — directement via l’API ou via les méthodes de démarrage — vous recevez un ID de job. Vous pouvez utiliser cet ID pour :

* Consulter le statut du job : envoyez une requête au point de terminaison /extract/{ID} pour vérifier s’il est toujours en cours ou terminé.
* Attendre les résultats : si vous utilisez la méthode par défaut `extract` (Python/Node), le SDK attend et renvoie les résultats finaux.
* Démarrer puis interroger : si vous utilisez les méthodes de démarrage — `start_extract` (Python) ou `startExtract` (Node) — le SDK renvoie immédiatement un ID de job. Utilisez `get_extract_status` (Python) ou `getExtractStatus` (Node) pour suivre l’avancement.

<Note>
  Les résultats des jobs sont disponibles via l’API pendant 24 heures après leur achèvement. Passé ce délai, vous pouvez toujours consulter l’historique de vos extractions et leurs résultats dans les [journaux d’activité](https://www.firecrawl.dev/app/logs).
</Note>

Ci-dessous, des exemples de code pour vérifier le statut d’un job d’extraction avec Python, Node.js et cURL :

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

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

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

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      firecrawl = Firecrawl(
          api_key="fc-YOUR_API_KEY"
      )

      # Commencez par lancer une tâche d'extraction
      extract_job = firecrawl.start_extract([
          'https://docs.firecrawl.dev/*', 
          'https://firecrawl.dev/'
      ], prompt="Extraire la mission de l’entreprise et les fonctionnalités à partir de ces pages.")

      # Récupérez le statut de la tâche d'extraction
      job_status = firecrawl.get_extract_status(extract_job.id)

      print(job_status)
      # Exemple de sortie :
      # id=None
      # status='completed'
      # expires_at=datetime.datetime(...)
      # success=True
      # data=[{ ... }]
      # error=None
      # warning=None
      # sources=None
      ```
    </CodeBlockTab>

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

      const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

      const started = await firecrawl.startExtract({
        urls: ['https://docs.firecrawl.dev'],
        prompt: 'Extract title',
        schema: { type: 'object', properties: { title: { type: 'string' } }, required: ['title'] },
      });

      if (started.id) {
        const done = await firecrawl.getExtractStatus(started.id);
        console.log(done.status, done.data);
      }
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      curl -s -X GET "https://api.firecrawl.dev/v2/extract/<jobId>" \
        -H "Authorization: Bearer $FIRECRAWL_API_KEY"
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="possible-states">
  ### États possibles [#états-possibles]
</div>

* **completed**: L’extraction a réussi.
* **processing**: Firecrawl traite encore votre requête.
* **failed**: Une erreur s’est produite ; les données n’ont pas été entièrement extraites.
* **cancelled**: La tâche a été annulée par l’utilisateur.

<div id="pending-example">
  #### Exemple en cours [#exemple-en-cours]
</div>

```json title="JSON"
{
  "success": true,
  "data": [],
  "status": "en cours de traitement",
  "expiresAt": "2025-01-08T20:58:12.000Z"
}
```

<div id="completed-example">
  #### Exemple terminé [#exemple-terminé]
</div>

```json title="JSON"
{
  "success": true,
  "data": {
      "company_mission": "Firecrawl est le moyen le plus simple d’extraire des données du Web. Les développeurs l’utilisent pour convertir de façon fiable des URL en markdown prêt pour les LLM ou en données structurées avec un seul appel à l’API.",
      "supports_sso": false,
      "is_open_source": true,
      "is_in_yc": true
    },
  "status": "terminée",
  "expiresAt": "2025-01-08T20:58:12.000Z"
}
```

<div id="extracting-without-a-schema">
  ## Extraction sans schéma [#extraction-sans-schéma]
</div>

Si vous préférez ne pas définir une structure stricte, vous pouvez simplement fournir un `prompt`. Le modèle sous-jacent choisira une structure pour vous, ce qui peut être utile pour des requêtes plus exploratoires ou plus flexibles.

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

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

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

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      # Initialisez Firecrawl avec votre clé d'API
      firecrawl = Firecrawl(api_key='your_api_key')

      data = firecrawl.extract([
        'https://docs.firecrawl.dev/',
        'https://firecrawl.dev/'
      ], prompt="Extract Firecrawl's mission from the page.")
      print(data)
      ```
    </CodeBlockTab>

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

      const firecrawl = new Firecrawl({
      apiKey: "fc-YOUR_API_KEY"
      });

      const scrapeResult = await firecrawl.extract([
      'https://docs.firecrawl.dev/',
      'https://firecrawl.dev/'
      ], {
      prompt: "Extraire la mission de Firecrawl depuis la page."
      });

      console.log(scrapeResult);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      curl -X POST https://api.firecrawl.dev/v2/extract \
          -H 'Content-Type: application/json' \
          -H 'Authorization: Bearer YOUR_API_KEY' \
          -d '{
            "urls": [
              "https://docs.firecrawl.dev/",
              "https://firecrawl.dev/"
            ],
            "prompt": "Extraire la mission de Firecrawl à partir de la page."
          }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

```json title="JSON"
{
  "success": true,
  "data": {
    "company_mission": "Transformez les sites web en données prêtes pour les LLM. Alimentez vos applications d’IA avec des données propres, collectées depuis n’importe quel site."
  }
}
```

<div id="improving-results-with-web-search">
  ## Améliorer les résultats avec la recherche web [#améliorer-les-résultats-avec-la-recherche-web]
</div>

Définir `enableWebSearch = true` dans votre requête étend l’exploration au-delà de l’ensemble d’URL fourni. Cela permet de récupérer des informations complémentaires ou liées depuis des pages référencées.

Voici un exemple qui extrait des informations sur les caméras embarquées (dash cams), en enrichissant les résultats avec des données issues de pages connexes :

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

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

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

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      # Initialisez Firecrawl avec votre clé d'API

      firecrawl = Firecrawl(api_key='your_api_key')

      data = firecrawl.extract([
      'https://nextbase.com/dash-cams/622gw-dash-cam'
      ], prompt="Extrait les détails sur les meilleures dashcams, notamment les prix, les fonctionnalités, les avantages/inconvénients et les avis.", enable_web_search=True)
      print(data)
      ```
    </CodeBlockTab>

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

      const firecrawl = new Firecrawl({
      apiKey: "fc-YOUR_API_KEY"
      });

      const scrapeResult = await firecrawl.extract([
      'https://nextbase.com/dash-cams/622gw-dash-cam'
      ], {
      prompt: "Extract details about the best dash cams including prices, features, pros/cons and reviews.",
      enableWebSearch: true // Activer la recherche web pour un meilleur contexte
      });

      console.log(scrapeResult);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      curl -X POST https://api.firecrawl.dev/v2/extract \
          -H 'Content-Type: application/json' \
          -H 'Authorization: Bearer VOTRE_API_KEY' \
          -d '{
            "urls": ["https://nextbase.com/dash-cams/622gw-dash-cam"],
            "prompt": "Extrayez les détails sur les meilleures caméras embarquées, notamment les prix, les fonctionnalités, les avantages et inconvénients, ainsi que les avis.",
            "enableWebSearch": true
          }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="example-response-with-web-search">
  ### Exemple de réponse avec recherche web [#exemple-de-réponse-avec-recherche-web]
</div>

```json title="JSON"
{
  "success": true,
  "data": {
    "dash_cams": [
      {
        "name": "Nextbase 622GW",
        "price": "$399.99",
        "features": [
          "Enregistrement vidéo 4K",
          "Stabilisation d’image",
          "Alexa intégrée",
          "Intégration What3Words"
        ],
        /* Informations ci-dessous enrichies à partir d’autres sites comme 
        https://www.techradar.com/best/best-dash-cam, trouvées 
        via le paramètre enableWebSearch */
        "pros": [
          "Excellente qualité vidéo",
          "Très bonne vision nocturne",
          "GPS intégré"
        ],
        "cons": ["Prix élevé", "L’application peut être capricieuse"]
      }
    ],
  }

```

La réponse inclut un contexte supplémentaire tiré de pages connexes, offrant des informations plus complètes et plus précises.

<div id="extracting-without-urls">
  ## Extraire sans URL [#extraire-sans-url]
</div>

Le point de terminaison `/extract` prend désormais en charge l’extraction de données structurées à l’aide d’un prompt, sans avoir besoin d’URL spécifiques. C’est utile pour la recherche ou lorsque les URL exactes ne sont pas connues. Actuellement en alpha.

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

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

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

    <CodeBlockTab value="Python">
      ```python  
      from pydantic import BaseModel

      class ExtractSchema(BaseModel):
          company_mission: str


      # Définir le prompt d’extraction
      prompt = 'Extrait la mission de l’entreprise depuis le site web de Firecrawl.'

      # Lancer l’extraction
      scrape_result = firecrawl.extract(prompt=prompt, schema=ExtractSchema)

      print(scrape_result)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node.js">
      ```js  
      import { z } from "zod";

      // Définir le schéma pour extraire le contenu
      const schema = z.object({
        company_mission: z.string(),
      });

      const scrapeResult = await firecrawl.extract([], {
        prompt: "Extrait la mission de l’entreprise depuis le site web de Firecrawl.",
        schema: schema
      });

      console.log(scrapeResult);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      curl -s -X POST "https://api.firecrawl.dev/v2/extract" \
        -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "urls": ["https://docs.firecrawl.dev"],
          "prompt": "Extrait le titre de la page",
          "schema": {
            "type": "object",
            "properties": {"title": {"type": "string"}},
            "required": ["title"]
          },
          "scrapeOptions": {
            "formats": [{"type": "json", "prompt": "Extrait", "schema": {"type": "object"}}]
          }
        }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="known-limitations-beta">
  ## Limitations connues (bêta) [#limitations-connues-bêta]
</div>

1. **Couverture de sites à grande échelle**\
   La couverture complète de sites très volumineux (p. ex. « tous les produits sur Amazon ») en une seule requête n’est pas encore prise en charge.

2. **Requêtes logiques complexes**\
   Des requêtes comme « trouver toutes les publications de 2025 » peuvent ne pas renvoyer de manière fiable toutes les données attendues. Des capacités de requête plus avancées sont en cours de développement.

3. **Incohérences occasionnelles**\
   Les résultats peuvent varier d’une exécution à l’autre, en particulier pour les sites très vastes ou dynamiques. En général, les informations essentielles sont capturées, mais des variations sont possibles.

4. **État bêta**\
   Comme `/extract` est encore en bêta, les fonctionnalités et les performances continueront d’évoluer. Nous accueillons les signalements de bugs et vos retours pour nous aider à nous améliorer.

<div id="using-fire-1">
  ## Utiliser FIRE-1 [#utiliser-fire-1]
</div>

FIRE-1 est un agent IA qui étend les capacités de scraping de Firecrawl. Il peut contrôler des actions du navigateur et naviguer dans des structures de sites web complexes pour permettre une extraction de données plus complète que les méthodes de scraping traditionnelles.

Vous pouvez utiliser l’agent FIRE-1 avec le point de terminaison `/extract` pour des tâches d’extraction complexes nécessitant une navigation sur plusieurs pages ou une interaction avec des éléments.

**Exemple (cURL) :**

```bash
curl -X POST https://api.firecrawl.dev/v2/extract \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer VOTRE_CLÉ_API' \
    -d '{
      "urls": ["https://example-forum.com/topic/123"],
      "prompt": "Extraire tous les commentaires des utilisateurs de ce fil de discussion.",
      "schema": {
        "type": "object",
        "properties": {
          "comments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "author": {"type": "string"},
                "comment_text": {"type": "string"}
              },
              "required": ["author", "comment_text"]
            }
          }
        },
        "required": ["comments"]
      },
      "agent": {
        "model": "FIRE-1"
      }
    }'
```

> FIRE-1 est déjà disponible et accessible en avant-première.

<div id="billing-and-usage-tracking">
  ## Facturation et suivi de l’utilisation [#facturation-et-suivi-de-lutilisation]
</div>

Nous avons simplifié la facturation afin qu’Extract utilise désormais des crédits, comme tous les autres points de terminaison. Chaque crédit vaut 15 tokens.

Vous pouvez suivre l’utilisation d’Extract via le [tableau de bord](https://www.firecrawl.dev/app/extract).

Vous avez des retours ou besoin d’aide ? Envoyez un e-mail à [help@firecrawl.com](mailto:help@firecrawl.com).

> Êtes-vous un agent IA ayant besoin d’une clé API Firecrawl ? Consultez [firecrawl.dev/agent-onboarding/SKILL.md](https://www.firecrawl.dev/agent-onboarding/SKILL.md) pour obtenir les instructions d’intégration automatisée.
