Consultar CNPJ no Excel com Power Query

Uma coluna de CNPJs entra, e voltam razão social, situação e município de cada empresa. A consulta é uma função do Power Query que chama a API da Prometiam; a chave fica em um parâmetro, não em uma célula.

O que você vai montar

Uma função fnCnpj que recebe um CNPJ (com ou sem pontos, barra e hífen; com letras, no formato alfanumérico) e devolve uma linha com a razão social, a situação, o status do registro, a data de início da atividade e o município. Depois, você aplica a função a uma tabela de CNPJs. Cada consulta bem-sucedida custa 1 crédito.

1. Guarde a chave em um parâmetro

Em Dados > Obter Dados > Iniciar o Editor do Power Query, abra Página Inicial > Gerenciar Parâmetros > Novo Parâmetro. Nome ChaveApi, tipo Texto, valor atual a sua chave rk_live_.... Assim ela não aparece em nenhuma célula nem fica em uma coluna da tabela. Atenção: o parâmetro fica gravado dentro do arquivo, então não envie a pasta de trabalho a quem não deva usar a chave; se ela vazar, gere outra no painel.

2. Crie a função

Em Nova Fonte > Consulta em Branco > Editor Avançado, cole o código abaixo e dê à consulta o nome fnCnpj. A chave vai no cabeçalho Authorization: Bearer; o endereço é GET /companies/search com country=BR e company_number.

(cnpj as text) as record =>
let
    Limpo = Text.Upper(Text.Select(cnpj, {"0".."9", "A".."Z", "a".."z"})),
    Resp = Web.Contents("https://api.prometiam.com/functions/v1/risk-api/companies/search", [
        Query = [country = "BR", company_number = Limpo],
        Headers = [Authorization = "Bearer " & ChaveApi],
        ManualStatusHandling = {400, 401, 403, 404, 429, 503}
    ]),
    Codigo = Value.Metadata(Resp)[Response.Status],
    Corpo = if Codigo = 200 then Json.Document(Resp) else null,
    Linha = if Corpo <> null and List.Count(Corpo[data]) > 0 then Corpo[data]{0} else null
in
    [
        http = Codigo,
        razao_social = if Linha = null then null else Linha[company_name],
        status = if Linha = null then null else Linha[status],
        local_status = if Linha = null then null else Linha[local_status],
        inicio_atividade = if Linha = null then null else Linha[founding_date],
        municipio = if Linha = null then null else Record.FieldOrDefault(Linha, "city")
    ]

O ManualStatusHandling evita que um erro derrube a atualização inteira: a coluna http mostra o código de cada linha (200, 400 para um CNPJ inválido, 429 se a cota acabou). Se o Excel pedir as credenciais da fonte api.prometiam.com, escolha Anônimo: a chave já segue no cabeçalho. Se ele parar com uma mensagem Formula.Firewall ou de nível de privacidade, dê à pasta de trabalho e a api.prometiam.com o mesmo nível de privacidade, como explica a página da Microsoft sobre o firewall de privacidade de dados do Power Query.

3. Aplique a função a uma lista de CNPJs

  • Converta o intervalo de CNPJs em tabela (Inserir > Tabela) e carregue-a no Power Query (Dados > De Tabela/Intervalo). Mantenha a coluna como Texto, para não perder zeros à esquerda nem letras.
  • Em Adicionar Coluna > Invocar Função Personalizada, escolha fnCnpj e a coluna de CNPJs.
  • Expanda a coluna de registros com o botão de setas e carregue o resultado na planilha.

Em linguagem de terminal, a consulta de cada linha é esta:

curl 'https://api.prometiam.com/functions/v1/risk-api/companies/search?country=BR&company_number=33.000.167/0001-01' \
  -H 'Authorization: Bearer rk_live_...'

Quanto custa e como não gastar à toa

Cada linha é uma consulta de 1 crédito, e atualizar a consulta repete todas as linhas. Não ative a atualização ao abrir o arquivo nem em intervalos; atualize quando a lista mudar. Para muitos CNPJs de uma vez, a API tem também a consulta em lote, descrita em consulta de CNPJ em lote.

O teste gratuito dura 14 dias e inclui 500 créditos; é preciso informar um cartão, mas nada é cobrado durante o teste. Depois, o plano Starter custa € 9,99 por mês com 1.000 créditos, o Professional € 29,99 com 10.000 e o Scale € 99,99 com 50.000; o Enterprise tem preço sob consulta. Consultar um registro de empresa custa 1 crédito, cerca de € 0,01 no Starter e a partir de € 0,002 no Scale. Os preços são públicos e o plano anual dá dois meses grátis.

O que a consulta devolve, e o que não devolve

  • Só pessoas jurídicas: o empresário individual, o MEI e as demais pessoas físicas nunca são servidos. A EIRELI é servida.
  • Sem quadro societário (QSA), sem sócios e sem administradores, e sem telefone nem e-mail de contato.
  • Sem número de IVA: o Brasil não tem um número de IVA ligado ao CNPJ, e uma busca com vat= é recusada.
  • Sem avisos de insolvência: o Brasil não é um dos dezesseis mercados de insolvência. Recuperação judicial, falência e liquidação aparecem na situação especial e no status.
  • Demonstrações financeiras apenas de companhias abertas (CVM), a partir do plano Scale; as demais empresas não têm demonstrações.
  • A atividade é a CNAE 2.3 (BR-CNAE-2.3), não a NACE, e nenhum código NACE é derivado dela.
  • Uma empresa por raiz de CNPJ, com o CNPJ da matriz; filiais, entidades sem fins lucrativos, órgãos públicos e sucursais de empresas estrangeiras não são servidos.

Os dados vêm dos arquivos de dados abertos da Receita Federal, que publica um arquivo completo por mês: a atualização é mensal, não uma consulta ao vivo.

A situação (status) é a do cadastro na última leitura mensal; quer dizer o que o cadastro registra, não que a empresa seja solvente. Para o sentido de baixada, inapta e suspensa, veja CNPJ baixado: o que significa cada situação. Para conferir só o formato, use o validador de CNPJ.

Contains data from the Cadastro Nacional da Pessoa Jurídica (CNPJ), Receita Federal do Brasil, published as open data (CC BY). Adapted by Prometiam. O exemplo foi escrito para o Power Query do Excel no Microsoft 365 para Windows: rode-o em uma linha antes de preencher a coluna inteira.

Páginas relacionadas

Criar conta · Documentação da API

O teste dura 14 dias e inclui 500 créditos. É necessário informar um cartão; nada é cobrado durante o teste e, depois, vale o plano Starter (€ 9,99 por mês), salvo cancelamento.

Perguntas frequentes

Posso guardar a chave da API em uma célula?
Não é recomendado: a célula vai junto quando a planilha é compartilhada ou impressa. O guia usa um parâmetro do Power Query, que fica dentro do arquivo mas não em uma célula; trate o arquivo como sigiloso.
Quanto custa consultar um CNPJ no Excel?
Uma consulta bem-sucedida custa 1 crédito; chamadas com erro não custam nada. O Starter custa € 9,99 por mês com 1.000 créditos, e o teste de 14 dias inclui 500 créditos, com cartão e sem cobrança durante o teste.
A consulta traz os sócios da empresa?
Não. Só há dados da empresa; o quadro societário (QSA), os sócios e os administradores não são servidos, nem telefone e e-mail.
Funciona com o CNPJ alfanumérico?
Sim. A função remove a pontuação, mantém letras e algarismos e a API aceita o formato de 14 caracteres, com letras maiúsculas ou minúsculas.
Quão atuais são os dados?
A atualização é mensal: a Receita publica um arquivo completo por mês. Uma inscrição muito recente pode levar semanas para aparecer.