Réponse rapide
Que contient la réponse de lecture de WebReaderAPI ?
Une réponse WebReaderAPI /read contient le contenu de la page en markdown (ou text ou html), ses métadonnées (title, description, author, published_at, language, site_name, word_count), et les informations du fetch : final_url, status_code, rendered et credits_used. Une page simple utilise 1 crédit, à partir de 0,07 $US/1K pages en octobre 2026. Sans KYC ; payez en crypto.
Quels champs décrivent le fetch ?
Ces champs sont toujours présents dans une réponse réussie.
| Champ | Type | Signification |
|---|---|---|
url | string | L'adresse que vous avez envoyée |
final_url | string | L'adresse réellement lue, après redirections (5 au maximum) |
status_code | entier | Le statut HTTP renvoyé par le site pour l'adresse finale, normalement 200 |
fetched_at | string | Heure de la récupération, ISO 8601 en UTC |
rendered | booléen | true lorsqu'un navigateur headless a construit la page |
credits_used | entier | Crédits facturés pour cette page : 1, 2 avec un navigateur, plus 10 avec country ; PDF 1 par tranche de 10 pages commencées |
Quels champs décrivent la page ?
Les métadonnées proviennent de la page elle-même : sa balise title, ses balises meta, ses données structurées et sa signature visible. Un champ que la page ne fournit pas est absent : testez sa présence avant de l'utiliser.
| Champ | Type | Signification |
|---|---|---|
title | string | Le titre de la page ou de l'article |
description | string | Le résumé que la page donne d'elle-même |
language | string | Code de langue du contenu, par exemple en ou de |
author | string | L'auteur indiqué sur la page |
published_at | string | Date de publication indiquée par la page |
site_name | string | Le nom du site lui-même |
word_count | entier | Mots dans le contenu renvoyé, après extraction et avant max_chars |
Où se trouve le contenu lui-même ?
Un seul champ de contenu est renvoyé, nommé d'après le format choisi.
| Champ | Quand | Contenu |
|---|---|---|
markdown | format=markdown (par défaut) | Titres, paragraphes, listes, tableaux et liens en Markdown ; images aussi avec include_images=true |
text | format=text | Texte brut, paragraphes séparés par des lignes vides |
html | format=html | HTML nettoyé du contenu principal, sans scripts, styles ni publicités |
links | include_links=true | Liste des {url, text} pour les liens trouvés sur la page, URL absolues |
{
"url": "https://example.com/guides/compost",
"final_url": "https://example.com/guides/compost-at-home",
"status_code": 200,
"fetched_at": "2026-10-22T10:02:44Z",
"rendered": false,
"credits_used": 1,
"title": "Compost at home: a beginner's guide",
"description": "What to put in a compost bin, and what to leave out.",
"language": "en",
"author": "Sam Rivera",
"published_at": "2026-09-14",
"site_name": "Example Garden",
"markdown": "# Compost at home: a beginner's guide\n\nA compost bin turns kitchen scraps into soil...\n\n## What goes in\n\n- Fruit and vegetable peels\n- Coffee grounds\n\nSee also [Choosing a bin](https://example.com/guides/bins).",
"word_count": 1184,
"links": [
{ "url": "https://example.com/guides/bins", "text": "Choosing a bin" }
]
}Comment distinguer une page rendue d'une page brute ?
Regardez rendered. Avec render=auto, l'API lit d'abord le HTML brut ; elle ne lance un navigateur que lorsque ce HTML contient trop peu de texte, et passe alors rendered à true et credits_used à 2. Si un site que vous lisez souvent revient toujours rendu, envoyez render=true dès le départ : le coût est identique et vous évitez une première étape inutile.
Si une page revient non rendue mais pauvre en contenu, comparez word_count avec ce que vous voyez dans un navigateur. Un nombre faible signifie généralement que le contenu nécessite JavaScript ; réessayez une fois avec render=true.
Pourquoi final_url peut-il différer de url ?
Parce que les sites redirigent. Un lien court, une ancienne adresse, une barre oblique finale manquante ou un changement de langue vous envoient ailleurs. L'API suit jusqu'à 5 redirections et indique l'adresse qu'elle a finalement lue dans final_url.
Stockez final_url comme source canonique d'un document dans un index RAG. Deux valeurs url différentes qui aboutissent au même final_url désignent la même page : vous pouvez donc supprimer le doublon avant de l'embedder.
À quoi ressemble le résultat d'un job ?
GET https://webreaderapi.com/api/v1/jobs/{job_id} renvoie job_id, status (queued, running ou done), results, next_cursor et l'état d'avancement credits_used du job. Chaque élément de results prend l'une de deux formes :
- une réponse
/readcomplète, exactement comme décrit ci-dessus, pour une page qui a été lue ; {url, error}pour une page qui ne l'a pas été, oùerrorpossède les mêmescodeetmessagequ'une erreur API.
next_cursor est présent tant que d'autres résultats sont disponibles ; renvoyez-le en tant que cursor pour les récupérer. La page batch et crawl contient une boucle de polling complète.
{
"job_id": "job_5c1e8a90d2",
"status": "done",
"results": [
{ "url": "https://example.com/blog/post-1", "final_url": "https://example.com/blog/post-1", "status_code": 200, "rendered": false, "credits_used": 1, "title": "Post one", "markdown": "# Post one\n\n...", "word_count": 802 },
{ "url": "https://example.org/members/area", "error": { "code": "target_refused", "message": "The site refused the request.", "target_status": 403 } }
],
"credits_used": 1
}À quoi ressemble une réponse d'erreur ?
Une erreur revient avec un statut HTTP de 400 ou plus et un corps JSON {"error": {"code", "message"}}. Lorsque le site lui-même a refusé la requête, target_status indique le statut envoyé par le site. Aucune erreur n'est facturée. La page des erreurs liste chaque code avec sa cause et précise si une nouvelle tentative peut aider.
Format de réponse : questions fréquentes
Le Markdown est-il coupé lorsque je définis max_chars ?
Oui. Le champ content s'arrête à ce nombre de caractères. word_count décrit toujours l'intégralité du contenu extrait, vous pouvez donc voir ce qui a été omis.
Pourquoi author ou published_at sont-ils absents ?
Parce que la page ne l'indique pas d'une manière lisible. Beaucoup de pages ne fournissent ni auteur ni date. Les champs absents sont omis plutôt que renvoyés vides.
Les liens dans le Markdown sont-ils absolus ?
Les liens de la liste links sont absolus. Écrivez votre code pour accepter les deux formes dans le corps Markdown, et résolvez les liens relatifs par rapport à final_url.
Puis-je obtenir le HTML brut de la page entière ?
Le plus proche est format=html avec main_content=false, qui renvoie la page entière nettoyée des scripts et des styles. Le HTML original octet par octet ne fait pas partie de la v1.