Consultar CNPJ em Java
Este guia mostra como consultar um CNPJ pela API REST da CNPJAPI em Java, usando o HttpClient da biblioteca padrão (java.net.http, Java 11+). A resposta vem em JSON, com os campos em PascalCase (RazaoSocial, SituacaoCadastral, ...).
Pré-requisitos
- Java 17+ (LTS). O
java.net.http.HttpClienté nativo desde o Java 11; oswitchde seta usado no tratamento de erros requer Java 14+. - Uma biblioteca JSON para desserializar a resposta (Jackson, Gson, ...).
- Uma API key da CNPJAPI. Crie a conta em https://app.cnpjapi.com.br e gere a chave (veja Autenticação).
Consulta simples
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
String cnpj = "00776574000156"; // apenas os 14 dígitos, sem pontuação
String apiKey = "cnpj_sua_chave";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.cnpjapi.com.br/" + cnpj))
.header("Authorization", "Bearer " + apiKey)
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
// Desserialize response.body() com sua lib JSON (ex.: Jackson):
// Empresa empresa = new ObjectMapper().readValue(response.body(), Empresa.class);
System.out.println(response.body());
}
As chamadas
client.send(...)eThread.sleep(...)lançam exceções verificadas (IOException,InterruptedException): rode dentro de um método comthrowsou envolva emtry/catch.
Tratando erros e rate limit
Ao exceder o limite por minuto ou a cota mensal, a API responde 429 com o cabeçalho Retry-After (segundos). Trate como recuperável:
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
switch (response.statusCode()) {
case 429 -> {
int espera = response.headers().firstValue("Retry-After")
.map(Integer::parseInt).orElse(60);
Thread.sleep(espera * 1000L);
// tente novamente...
}
case 404 -> System.out.println("CNPJ não encontrado na base pública");
case 200 -> { /* processe response.body() */ }
default -> throw new RuntimeException("Falha na consulta: HTTP " + response.statusCode());
}
Inscrição Estadual (premium)
Com um plano que inclui Inscrição Estadual, consulte a IE de um CNPJ na fonte oficial da SEFAZ. Passe uf para uma UF (1 crédito) ou omita para a varredura nacional (3 créditos):
HttpRequest ieRequest = HttpRequest.newBuilder()
.uri(URI.create("https://api.cnpjapi.com.br/consulta/ie/" + cnpj + "?uf=SP"))
.header("Authorization", "Bearer " + apiKey)
.GET()
.build();
HttpResponse<String> ieResponse = client.send(ieRequest, HttpResponse.BodyHandlers.ofString());
if (ieResponse.statusCode() == 200) {
// Desserialize ieResponse.body() com sua lib JSON e itere "resultados":
// cada item tem uf, ie, indicador, situacao, tipo, ...
System.out.println(ieResponse.body());
}
Contrato completo (campos, cobertura, créditos) em Consultar a Inscrição Estadual.
Próximos passos
Crie sua conta gratuita em https://app.cnpjapi.com.br e faça a primeira consulta em minutos.