Pular para o conteúdo

Como consultar CNPJ via API no Java.

Aprenda a consultar CNPJ via API no Java com HttpClient: código pronto, leitura do JSON, tratamento de erros e boas práticas. API de CNPJ grátis, sem chave e sem cadastro.

Por que usar a API do openCNPJ no Java

Em aplicações Java, como sistemas corporativos, Spring Boot ou integrações com ERP, a consulta de CNPJ via API evita digitação manual e mantém os cadastros atualizados. O exemplo usa apenas o HttpClient nativo do Java 11.

  • Grátis, sem chave de acesso e sem cadastro.
  • Resposta em JSON com razão social, situação cadastral, endereço, CNAEs, sócios e Simples Nacional.
  • Aceita o CNPJ numérico e o novo CNPJ alfanumérico.
  • Limite de 10 requisições por segundo por IP.

O que você precisa

Java 11 ou superior (usa java.net.http.HttpClient). Para converter o JSON em objetos, use Jackson ou Gson.

Consultar um CNPJ no Java

O endpoint é GET https://api.opencnpj.com.br/cnpj/{cnpj}. Envie o CNPJ com 14 caracteres, sem pontos, barra ou hífen. O exemplo abaixo consulta o CNPJ 06.990.590/0001-23:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class ConsultaCnpj {
    public static void main(String[] args) throws Exception {
        String cnpj = "06990590000123";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.opencnpj.com.br/cnpj/" + cnpj))
            .header("Accept", "application/json")
            .GET()
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        if (response.statusCode() != 200) {
            throw new RuntimeException("HTTP " + response.statusCode());
        }
        System.out.println(response.body());
    }
}

Java 11+. Para mapear o JSON em objetos, use Jackson ou Gson.

Remover a máscara do CNPJ

Se o CNPJ vem formatado (06.990.590/0001-23) de um formulário, banco de dados ou planilha, limpe a pontuação antes de montar a URL. A mesma regra funciona para o CNPJ alfanumérico:

public static String limparCnpj(String cnpj) {
    return cnpj.replaceAll("[^0-9A-Za-z]", "").toUpperCase();
}

String cnpj = limparCnpj("06.990.590/0001-23"); // "06990590000123"

Campos mais usados da resposta

CampoConteúdo
razao_socialNome empresarial
estabelecimento.nome_fantasiaNome fantasia
estabelecimento.situacao_cadastralAtiva, Suspensa, Inapta, Baixada ou Nula
estabelecimento.atividade_principalCNAE principal, com código e descrição
estabelecimento.cidade.nome e estabelecimento.estado.siglaMunicípio e UF
estabelecimento.cep, logradouro, numero, bairroEndereço
simples.simples e simples.meiOpção pelo Simples Nacional e MEI
sociosQuadro de sócios e administradores

A lista completa de campos está na documentação da API.

Tratando erros

Verifique o status HTTP antes de ler o JSON. Java: use response.statusCode().

StatusO que significaO que fazer
200CNPJ encontradoLer o JSON
400Formato de CNPJ inválidoConferir os 14 caracteres
404CNPJ não encontrado na baseInformar ao usuário
429Limite de requisições excedidoAguardar e tentar de novo
500Erro internoTentar novamente mais tarde

Os erros também vêm em JSON, com os campos status, titulo e detalhes.

Boas práticas

  • Defina um timeout na requisição, por exemplo com HttpRequest.Builder.timeout(Duration.ofSeconds(10)).
  • Guarde o resultado em cache se o mesmo CNPJ for consultado com frequência.
  • Em processamentos em lote, respeite o limite de 10 requisições por segundo.
  • Os dados refletem a base pública mais recente processada e não substituem certidões oficiais.

Perguntas frequentes

A API de CNPJ do openCNPJ é gratuita?

Sim, 100% grátis. Não há chave de acesso nem cadastro. O limite é de 10 requisições por segundo por IP.

Funciona no Java 8?

O HttpClient usado no exemplo existe a partir do Java 11. No Java 8, faça a mesma chamada GET com HttpURLConnection, OkHttp ou Apache HttpClient.

Como usar no Spring Boot?

Use RestClient ou RestTemplate: restClient.get().uri("https://api.opencnpj.com.br/cnpj/{cnpj}", cnpj).retrieve().body(Map.class), ou mapeie para uma classe com os campos que você precisa.

De onde vêm os dados do CNPJ?

Dos dados abertos do CNPJ publicados pela Receita Federal, complementados por bases públicas. Os dados podem ter defasagem e não substituem certidões oficiais. Veja a origem dos dados.