> ## Documentation Index
> Fetch the complete documentation index at: https://firecrawl-fix-js-response-syntax-highlighting.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Extract

> Extraire des données structurées à partir de pages à l'aide de LLM

<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`
</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
</div>

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

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

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

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

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

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

<div id="possible-states">
  ### É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
</div>

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

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

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

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

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

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

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

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

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

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

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

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

<div id="known-limitations-beta">
  ## 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
</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 theme={null}
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
</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.
