Prerender
Carica un indirizzo, esegue tutto il JavaScript della pagina come farebbe un browser e ti restituisce l'HTML finale, già completo di testi e contenuti. È quello che serve quando un sito costruito con React, Vue o Angular appare vuoto ai bot dei motori di ricerca e ai social, che non eseguono lo script.
Esegui online
Esegui questo sui nostri server con il tuo account. Gli strumenti gratuiti girano nel tuo browser; questo viene addebitato sul tuo saldo KIT al prezzo indicato sopra.
Perché una single page application resta invisibile
Molti siti moderni mostrano una pagina quasi vuota nell'HTML iniziale e riempiono i contenuti dopo, con JavaScript, direttamente nel browser. Chi visita il sito non se ne accorge, ma un bot che non esegue lo script vede una pagina senza testo. Il risultato: pagine indicizzate male, anteprime dei link che escono spoglie e strumenti di analisi che non trovano niente da leggere.
Come funziona il prerender
Lo strumento apre l'indirizzo in un browser reale, aspetta che lo script finisca di montare la pagina e cattura l'HTML risultante — lo stesso che vedrebbe una persona, ma servito già pronto. Puoi darlo al crawler, salvarlo come snapshot statico o passarlo a un altro strumento che si aspetta HTML normale. Non installi niente sul sito: gli passi solo l'URL, dalla pagina o via API.
Indicizzazione e anteprime social
I due usi più frequenti sono l'indicizzazione e le anteprime dei link. Un motore di ricerca che riceve l'HTML già montato trova titoli, testi e link da valutare. E quando incolli il link su WhatsApp, LinkedIn o Facebook, i tag Open Graph presenti nell'HTML finale fanno comparire titolo, descrizione e immagine, invece del riquadro vuoto tipico delle app in JavaScript.
Prezzo e limiti
Costa $0.040 a richiesta più $0.001 per URL: una pagina viene circa $0.040. Prezzo pubblicato, pagamento a consumo con PayPal, senza abbonamento. Ogni pagina ha un tempo massimo di 30 secondi per finire di caricarsi: quelle molto pesanti che superano il limite restano fuori.
Casi d'uso
Schede prodotto che Google non vede
Un negozio online costruito in React ha le schede prodotto che non compaiono nei risultati. Con il prerender ogni scheda viene servita come HTML completo, e il motore di ricerca finalmente legge nome, descrizione e prezzo.
Anteprima del link su LinkedIn
Studio Commercialista Bianchi pubblica gli articoli su un sito in Vue, ma quando li condivide su LinkedIn appare un riquadro vuoto. Il prerender espone i tag Open Graph e l'anteprima torna a mostrare titolo e immagine.
Snapshot di una pagina dinamica
Chi vuole archiviare o rileggere una pagina che si costruisce da sola nel browser la passa prima dal prerender: al posto di uno scheletro vuoto ottiene l'HTML con tutti i contenuti, pronto da salvare.
Domande frequenti
Il mio sito è in React o Vue: funziona lo stesso?
Sì. Il prerender esegue il JavaScript come un browser vero, quindi non gli importa il framework: React, Vue, Angular, Svelte o codice scritto a mano. Gli serve solo un indirizzo pubblico da caricare.
Il prerender modifica il mio sito?
No. Legge l'indirizzo e ti restituisce l'HTML già montato: non tocca il sito, non installa niente e non richiede plugin. Decidi tu cosa farne del risultato — darlo ai crawler o salvarlo.
Serve a far vedere le anteprime dei link sui social?
Sì, è uno degli usi principali. Se i tag Open Graph vengono aggiunti via JavaScript, gli scraper dei social non li vedono; l'HTML prerenderizzato li contiene già, così l'anteprima mostra titolo, descrizione e immagine.
Quanto costa?
Circa $0.040 a pagina ($0.040 a richiesta più $0.001 per URL). Prezzo pubblicato, pagamento a consumo con PayPal, senza abbonamento e senza registrazione.
I contenuti della pagina vengono conservati?
No: l'indirizzo viene caricato per generare l'HTML e poi scartato. Non teniamo copia della pagina dopo l'elaborazione; ricevi solo il risultato.
Il supporto è in italiano?
Ti risponde una persona vera, in inglese o spagnolo. Scrivici comunque in italiano: ci capiamo. Nessun bot in mezzo.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"url": "https://ejemplo.com"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.prerender",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
timeout_sec | 30 |
max_crawl_pages | 25 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
422 | task_failed | L'attività non è andata a buon fine: non ti viene addebitato nulla. |