Capture só um pedaço da página
Em vez de fotografar a tela toda, esta ferramenta permite capturar um elemento da página: você informa a URL e um seletor CSS, e o print sai recortado exatamente naquele bloco — um gráfico, um card de preço, uma tabela. Sem editor de imagem, sem recorte manual, sem sobra de fundo.
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.
Do seletor ao recorte
A chamada leva dois dados: a URL da página e o seletor CSS do elemento. Um navegador real abre o endereço, espera a renderização, localiza o bloco indicado e fotografa apenas a área dele. O resultado volta como tarefa assíncrona — task_id, status, download do PNG — e cada página tem até 30 segundos para carregar. O recorte sai justo, sem margens de conteúdo vizinho para você limpar depois.
Que seletor usar
Qualquer seletor CSS válido funciona: um id como #grafico-vendas, uma classe como .card-preco, um elemento como table.tarifas. Para descobrir o seletor de um bloco, abra a página no seu navegador, clique com o botão direito no elemento e escolha “Inspecionar” — o caminho aparece no painel. Prefira ids e classes com nome estável; seletores gerados automaticamente, cheios de códigos aleatórios, tendem a mudar e quebrar a captura.
Quando o recorte ganha do print inteiro
Sempre que o que importa é um pedaço, não o conjunto. Um indicador que entra no relatório da diretoria, o selo de preço que você acompanha, o widget que precisa estar no ar: capturar só o elemento gera imagens menores, focadas e comparáveis entre si ao longo do tempo — a mesma moldura hoje, amanhã e no mês que vem. O print da página inteira serve para contexto; o recorte serve para acompanhamento.
Preço por captura
US$ 0,040 por chamada mais US$ 0,001 por URL, igual às demais capturas — o recorte não custa mais caro. Acompanhar um bloco específico todos os dias úteis do mês, por exemplo, fica em torno de US$ 0,90. Pagamento por uso, em dólar, sem assinatura: se a rotina parar, o gasto para junto.
Casos de uso
O gráfico no relatório da diretoria
Uma analista em São Paulo captura toda segunda-feira o gráfico de um painel público de indicadores e cola a imagem no relatório interno. O seletor mira só o gráfico: nada de cabeçalho do site, menu ou banner no meio do documento.
Card de preço sob vigilância
Um e-commerce acompanha o card de oferta de um produto específico na própria loja depois de cada atualização de catálogo. Se o bloco renderizar errado — preço sumido, parcela quebrada —, a imagem entrega o problema no mesmo dia.
Widget de depoimentos no ar
Depois de trocar o script de depoimentos do site, a equipe da TecnoSul captura apenas aquele bloco em três páginas diferentes para confirmar que carregou em todas — sem precisar abrir uma por uma no navegador.
Perguntas frequentes
E se o seletor não encontrar nada na página?
A tarefa retorna erro avisando que o elemento não foi localizado, em vez de devolver a página inteira por conta própria. Você corrige o seletor e chama de novo.
Preciso saber CSS para usar?
Só o básico de inspecionar elemento: botão direito na página, “Inspecionar”, e copiar o seletor que o navegador mostra. Não é preciso escrever CSS — apenas apontar.
O elemento carrega via JavaScript. Funciona?
Sim. A página abre em navegador real, que executa os scripts antes da captura — o limite é o tempo total de 30 segundos. Se o bloco só existir após a renderização, ele é encontrado normalmente.
Quanto sai cada recorte?
US$ 0,040 pela chamada mais US$ 0,001 pela URL — cerca de US$ 0,041 por captura, o mesmo preço de um print completo. A economia do recorte está no seu tempo, não na tarifa.
O que vocês fazem com a URL e o seletor que eu envio?
Processamos para gerar o seu PNG e devolvemos o resultado. Não há reaproveitamento nem perfil montado a partir das suas chamadas — o dado serve à tarefa e ponto final.
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/web/screenshot-element \
-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/screenshot-element", {
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/screenshot-element",
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/screenshot-element", 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/screenshot-element", 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
{
"url": "https://ejemplo.com"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.screenshot_element",
"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
timeout_sec | 30 |
max_crawl_pages | 25 |
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. |
422 | task_failed | A tarefa falhou do nosso lado. Você não paga nada por ela. |