Skip to content

🏢 Sua API web para consulta de informações do CNPJ da Receita Federal

License

Notifications You must be signed in to change notification settings

rfesi/minha-receita

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Minha Receita

Sua API web para consulta de informações do CNPJ (Cadastro Nacional da Pessoa Jurídica) da Receita Federal.

Sobre

Histórico

Pela Lei de Acesso à Informação, os dados de CNPJ devem ser públicos e acessíveis por máquina. A Receita Federal oferece esses dados escondidos atrás de um CAPTCHA ou em formato pouco convencional (um fixed-width text file), com links lentos para download de diversos arquivos somando gigas. Isso não é acessível o suficiente.

O Turicas já baixou e converteu esses arquivos para CSV, e ainda oferece um mirror para download mais estável desses arquivos — tudo isso no socios-brasil.

Propósito

O código desse repositório faz esses dados ainda mais acessíveis:

  1. Importando autimaticamente os dados para um banco de dados PostgreSQL utilizando a rows
  2. Adicionando dados com descrições dos CNAEs (inexistente nos arquivos da Receita Federal)
  3. Fornecendo uma API web para a consulta de dados de um CNPJ

Qual a URL para acesso?

Não tem. Disponibilizo essa aplicação para que cada um rode na sua própria infraestrutura, pois:

  1. não tenho dinheiro para manter um serviço desse porte no ar
  2. não tenho interesse em desenvolver um sistema para cobrar por esse serviço

Instalação

Requisitos

  • Docker Compose
  • Cerca de 30Gb disponíveis de espaço em disco
  • Talvez seja necessário um sistema UNIX (Linux ou macOS), mas não tenho certeza pois não testei em Windows.

Download dos arquivos

Salve quatro arquivos no diretório data/ desse repositório (3 da Receita Federal, 1 do IBGE):

Receita Federal

Primeiro faço o download dos arquivos da Receita Federal convertidos para CSV com o socios-brasil e disponibilizados no Google Drive do Turicas:

  • empresa.csv.gz
  • socio.csv.gz
  • cnae-secundaria.csv.gz

IBGE

Depois, precisamos dos dados com a descrição dos CNAE (Classificação Nacional de Atividades Econômicas), já que nos dados da Receita Federal apenas temos o código númerico, sem a descrição. Acesse a página da CONCLA no IBGE e baixe a planilha Estrutura detalhada do documento CNAE 2.3 Subclasses:

Configurações

Copie o arquivo .env.sample como .env e ajuste de acordo com as suas preferências e necessidades:

  • As variáveis com o prefixo POSTGRES_ configuram os dados de acesso ao PostgreSQL que o Docker Compose sobe
  • As variáveis com o prefixo SANIC_ configuram o framework web Sanic (se o uso for em producão é extremamente recomendável configurar SANIC_DEBUG para False)

Alimente o banco de dados local

Existe um serviço nesse repositório chamado feed só para automatizar a criação das tabelas e o carregamento de dados. Ele pode demorar mais de 1h, mas funciona (lembre-se de, antes, baixar os arquivos para o diretório data/), desde que o banco de dados esteja limpo (sem tabelas ou índices) :

$ docker-compose up feed

Inicia a API web

A API web é uma aplicação super simples que pode ser inciada com:

$ docker-compose up api

Uso

API web

A API web tem apenas um endpoint (/) que somente aceita requisições tipo POST:

Caminho da URL Tipo de requisição Dados enviados Código esperado na resposta Conteúdo esperado na resposta
/ GET 405 Error: Method GET not allowed for URL /
/ POST 404 Error: CNPJ não enviado na requisição POST.
/ POST cpf=foobar 404 Error: CNPJ não enviado na requisição POST.
/ POST cnpj=foobar 404 Error: CNPJ foobar inválido.
/ POST cnpj=00000000000000 404 Error: CNPJ 00000000000000 não encontrado.
/ POST cnpj=19131243000197 200 Ver JSON de exemplo abaixo.
/ POST cnpj=19.131.243/0001-97 200 Ver JSON de exemplo abaixo.

Exemplo de requisição usando o curl:

$ curl -i -X POST -f cnpj=19131243000197 0.0.0.0:8000

Exemplo de resposta válida:

{
  "cnpj": "19131243000197",
  "identificador_matriz_filial": 1,
  "razao_social": "OPEN KNOWLEDGE BRASIL",
  "nome_fantasia": "REDE PELO CONHECIMENTO LIVRE",
  "situacao_cadastral": 2,
  "data_situacao_cadastral": "2013-10-03",
  "motivo_situacao_cadastral": 0,
  "nome_cidade_exterior": null,
  "codigo_natureza_juridica": 3999,
  "data_inicio_atividade": "2013-10-03",
  "cnae_fiscal": 9430800,
  "cnae_fiscal_descricao": "Atividades de associações de defesa de direitos sociais",
  "descricao_tipo_logradouro": "ALAMEDA",
  "logradouro": "FRANCA",
  "numero": "144",
  "complemento": "APT   34",
  "bairro": "JARDIM PAULISTA",
  "cep": 1422000,
  "uf": "SP",
  "codigo_municipio": 7107,
  "municipio": "SAO PAULO",
  "ddd_telefone_1": "11  23851939",
  "ddd_telefone_2": null,
  "ddd_fax": null,
  "qualificacao_do_responsavel": 10,
  "capital_social": 0.0,
  "porte": 5,
  "opcao_pelo_simples": false,
  "data_opcao_pelo_simples": null,
  "data_exclusao_do_simples": null,
  "opcao_pelo_mei": false,
  "situacao_especial": null,
  "data_situacao_especial": null,
  "cnaes_secundarios": [
    {
      "codigo": 9493600,
      "descricao": "Atividades de organizações associativas ligadas à cultura e à arte"
    },
    {
      "codigo": 9499500,
      "descricao": "Atividades associativas não especificadas anteriormente"
    },
    {
      "codigo": 8599699,
      "descricao": "Outras atividades de ensino não especificadas anteriormente"
    },
    {
      "codigo": 8230001,
      "descricao": "Serviços de organização de feiras, congressos, exposições e festas"
    },
    {
      "codigo": 6204000,
      "descricao": "Consultoria em tecnologia da informação"
    }
  ],
  "qsa": [
    {
      "identificador_de_socio": 2,
      "nome_socio": "NATALIA PASSOS MAZOTTE CORTEZ",
      "cnpj_cpf_do_socio": "***059967**",
      "codigo_qualificacao_socio": 10,
      "percentual_capital_social": 0,
      "data_entrada_sociedade": "2019-02-14",
      "cpf_representante_legal": null,
      "nome_representante_legal": null,
      "codigo_qualificacao_representante_legal": null
    }
  ]
}

Acesso ao banco de dados

É possível, também, conectar-se diretamente ao PostresSQL, pois o serviço expõe a porta 5432. A URI, descontando alterações no .env, seria postgres://minhareceita:minhareceita@localhost:5432/minhareceita.

Contribuindo

Escreva testes, reconstrua os containers, rode os testes e formate seu código com Black:

$ docker-compose build
$ docker-compose run --rm api pipenv run py.test
$ docker-compose run --rm api black . --check
$ docker-compose run --rm feed black . --check

Muito obrigado

Ao Turicas por todo ativismo mais o trabalho de coleta, tratamento, e carinho que faz os dados serem cada vez mais acessíveis. E ao Bruno, sem o qual nunca teríamos acesso a esses dados por menos de R$ 500 mil.

About

🏢 Sua API web para consulta de informações do CNPJ da Receita Federal

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 73.5%
  • TSQL 18.2%
  • Dockerfile 8.3%