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

# API de web scraping

> L'API de web scraping Cleariflow permet l'extraction de pages rendues en JavaScript via une interface JSON RESTful moderne, avec protection SSRF et options de rendu flexibles.

## Premiers pas

<Card title="Scraping synchrone" icon="browser" href="scrape/scrape">
  L'endpoint `scrape` exécute une session de navigateur et renvoie le HTML rendu en une seule requête — idéal pour les intégrations à faible latence.
</Card>

<Card title="Tâches asynchrones" icon="clock" href="scrape/jobs">
  Les endpoints `jobs` mettent les scrapes en file d'attente et permettent de consulter le statut et les résultats — idéal pour un volume élevé ou des pages lentes.
</Card>

### Architecture REST

L'API de web scraping suit les principes REST, avec des URL prévisibles orientées ressources et des codes de statut HTTP standard pour une intégration fluide et une gestion des erreurs.

### Sécurité HTTPS

Toutes les communications API sont sécurisées par TLS 1.2 ou supérieur pour garantir l'intégrité et la confidentialité des données.

### Versions de l'API

L'API de web scraping maintient la compatibilité ascendante via le versionnage et fonctionne actuellement en Version 1.

### Authentification

Votre clé API est le credential exclusif pour accéder à l'API de web scraping. Chaque service Cleariflow nécessite une clé unique. Incluez votre clé dans le corps JSON via `api_key`.

### URL de base

```
https://scrape.cleariflow.com
```

### Rendu des pages

Les pages sont rendues dans un véritable navigateur headless. JavaScript est entièrement exécuté avant le retour du contenu. La protection SSRF intégrée bloque les requêtes vers localhost et les plages d'IP privées.

## Codes de réponse et d'erreur

En cas d'échec, l'API renvoie des réponses d'erreur JSON structurées avec des codes et descriptions spécifiques pour un dépannage efficace.

| Code | Type                  | Détails                                                                                                             |
| ---- | --------------------- | ------------------------------------------------------------------------------------------------------------------- |
| 200  | OK                    | Tout s'est déroulé comme prévu.                                                                                     |
| 202  | Accepted              | La tâche asynchrone a été mise en file d'attente avec succès.                                                       |
| 400  | Bad request           | Requête incorrecte — URL invalide, cible bloquée ou charge mal formée.                                              |
| 401  | Unauthorized          | La requête n'a pas été acceptée. Généralement due à une clé API manquante ou incorrecte.                            |
| 422  | Quota reached         | La requête a été interrompue faute de crédits API suffisants. (Offres gratuites)                                    |
| 429  | Too many requests     | La limite de requêtes par seconde a été atteinte. Sur les offres gratuites, la limite est de 1 requête par seconde. |
| 500  | Internal server error | La requête n'a pas pu être traitée en raison d'une erreur serveur.                                                  |
