Vaga publicada em texto corrido?
Essa capacidade lê a página de uma vaga de emprego num navegador real e devolve os dados em JSON: cargo, empresa, cidade, modelo de trabalho, regime de contratação, requisitos, benefícios e salário — quando publicados. Está em beta. O anúncio em texto corrido vira registro estruturado, comparável e pesquisável.
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.
Campos que a extração devolve
Do texto do anúncio, a IA separa o que interessa em campos: título do cargo, empresa, localização, modelo (presencial, híbrido, remoto), regime (CLT, PJ, estágio), faixa salarial se publicada, requisitos e benefícios. O que o anúncio não informa vem vazio — e no mercado brasileiro isso é frequente: salário a combinar vira campo de salário vazio, não um chute. A honestidade do dado é o que torna a base resultante confiável para comparação.
O anúncio brasileiro é um gênero literário
Quem já leu vaga no Brasil conhece o estilo: três parágrafos de cultura da empresa, requisitos misturados com desejáveis, Excel avançado imprescindível citado no meio de um bloco sobre propósito, e o regime de contratação escondido na última linha. Estruturar isso à mão, vaga por vaga, consome tardes de trabalho. A leitura por IA foi feita para esse texto solto — ela entende o anúncio como um recrutador entenderia, e devolve os campos separados.
Beta: onde ainda tropeça
Em beta, a extração se sai bem com páginas de vaga individuais e públicas. Listas de vagas (várias na mesma página) devolvem melhor resultado quando cada URL aponta para uma vaga só; anúncios atrás de login ou dentro de aplicativo ficam fora do alcance. Como todo beta, o combinado é testar com as fontes do seu interesse antes de escalar — e reportar anúncio mal lido, que caso real é o que afina a leitura.
Preço por vaga
Cada extração custa US$ 0,046 por solicitação mais US$ 0,0145 por URL — cerca de US$ 0,06 por vaga. Consolidar 200 vagas por mês custa em torno de US$ 12,10: menos que uma hora de trabalho de quem hoje copia e cola anúncio em planilha, e sem erro de digitação no meio. O fluxo é assíncrono via API: você envia a URL, recebe o identificador da tarefa e coleta o JSON quando estiver pronto — bom para processar listas inteiras em paralelo.
Casos de uso
Hunting com planilha decente
Uma recrutadora acompanha as páginas de carreira de 25 empresas-alvo. A extração transforma cada vaga publicada em linha de planilha — cargo, regime, modelo, requisitos — e a busca por quem está contratando analista fiscal em Curitiba vira filtro, não memória.
Radar regional de oportunidades
Um projeto comunitário de empregabilidade em Recife consolida as vagas publicadas nos sites de empresas da região metropolitana. Com os dados estruturados, o boletim semanal sai organizado por bairro, regime e nível — montado por uma pessoa, não por uma equipe.
Pesquisa salarial baseada no que é público
Um consultor de RH compila os anúncios do setor que publicam faixa salarial. Como a extração devolve o salário apenas quando publicado — sem estimar nada —, a base final distingue com clareza o dado real da lacuna, o que qualquer pesquisa séria exige.
Perguntas frequentes
E quando a vaga não informa salário?
O campo vem vazio. A extração não estima, não infere pela senioridade nem completa com média de mercado — salário a combinar é registrado como ausência de dado, que é o que ele é.
Distingue CLT, PJ e estágio?
Sim, quando o anúncio declara — é um dos campos do resultado. Se o regime não estiver escrito em lugar nenhum, o campo volta vazio em vez de adivinhado.
Funciona com vagas em portais que exigem login?
Não: a leitura alcança páginas públicas, como um visitante sem conta veria. As páginas de carreira das próprias empresas costumam ser o alvo ideal.
Por que está em beta?
Porque a variedade de formatos de anúncio é enorme e a cobertura ainda está sendo calibrada. Vagas individuais em página pública funcionam bem; casos estranhos existem e queremos conhecê-los — reporte quando o resultado vier torto.
Posso montar um site de vagas com esses dados?
Os dados vêm de anúncios públicos, mas o conteúdo pertence a quem publicou. Agregação com link para a fonte original costuma ser bem recebida; republicação integral sem crédito é outra conversa — a responsabilidade legal do uso é sua.
Qual é o custo para uso contínuo?
US$ 0,046 por solicitação mais US$ 0,0145 por URL, sem assinatura. O gasto acompanha o uso: um mês com 50 vagas custa um quarto de um mês com 200.
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/job-extract \
-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/job-extract", {
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/job-extract",
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/job-extract", 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/job-extract", 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.job_extract",
"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. |