Visão Geral
OpenCNPJ é uma API pública e gratuita para consultar dados cadastrais de empresas brasileiras por CNPJ. Informe um CNPJ válido e receba uma resposta JSON simples, pronta para uso em aplicativos, integrações e automações.
API
Estrutura da URL
A API expõe um único recurso:
GET https://api.opencnpj.org/{CNPJ}
Retorna os dados do CNPJ informado em JSON.
Parâmetros
Path {CNPJ} 14 dígitos. Formatos aceitos:
- Só números:
00000000000000 - Com pontuação completa:
00.000.000/0000-00 - Com pontos e barra (sem hífen):
00.000.000/000000
Filtro de datasets
Use datasets para escolher quais bases devem entrar na resposta. Sem filtro, a API retorna todas as bases publicadas para o CNPJ.
receitadados cadastrais da Receita Federal.cnoobras do Cadastro Nacional de Obras vinculadas ao CNPJ.rntrcregistro do transportador no RNTRC.
Consulta rápida
Exemplos
# só números curl -s https://api.opencnpj.org/00000000000000 | jq # com pontuação completa curl -s "https://api.opencnpj.org/00.000.000/0000-00" | jq # com pontos e barra (sem hífen) curl -s "https://api.opencnpj.org/00.000.000/000000" | jq # apenas dados da Receita Federal curl -s "https://api.opencnpj.org/00000000000000?datasets=receita" | jq # apenas CNO curl -s "https://api.opencnpj.org/00000000000000?datasets=cno" | jq # apenas RNTRC curl -s "https://api.opencnpj.org/00000000000000?datasets=rntrc" | jq # Receita Federal + CNO + RNTRC curl -s "https://api.opencnpj.org/00000000000000?datasets=receita,cno,rntrc" | jq
Resposta
Content-Type: application/json
Exemplo de resposta (campos podem variar):
{
"cnpj": "00000000000000",
"razao_social": "EMPRESA EXEMPLO LTDA",
"nome_fantasia": "EXEMPLO",
"situacao_cadastral": "Ativa",
"data_situacao_cadastral": "2000-01-01",
"matriz_filial": "Matriz",
"data_inicio_atividade": "2000-01-01",
"cnae_principal": "0000000",
"cnaes_secundarios": [
"0000001",
"0000002"
],
"cnaes_secundarios_count": 2,
"natureza_juridica": "Sociedade Empresária Limitada",
"logradouro": "RUA EXEMPLO",
"numero": "123",
"complemento": "SALA 1",
"bairro": "BAIRRO EXEMPLO",
"cep": "00000000",
"uf": "SP",
"municipio": "SAO PAULO",
"email": "[email protected]",
"telefones": [
{
"ddd": "11",
"numero": "900000000",
"is_fax": false
}
],
"capital_social": "1000,00",
"porte_empresa": "Microempresa (ME)",
"opcao_simples": null,
"data_opcao_simples": null,
"opcao_mei": null,
"data_opcao_mei": null,
"QSA": [
{
"nome_socio": "SOCIO PJ EXEMPLO",
"cnpj_cpf_socio": "00000000000000",
"qualificacao_socio": "Sócio Pessoa Jurídica",
"data_entrada_sociedade": "2000-01-01",
"identificador_socio": "Pessoa Jurídica",
"faixa_etaria": "Não se aplica"
},
{
"nome_socio": "SOCIA PF EXEMPLO",
"cnpj_cpf_socio": "***000000**",
"qualificacao_socio": "Administrador",
"data_entrada_sociedade": "2000-01-01",
"identificador_socio": "Pessoa Física",
"faixa_etaria": "31 a 40 anos"
}
]
}
Schema JSON
É possível ver o contrato da resposta via JSON Schema na chamada https://api.opencnpj.org/schema.
Códigos de status
- 200 CNPJ encontrado
- 404 CNPJ não encontrado
- 429 limite de requisições excedido
Autenticação e limites
- Autenticação: não requer chaves ou tokens.
- Rate limit: aceitamos picos de até 50 requisições/segundo por IP.
Disponibilidade
- API 100% estática servida na borda pela CDN da Cloudflare, com alto cache.
- Tempos típicos: MISS ~150 ms, HIT ~40 ms.
- Alta disponibilidade 24/7.
Dados
O OpenCNPJ publica múltiplas bases públicas em uma única API por CNPJ. Cada base tem atualização própria e pode ser solicitada separadamente pelo parâmetro datasets.
Bases disponíveis na API
Carregando bases publicadas…
| Base | Última atualização | Frequência de atualização | Registros | Filtro | Download |
|---|
Dataset público no BigQuery
A base cadastral da Receita Federal também está replicada em um dataset do Google BigQuery. Priorize essa opção para consultas analíticas, validação em massa e enriquecimento de leads diretamente na nuvem, sem precisar gerenciar os shards NDJSON localmente.
Código Aberto
Este projeto é totalmente aberto: código, issues e discussões estão públicos para você auditar, contribuir e reutilizar.
Bibliotecas por Linguagem
Integrações mantidas pela comunidade para facilitar o uso do OpenCNPJ em diferentes linguagens.
| Linguagem | Criador | Repositório |
|---|---|---|
| Delphi | Valter Patrick | github.com/valterpatrick/opencnpj |
| .NET | Fulvio Canducci | github.com/fulviocanducci/Canducci.OpenCnpj |
| PHP | Fulvio Canducci | github.com/fulviocanducci/php-opencnpj |
| Go | Thiago Valle | github.com/zthiagovalle/opencnpj |
| NestJS | José Marinho | github.com/jusemarinho/nestjs-opencnpj |
| Python | Gabriel Oliva | github.com/ofcoliva/opencnpj |
| Python | Gustavo Gomes | github.com/gustavogomesn/python-opencnpj |
Tem uma biblioteca em outra linguagem? Envie um PR para adicionarmos aqui.
Apoie
As doações incentivam o projeto e ajudam a manter a infraestrutura e evoluir a API.
As doações viabilizam as ações planejadas para diminuir ainda mais o tempo de resposta, aumentar a disponibilidade e manter a infraestrutura.
Perguntas e Respostas
Posso usar o serviço gratuitamente na minha empresa/serviço?
Sim. O uso é gratuito, inclusive para fins comerciais. Não oferecemos suporte dedicado.
Os dados são consultados/atualizados em tempo real?
Não. As bases são derivadas de fontes públicas e publicadas em ciclos. Consulte a tabela de bases na seção Dados acima para ver as últimas atualizações; os mesmos dados ficam disponíveis em /info.
Quanto tempo após a publicação das fontes vocês atualizam as bases?
Para a Receita Federal, em média até 2 dias após a publicação mensal. Para módulos adicionais, consulte a seção Dados, que mostra a última atualização publicada em /info.
Posso consultar massivamente os dados?
A API é pública e existe para o bem de todos. Para evitar que um mau uso prejudique outros usuários, não toleramos mais grandes volumes de consultas massivas (ex.: validação de bases inteiras sem intervalos).
Sobre limites: aceitamos picos de até 50 requisições/segundo por IP. Porém, para validação de bases ou consultas analíticas em larga escala, utilize os shards NDJSON publicados por base ou acesse nosso dataset público no BigQuery para trabalhar com a base cadastral da Receita Federal.
Caso identifiquemos validação de bases inteiras sem pausas, aplicaremos dois bloqueios temporários; se continuar, aplicaremos um bloqueio permanente. Contamos com o bom senso: validar 10 mil CNPJs é muito diferente de validar 1 milhão.
Se precisar de um fluxo automatizado para consultas em batch, utilize preferencialmente o dataset no BigQuery ou os shards NDJSON publicados por base, em vez de chamar a API individualmente.
Minha empresa tem muitas chamadas por segundo. Vocês oferecem plano pago?
Não. Todos os serviços são gratuitos. Se o uso estiver dentro do rate limit, não há problema.
O que acontece se eu ultrapassar o rate limit?
Você receberá um código HTTP 429 – Too Many Requests.
Vocês armazenam logs das consultas?
Não armazenamos logs identificáveis das consultas. Mantemos apenas métricas agregadas (quantidade de consultas e tempos de resposta) para estatísticas e melhoria contínua do serviço.
Consultei um CNPJ e não foi encontrado, mas ele existe. Por quê?
Se o CNPJ foi aberto recentemente, ele pode ainda não constar na Receita Federal publicada pelo OpenCNPJ. Se você usou filtro de datasets, verifique também se a base escolhida possui registros para esse CNPJ.