Prérendu HTML
Le prérendu ouvre votre page dans un vrai navigateur, laisse le JavaScript s’exécuter, puis fige le résultat en une page HTML complète. Cette version déjà remplie est celle que vous servez aux robots des moteurs et des aperçus de liens, qui n’exécutent pas toujours le JavaScript et ne verraient sinon qu’une page vide.
Exécuter en ligne
Exécutez cette tâche sur nos serveurs, avec votre compte. Les outils gratuits tournent dans votre navigateur ; celui-ci est facturé sur votre solde KIT au prix affiché ci-dessus.
Le problème d’un site construit en JavaScript
Sur un site où tout est généré côté client — en React, en Vue ou avec un autre framework —, le premier code servi n’est souvent qu’un squelette vide, rempli ensuite par le navigateur. Un visiteur ne voit pas la différence, mais un robot qui n’exécute pas le JavaScript, lui, ne trouve rien à lire : ni titre, ni texte, ni liens. Votre page existe, mais elle reste invisible pour qui ne fait pas tourner ses scripts.
Une photographie figée de la page remplie
Le prérendu laisse la page se construire entièrement, puis en capture le HTML tel qu’il existe une fois vivant : titres, contenu, liens et données structurées, tout est présent. Ce cliché statique se lit sans exécuter le moindre script. C’est exactement ce dont un robot a besoin pour comprendre et indexer votre page, sans dépendre de sa capacité à interpréter le JavaScript.
Pour les moteurs comme pour les aperçus de liens
Les moteurs de recherche ne sont pas les seuls concernés. Quand vous partagez un lien sur WhatsApp, LinkedIn ou dans un message, un robot va chercher le titre et l’image de la page pour en composer l’aperçu ; s’il tombe sur une coquille vide, l’aperçu reste blanc. En servant une version prérendue, vous garantissez que ces robots trouvent bien le titre, la description et l’image attendus.
Prérendu ou simple rendu ?
Un rendu vous restitue le HTML final d’une page pour que vous l’analysiez ou le traitiez vous-même. Le prérendu vise un autre usage : produire une version statique et complète destinée à être servie aux robots, à la place de la coquille vide. L’un alimente vos traitements, l’autre nourrit votre référencement et vos aperçus. La mécanique du navigateur est proche ; l’objectif, lui, diffère.
Cas d’usage
Site en React non indexé
Menuiserie Rousseau & Fils a refait son site en JavaScript et ne le voit plus apparaître dans les résultats de recherche ; le prérendu sert enfin une page lisible aux moteurs.
Livraison d’une application monopage
Studio Lumen SAS livre une application monopage à un client et fournit une version prérendue pour que chaque page soit correctement indexée.
Aperçu de lien resté blanc
Sophie Nguyen partage l’adresse d’une page dynamique sur LinkedIn, où l’aperçu restait vide ; le HTML prérendu rétablit le titre et l’image.
Fiches produit dynamiques
Une boutique dont les fiches sont générées côté client sert leur version prérendue aux moteurs, afin que chaque produit devienne trouvable.
Questions fréquentes
Mon site en React ou Vue n’est pas indexé, est-ce la solution ?
Souvent, oui. Si vos pages sont construites côté client, les robots peuvent ne voir qu’une coquille vide. Le prérendu leur sert une version complète et lisible, ce qui lève l’un des obstacles les plus fréquents à l’indexation.
Google n’indexe-t-il pas déjà le JavaScript ?
En partie, mais avec des délais et des limites, et tous les robots n’en sont pas capables — ceux des aperçus de liens, notamment. Servir une page déjà rendue rend l’indexation plus fiable et ne dépend plus de l’exécution des scripts.
Quelle différence avec un simple rendu de page ?
Le rendu vous renvoie le HTML final pour que vous le traitiez vous-même. Le prérendu produit une version statique pensée pour être servie aux robots, à la place de la page vide. Même navigateur, finalité différente.
Faut-il l’installer sur mon serveur ?
Non. Vous demandez le prérendu d’une adresse et récupérez le HTML complet, depuis le web ou par l’API ; à vous ensuite de le servir aux robots. Rien à installer de notre côté.
Combien coûte un prérendu ?
Le tarif est de $0.040 par requête et $0.001 par URL, en dollars US, sans abonnement ni compte. Vous ne payez que les prérendus demandés.
Que devient l’adresse une fois le prérendu terminé ?
Rien n’est gardé. Le temps de générer la page statique, l’adresse est ouverte sur nos serveurs ; une fois le HTML remis, l’URL et le contenu produit sont supprimés. Pour une facture, écrivez à [email protected].
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/web/prerender \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/web/prerender", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/prerender",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/prerender", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/prerender", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"url": "https://ejemplo.com"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.prerender",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
timeout_sec | 30 |
max_crawl_pages | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
422 | task_failed | La tâche a échoué : elle ne vous est pas facturée. |