OpenCNPJ
API pública de busca e consulta de CNPJs do Brasil
Install / Use
/learn @Hitmasu/OpenCNPJREADME
<img src="./src/Page/assets/logo.svg" alt="OpenCNPJ" height="64" />
Projeto aberto para baixar, processar e publicar dados públicos das empresas do Brasil.
Pastas
src/ETL/Processor: ETL que baixa, processa e publica dados do CNPJ.src/ETL/Tests: testes do ETL.src/ETL/OpenCNPJ.sln: solution do ETL.src/Page: página/SPA estática para consulta dos dados publicados.src/Worker: Worker Cloudflare que lê shards publicados no R2.
Requisitos
.NET SDK 10.0+rcloneinstalado e autenticado no seu storage (ex.: Backblaze, R2, S3, Azure Storage, ...).- Espaço em disco e boa conexão (a primeira execução pode levar tempo -- dias até).
Configuração
- Ajuste
src/ETL/Processor/config.jsonse desejar mudar pastas locais, destino do storage, memória, paralelismo... - No
config.json, aponte para o Storage que deseja passando a configuração do rclone. - O downloader da Receita agora usa WebDAV no share público do SERPRO+/Nextcloud.
Layout local
downloads/YYYY-MM: zips baixados da Receita.extracted_data/YYYY-MM: arquivos extraídos para o mês.parquet_data/YYYY-MM: Parquets gerados para o mês.cnpj_shards/YYYY-MM/shards: shards locais*.ndjsone*.index.jsonantes do upload.
Os artefatos locais não são apagados automaticamente, exceto quando o pipeline é executado com --cleanup-on-success. O pipeline também não usa mais cache de hash por shard.
Execução
- Dentro de
src/ETL/Processor:dotnet run pipelinedotnet run pipeline -m YYYY-MM(opcional)dotnet run pipeline --cleanup-on-success(opcional, remove artefatos locais do dataset após sucesso)
Sem -m, o pipeline escolhe o mês mais recente publicado no share WebDAV da Receita.
Publicação
- A API publicada consome shards em
shards/{prefix}.ndjsonno R2 eshards/{prefix}.index.jsoncomo Static Asset do Worker, ondeprefixusa os 3 primeiros caracteres do CNPJ normalizado. - Cada linha do
*.ndjsonrepresenta um CNPJ e o*.index.jsonguarda offsets esparsos para leitura parcial no Worker. - O contrato de CNPJ já aceita formato alfanumérico: 12 caracteres alfanuméricos + 2 dígitos finais.
- O arquivo
info.jsoncontinua sendo publicado, agora com metadados adicionais de shard.
Contribuição
- Abra issues para discutir mudanças.
- Faça fork, crie uma branch descritiva e envie PR.
- Mantenha commits pequenos e o projeto compilando (
dotnet build).
