Consultar CNPJ em C# / .NET

Este guia mostra como consultar um CNPJ pela API REST da CNPJAPI em C# (.NET), usando HttpClient. A resposta vem em JSON, com os campos em PascalCase (RazaoSocial, SituacaoCadastral, ...) - o que combina bem com a convenção de nomes do .NET.

Pré-requisitos

Consulta simples

using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.Json;

const string cnpj = "00776574000156"; // apenas os 14 dígitos, sem pontuação
const string apiKey = "cnpj_sua_chave";

using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", apiKey);

using var resposta = await http.GetAsync($"https://api.cnpjapi.com.br/{cnpj}");
resposta.EnsureSuccessStatusCode();

await using var stream = await resposta.Content.ReadAsStreamAsync();
using var doc = await JsonDocument.ParseAsync(stream);
var raiz = doc.RootElement;

Console.WriteLine(raiz.GetProperty("RazaoSocial").GetString());
Console.WriteLine(raiz.GetProperty("SituacaoCadastral").GetProperty("Descricao").GetString());

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, sem EnsureSuccessStatusCode:

using var resposta = await http.GetAsync($"https://api.cnpjapi.com.br/{cnpj}");

if ((int)resposta.StatusCode == 429)
{
    var espera = resposta.Headers.RetryAfter?.Delta ?? TimeSpan.FromSeconds(60);
    await Task.Delay(espera);
    // tente novamente...
}
else if (resposta.StatusCode == System.Net.HttpStatusCode.NotFound)
{
    Console.WriteLine("CNPJ não encontrado na base pública");
}
else if (resposta.IsSuccessStatusCode)
{
    var json = await resposta.Content.ReadAsStringAsync();
    using var doc = JsonDocument.Parse(json);
    Console.WriteLine(doc.RootElement.GetProperty("RazaoSocial").GetString());
}

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):

using var resposta = await http.GetAsync(
    $"https://api.cnpjapi.com.br/consulta/ie/{cnpj}?uf=SP");
resposta.EnsureSuccessStatusCode();

await using var stream = await resposta.Content.ReadAsStreamAsync();
using var doc = await JsonDocument.ParseAsync(stream);

foreach (var ie in doc.RootElement.GetProperty("resultados").EnumerateArray())
{
    Console.WriteLine($"{ie.GetProperty("uf").GetString()} " +
        $"{ie.GetProperty("ie").GetString()} " +
        $"{ie.GetProperty("situacao").GetString()}");
}

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.