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

# surveillance de page

> Surveillez des URL connues et recevez des alertes en cas de modifications significatives des pages

La surveillance de page surveille des URL que vous connaissez déjà. Chaque vérification scrape chaque URL de la cible, la compare au dernier instantané conservé et indique si la page est `same`, `changed`, `new`, `removed` ou `error`. C’est le bon choix pour les pages de tarifs, les journaux des modifications, les pages de documentation, les offres d’emploi, les pages d’état, ou toute URL connue où la moindre modification compte.

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

<div id="create-a-page-monitor">
  ## Créer un moniteur de page
</div>

Créez un moniteur avec une cible `scrape` qui liste une ou plusieurs URL spécifiées explicitement :

<CodeGroup>
  ```python Python theme={null}
  from firecrawl import Firecrawl

  firecrawl = Firecrawl(
    # Les points de terminaison Monitor nécessitent une clé API :
    api_key="fc-YOUR-API-KEY",
  )

  monitor = firecrawl.create_monitor(
      name="Hacker News AI monitor",
      schedule={"text": "every 30 minutes", "timezone": "UTC"},
      goal=(
          "Alert when a new Hacker News story related to AI enters the top 10. "
          "Ignore changes to stories that are not about AI. "
          "Do not alert on changes outside the top 10."
      ),
      targets=[
          {
              "type": "scrape",
              "urls": ["https://news.ycombinator.com"],
          }
      ],
      notification={
          "email": {
              "enabled": True,
              "recipients": ["alerts@example.com"],
              "includeDiffs": True,
          }
      },
  )

  print(monitor.id)
  ```

  ```js Node theme={null}
  import Firecrawl from "@mendable/firecrawl-js";

  const firecrawl = new Firecrawl({
    // Les points de terminaison Monitor nécessitent une clé API :
    apiKey: "fc-YOUR-API-KEY",
  });

  const monitor = await firecrawl.createMonitor({
    name: "Hacker News AI monitor",
    schedule: { text: "every 30 minutes", timezone: "UTC" },
    goal:
      "Alert when a new Hacker News story related to AI enters the top 10. Ignore changes to stories that are not about AI. Do not alert on changes outside the top 10.",
    notification: {
      email: {
        enabled: true,
        recipients: ["alerts@example.com"],
        includeDiffs: true,
      },
    },
    targets: [
      {
        type: "scrape",
        urls: ["https://news.ycombinator.com"],
      },
    ],
  });

  console.log(monitor.id);
  ```

  ```bash cURL theme={null}
  curl -s -X POST "https://api.firecrawl.dev/v2/monitor" \
    -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Hacker News AI monitor",
      "schedule": {
        "text": "every 30 minutes",
        "timezone": "UTC"
      },
      "goal": "Alert when a new Hacker News story related to AI enters the top 10. Ignore changes to stories that are not about AI. Do not alert on changes outside the top 10.",
      "notification": {
        "email": {
          "enabled": true,
          "recipients": ["alerts@example.com"],
          "includeDiffs": true
        }
      },
      "targets": [
        {
          "type": "scrape",
          "urls": ["https://news.ycombinator.com"]
        }
      ]
    }'
  ```
</CodeGroup>

Vous pouvez également créer des moniteurs avec la CLI Firecrawl :

```bash CLI theme={null}
firecrawl monitor create --name "Hacker News AI" \
  --schedule "every 30 minutes" \
  --goal "Alert when a new Hacker News story related to AI enters the top 10. Ignore changes to stories that are not about AI. Do not alert on changes outside the top 10." \
  --page https://news.ycombinator.com
```

<div id="scrape-target">
  ## Cible `scrape`
</div>

Une cible `scrape` nécessite un `type` et un tableau `urls` contenant au moins une URL. Les options de scrape sont transmises aux tâches de scraping sous-jacentes. Pour les scrapes déclenchés par le moniteur, `maxAge` est défini par défaut sur `0` ; ainsi, chaque vérification lance un nouveau scrape, sauf si vous définissez explicitement une autre valeur pour `maxAge`.

```json Scrape target theme={null}
{
  "type": "scrape",
  "urls": ["https://example.com/pricing"],
  "scrapeOptions": {
    "formats": ["markdown"],
    "maxAge": 0
  }
}
```

<div id="detecting-field-level-changes">
  ## Détection des modifications champ par champ
</div>

Par défaut, un moniteur de page compare le markdown de la page. Pour déclencher une alerte uniquement lorsqu'un **champ spécifique** change, comme un prix, un titre, un indicateur de disponibilité ou les éléments d'une liste, ajoutez un format `changeTracking` aux `scrapeOptions` de la cible. Consultez [Suivi des modifications](/fr/features/monitoring#change-tracking) pour le mode JSON et le mode mixte.

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

* [Planification](/fr/features/monitoring#schedules): expression cron ou cadence en langage naturel, minimum 5 minutes.
* [Objectifs et évaluation](/fr/features/monitoring#goals-and-judging): déclenche des alertes uniquement en cas de changements significatifs.
* [Notifications](/fr/features/monitoring#notifications): envoi par webhook et e-mail.
* [Résultats des vérifications](/fr/features/monitoring#check-results): inspectez chaque vérification et ses diffs page par page.
* [Tarification](/fr/features/monitoring#pricing): 1 crédit par URL et par vérification, plus l’évaluation en option.
