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

# API de crawl de site en Markdown (WEB_CRAWL)

> Parcourez un site depuis une adresse de départ et obtenez chaque page en Markdown, facturée par page renvoyée.

`WEB_CRAWL` suit les liens d'un site en largeur depuis une adresse de départ et lit chaque page comme le fait [`WEB_SCRAPE`](/fr/engines/web-scrape). Vous obtenez le Markdown, les métadonnées et les images de chaque page dans un seul résultat.

| | |
| - | - |
| `taskType` | `WEB_CRAWL` |
| Entrée | `url` (obligatoire) ; `maxPages`, `maxDepth`, `maxChars`, `includePaths`, `excludePaths`, `includeSubdomains`, `country` |
| Crédits | 1 par page renvoyée. La tâche réserve `maxPages` crédits à l'envoi. |
| Pays | `US` par défaut. |
| Position | Non prise en charge (`422 LOCATION_UNSUPPORTED`). |

## Requête

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/async/task \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "taskType": "WEB_CRAWL", "payload": { "url": "https://www.example.com/docs", "maxPages": 25, "maxDepth": 2, "includePaths": ["/docs/**"] } }'
```

## Paramètres

| Champ | Obligatoire | Description |
| - | - | - |
| `url` | Oui | L'adresse de départ. Mêmes règles que `WEB_SCRAPE` : `http` ou `https` public, port par défaut, jusqu'à 2 048 caractères. La page de départ est toujours lue, quoi que disent les motifs et `robots.txt`. |
| `maxPages` | Non | Les pages à lire, page de départ comprise. Un entier de 1 à 100. 10 par défaut. |
| `maxDepth` | Non | Le nombre de liens suivis depuis la page de départ, un entier de 0 à 5. 2 par défaut. `0` lit la page de départ seule. |
| `maxChars` | Non | Plafonne le `markdown` de chaque page, un entier de 1 000 à 50 000. 20 000 par défaut. |
| `includePaths`, `excludePaths` | Non | Motifs de chemin, comme pour [`WEB_MAP`](/fr/engines/web-map) : jusqu'à 20 chacun, commençant par `/`, d'au plus 200 caractères. `*` correspond à l'intérieur d'un segment, `**` à travers les segments. `excludePaths` l'emporte. |
| `includeSubdomains` | Non | `true` suit les liens vers les sous-domaines du site. `false` par défaut. |
| `country` | Non | La région depuis laquelle les pages sont demandées. `US` par défaut. |

Le parcours suit un lien quand il reste sur le site (avec ou sans `www.`), correspond aux motifs de chemin, mène à une page web plutôt qu'à un fichier (les PDF, images, archives et autres fichiers sont écartés) et que le `robots.txt` du site l'autorise pour tous les robots.

## Réponse

Par exemple :

```json theme={"theme":"css-variables"}
{
  "url": "https://www.example.com/docs",
  "pages": [
    {
      "url": "https://www.example.com/docs",
      "finalUrl": "https://www.example.com/docs",
      "depth": 0,
      "statusCode": 200,
      "title": "...",
      "markdown": "# ...",
      "images": [],
      "truncated": false
    }
  ],
  "failed": [{ "url": "https://www.example.com/docs/old", "depth": 1, "error": "the site answered 404 for this page" }],
  "stopReason": "max-pages"
}
```

| Champ | Description |
| - | - |
| `pages` | Les pages lues, dans l'ordre où le parcours les a trouvées. Chacune porte les champs de `WEB_SCRAPE` plus `depth`, le nombre de liens suivis depuis la page de départ. |
| `failed` | Les pages illisibles, chacune avec `url`, `depth` et la raison du site dans `error`. |
| `stopReason` | Pourquoi le parcours s'est arrêté. Voir ci-dessous. |

| `stopReason` | Signification |
| - | - |
| `done` | Il ne restait aucun lien à suivre. |
| `max-pages` | `maxPages` pages ont été lues. |
| `failures` | 10 pages d'affilée étaient illisibles, ou le nombre total de pages en échec a atteint `maxPages`. |
| `time` | Le temps du parcours est écoulé. Aucune nouvelle page ne démarre après environ 4 minutes. |

## Crédits

À l'envoi, la tâche réserve 1 crédit par page de `maxPages` (25 crédits dans l'exemple ci-dessus). À la fin, elle est facturée 1 crédit par page de `pages`, et le reste de la réservation est libéré. Les pages de `failed` ne sont pas facturées. Un parcours qui renvoie 3 pages sur 25 coûte 3 crédits. Voir [Crédits et limites](/fr/concepts/credits-and-limits.md) pour le fonctionnement des réservations.

## Limites et erreurs

* Quand la page de départ est illisible, la tâche échoue avec `PAGE_UNAVAILABLE`. Toute autre page illisible va dans `failed` et le parcours continue.
* Les options invalides renvoient `422 VALIDATION_ERROR` en nommant le champ.
* `WEB_CRAWL` ignore `markdown`, `rawResponse` et `searchQueries`. Il refuse `html` et `analysis` avec `422` et `citationAnalysis` avec `400` ; voir [flags non pris en charge](/fr/engines/response-options.md#flags-non-pris-en-charge).
* Les autres erreurs de requête sont listées dans [Erreurs](/fr/concepts/errors.md).

## Voir aussi

* [Web map](/fr/engines/web-map.md) pour lister les adresses d'un site sans les lire
* [Web scrape](/fr/engines/web-scrape.md) pour une seule page


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.