# Surveillance de site web (/fr/features/monitoring-website)

<!-- agent-signals: reading_time_min: 4 · est_tokens: 1714 · updated: 2026-07-30 -->
Related: [Recherche](/fr/features/search.md), [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)

La surveillance de site web porte sur un site entier plutôt que sur une liste fixe d’URL. À chaque vérification, un crawl est exécuté pour l’`url` cible, scrape chaque page découverte, puis compare le résultat au dernier instantané conservé. Cela permet de détecter les pages ajoutées, modifiées ou supprimées, et pas seulement les modifications apportées aux pages que vous avez déjà spécifiées. C’est le bon choix pour les sites de documentation, les blogs, les journaux des modifications, les centres d’aide et les sites de concurrents.

Cette page couvre la cible `crawl`. La planification, les objectifs et l’évaluation, le suivi des modifications, les notifications et la tarification sont communs à tous les types de surveillance. Consultez la [vue d’ensemble de la surveillance](/fr/features/monitoring).

<div id="create-a-website-monitor">
  ## Créer un monitor pour un site web [#créer-un-monitor-pour-un-site-web]
</div>

Créez un monitor avec une cible `crawl` afin de générer un diff pour chaque page découverte lors d’un crawl à chaque vérification :

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

      monitor = firecrawl.create_monitor(
          name="Docs monitor",
          schedule={"cron": "7-59/15 * * * *", "timezone": "UTC"},
          goal="Notify me when docs pages add, remove, or materially change API behavior",
          targets=[
              {
                  "type": "crawl",
                  "url": "https://example.com/docs",
                  "crawlOptions": {
                      "limit": 100,
                      "maxDiscoveryDepth": 3,
                  },
              }
          ],
          webhook={
              "url": "https://example.com/webhooks/firecrawl",
              "events": ["monitor.page", "monitor.check.completed"],
          },
      )

      print(monitor.id)
      ```
    </CodeBlockTab>

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

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

      const monitor = await firecrawl.createMonitor({
        name: "Docs monitor",
        schedule: { cron: "7-59/15 * * * *", timezone: "UTC" },
        webhook: {
          url: "https://example.com/webhooks/firecrawl",
          events: ["monitor.page", "monitor.check.completed"],
        },
        goal: "Notify me when docs pages add, remove, or materially change API behavior",
        targets: [
          {
            type: "crawl",
            url: "https://example.com/docs",
            crawlOptions: {
              limit: 100,
              maxDiscoveryDepth: 3,
            },
          },
        ],
      });

      console.log(monitor.id);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      curl -s -X POST "https://api.firecrawl.dev/v2/monitor" \
        -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "name": "Docs monitor",
          "schedule": {
            "cron": "7-59/15 * * * *",
            "timezone": "UTC"
          },
          "webhook": {
            "url": "https://example.com/webhooks/firecrawl",
            "events": ["monitor.page", "monitor.check.completed"]
          },
          "goal": "Notify me when docs pages add, remove, or materially change API behavior",
          "targets": [
            {
              "type": "crawl",
              "url": "https://example.com/docs",
              "crawlOptions": {
                "limit": 100,
                "maxDiscoveryDepth": 3
              }
            }
          ]
        }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="crawl-target">
  ## Cible de crawl [#cible-de-crawl]
</div>

Une cible `crawl` nécessite `type` et une seule `url`. Utilisez `crawlOptions` pour définir le comportement du crawl et `scrapeOptions` pour définir la façon dont chaque page découverte est scrapée :

```json title="Crawl target"
{
  "type": "crawl",
  "url": "https://example.com/docs",
  "crawlOptions": {
    "limit": 100,
    "includePaths": ["/docs"]
  },
  "scrapeOptions": {
    "formats": ["markdown"]
  }
}
```

Champs courants de `crawlOptions` :

* `limit` : Nombre maximal de pages qu'une vérification peut crawler.
* `maxDiscoveryDepth` : Nombre de niveaux de liens à parcourir depuis l'`url` de départ pour découvrir des pages.
* `maxDepth` : Profondeur maximale du crawl.
* `includePaths` : Surveille uniquement les URL correspondant à ces modèles de chemin (par exemple, `/docs`).
* `excludePaths` : Ignore les URL correspondant à ces modèles de chemin.

Comme pour les monitors de page, les scrapes déclenchés par un monitor définissent `maxAge` sur `0` par défaut. Ainsi, chaque vérification re-scrape les pages découvertes à neuf, sauf si vous définissez une autre valeur de `maxAge` dans `scrapeOptions`.

<div id="what-each-check-reports">
  ## Ce que chaque vérification rapporte [#ce-que-chaque-vérification-rapporte]
</div>

Une vérification de crawl compare chaque page découverte à la vérification précédente et enregistre un état pour chaque page :

* `same` : La page a de nouveau été découverte et n’a pas changé.
* `changed` : La page a de nouveau été découverte et a changé.
* `new` : La page a été découverte pour la première fois.
* `removed` : Une page présente lors de la vérification précédente n’a plus été découverte.
* `error` : La page n’a pas pu être vérifiée.

Pour déclencher une alerte sur des champs structurés spécifiques dans les pages explorées, ajoutez un format `changeTracking` à `scrapeOptions`. Voir [Suivi des modifications](/fr/features/monitoring#change-tracking).

<div id="shared-configuration">
  ## Configuration partagée [#configuration-partagée]
</div>

* [Planification](/fr/features/monitoring#schedules) : cron ou cadence en langage naturel, minimum : 5 minutes.
* [Objectifs et évaluation](/fr/features/monitoring#goals-and-judging) : alerter uniquement sur les changements pertinents.
* [Notifications](/fr/features/monitoring#notifications) : envoi par webhook et e-mail.
* [Résultats des vérifications](/fr/features/monitoring#check-results) : consultez chaque vérification et les diffs de chaque page.
* [Tarification](/fr/features/monitoring#pricing) : 1 crédit par page découverte à chaque vérification, plus l’évaluation facultative.
