Salvar página da web em PDF
Salvar uma página da web em PDF cria um registro fechado do que o site mostrava naquele momento: layout, texto e imagens, com o texto ainda selecionável. Você informa a URL via API, o serviço abre a página em um navegador real e devolve o PDF pronto para arquivar, anexar ou encaminhar.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
Informe a URL, receba o documento
A chamada é simples: seu sistema manda o endereço da página e recebe o PDF renderizado. Não precisa copiar conteúdo, tirar print nem instalar extensão. O serviço carrega a página completa — do topo ao rodapé — e converte em documento paginado de até 200 páginas e 25 MB. Como a execução é assíncrona, você envia a tarefa e baixa o resultado em seguida, sem prender o seu sistema esperando a renderização terminar.
Melhor que print: texto pesquisável e página inteira
O print do celular corta a página onde a tela acaba e vira imagem — não dá para buscar uma palavra nem copiar um trecho. O PDF gerado por renderização captura a página inteira, preserva o texto como texto e mantém os links visíveis. Para guardar uma oferta, um edital ou uma matéria, a diferença aparece meses depois: você encontra o documento procurando pelo conteúdo, não folheando prints na galeria.
Sites com JavaScript entram na conta
Boa parte das páginas atuais monta o conteúdo com JavaScript depois do carregamento — quem tenta baixar só o HTML recebe uma casca vazia. Aqui a página roda em um motor de navegador completo, com scripts executados, antes da conversão. O PDF sai com o conteúdo que um visitante de verdade veria na tela, inclusive em lojas online e sistemas modernos que carregam tudo de forma dinâmica.
Preço por captura, publicado
Cada captura custa US$ 0,040 pela chamada, mais US$ 0,001 por página do PDF final. Uma página de produto que renda três páginas de documento custa US$ 0,043. Sem mensalidade e sem pacote mínimo: quem captura dez páginas por mês paga centavos, quem captura milhares paga o mesmo preço unitário. O valor é sempre em dólar americano e está publicado nesta página.
Casos de uso
Guardar a oferta antes que ela mude
Carlos Eduardo Souza comprou uma geladeira anunciada por R$ 2.499,00 e salvou a página da oferta em PDF no mesmo dia. Quando o valor apareceu diferente na cobrança, ele tinha o registro completo da condição anunciada — data, preço e descrição — para sustentar a reclamação.
Clipping de imprensa com layout original
Uma assessoria em Recife arquiva em PDF cada matéria publicada sobre seus clientes, no dia em que sai. O relatório mensal de imprensa vai com as páginas como foram publicadas, mesmo que o portal edite ou tire a matéria do ar depois.
Editais e publicações oficiais
Uma construtora guarda em PDF cada edital de licitação no dia da publicação. Se a página do órgão mudar de endereço ou sair do ar no meio do certame, a versão original está arquivada com data.
Versão aprovada da landing do cliente
Uma agência registra em PDF a landing de cada campanha no dia do lançamento. Quando o cliente pede "como estava no início?", a resposta é um arquivo, não a memória de alguém.
Perguntas frequentes
A captura pega a página inteira ou só a primeira tela?
A página inteira, do topo ao rodapé, distribuída em páginas de documento. Não é um print da área visível: é a renderização completa do conteúdo.
Funciona com página que só carrega com JavaScript?
Sim. A URL é aberta em um navegador real, com scripts executados antes da conversão — o PDF reflete o que um visitante veria, não o HTML cru.
Serve como prova em uma disputa de consumo?
O PDF é um registro fiel e datado do que a página exibia, e ajuda muito como evidência imediata. Para prova com fé pública existe a ata notarial em cartório; avalie com quem cuida do seu caso o nível de formalidade necessário.
A página precisa ser pública?
Sim. O serviço acessa a URL como um visitante comum; páginas que exigem login ou estão atrás de paywall não são capturadas.
Quanto custa capturar 100 páginas por mês?
100 chamadas custam US$ 4,00, mais US$ 0,001 por página gerada — se cada captura render duas páginas, o total do mês fica em US$ 4,20. Sem assinatura: pagou, usou.
O que vocês fazem com as URLs que eu envio?
São usadas apenas para executar a captura que você pediu. O PDF fica disponível para download por tempo limitado e o conteúdo não é reaproveitado para nada — em linha com a LGPD.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/pdf/from-url \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pdf":"https://ejemplo.com/documento.pdf"}'const res = await fetch("https://api.kit.forhosting.com/pdf/from-url", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pdf": "https://ejemplo.com/documento.pdf"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/from-url",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pdf": "https://ejemplo.com/documento.pdf"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/from-url", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pdf":"https://ejemplo.com/documento.pdf"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pdf":"https://ejemplo.com/documento.pdf"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/from-url", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"pdf": "https://ejemplo.com/documento.pdf"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.from_url",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 25 |
max_pages | 200 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
413 | input_too_large | A entrada passou do tamanho máximo desta tarefa. Confira os limites publicados. |
422 | task_failed | A tarefa falhou do nosso lado. Você não paga nada por ela. |