Esta API foi desenvolvida para o projeto do site Casa dos Dados, que tem como objetivo facilitar o acesso a dados públicos através de endpoints RESTful. A API faz uso do framework FastAPI e utiliza do RPA ( Robotic Process Automation) para realizar a coleta de dados.
Os dados são retornados em formato JSON, e é possível realizar o download dos dados em formato Excel e armazenar no banco de dados MongoDB.
Necessário realizar cadastro no sistema para ter acesso aos endpoints. A API está com seguro com autenticação JWT.
Antes de começar você vai precisar ter instalado em sua máquina as seguintes ferramentas:
- Você instalar o versão mais recente do Python, estou utilizando a 3.11.
- Você precisa instalar o MongoDB para armazenar os dados ou utilizar o MongoDB Atlas.
- Você precisa instalar o PyCharm para desenvolver o projeto.
- Ter instalado o Git para clonar o projeto.
Com tudo instalado, você pode seguir os passos abaixo:
- Clone este repositório
$ git clone https://github.com/matheus-feu/api_casa_dados.git- Acesse a pasta do projeto no terminal/cmd
$ cd api_casa_dados- Crie um ambiente virtual com o Python
$ python -m venv venv- Ative o ambiente virtual
$ venv\Scripts\activate- Instale as dependências
$ pip install -r requirements.txtOu caso esteja utilizando poetry igual a mim, basta rodar o comando abaixo:
$ poetry install$ poetry shell- Crie um arquivo
.envna raiz do projeto e adicione as variáveis de ambiente que estão no arquivo.env.example
$ touch .envEste endpoint permite realizar uma pesquisa básica de dados de uma empresa. Onde é necessário informar o CNPJ da empresa, que irá retornar os dados da empresa e os dados dos sócios.
O endpoint retorna os dados na seguinte estrutura:
{
"result": {}
}Onde result é um dicionário com os dados da empresa e o quadro societário.
POST /api/v1/scraping_data/basic_search
cnpj: O CNPJ da empresa que deseja consultar.
POST /api/v1/scraping_data/basic_search
Content-Type: application/json{
"cnpj": "00000000000000"
}Este endpoint permite realizar uma pesquisa avançada de dados de uma empresa.
Os parâmetros são opcionais, e a quantidade de páginas é limitada a 50. Caso deseje quantas páginas sejam retornadas,
basta passar o
parâmetro qnt_pages com o valor desejado, irá avaliar a quantidade de resultados com a quantidade de páginas e trazer
o valor menor.
Ao enviar cada parâmetro, irá preencher o campo de pesquisa com o valor informado.
O endpoint retorna os dados na seguinte estrutura:
{
"results": [
{}
],
"num_results": "string",
"qnt_pages": 0
}Onde results é uma lista de dicionários com os dados da empresa, num_results é a quantidade de resultados
encontrados e qnt_pages é a quantidade de páginas retornadas.
POST /api/v1/scraping_data/advanced_search
cep: O CEP da empresa que deseja consultar.city: A cidade da empresa que deseja consultar.cnae: O CNAE da empresa que deseja consultar.date_from: A data inicial da empresa que deseja consultar.date_to: A data final da empresa que deseja consultar.ddd: O DDD da empresa que deseja consultar.legal_nature: A natureza jurídica da empresa que deseja consultar.neighborhood: O bairro da empresa que deseja consultar.qnt_pages: A quantidade de páginas que deseja retornar, máximo de 50.share_capital_from: O capital social inicial da empresa que deseja consultar.share_capital_to: O capital social final da empresa que deseja consultar.situation: A situação da empresa que deseja consultar.social_reason: A razão social da empresa que deseja consultar.state: O estado da empresa que deseja consultar.
POST /api/v1/scraping_data/advanced_search
Content-Type: application/json{
"cep": "04117091",
"city": "São Paulo",
"cnae": 123456,
"date_from": "2021-01-01",
"date_to": "2021-01-31",
"ddd": 11,
"legal_nature": "1015 - SOCIEDADE ANÔNIMA FECHADA",
"neighborhood": "Vila Mariana",
"qnt_pages": 1,
"share_capital_from": 1000,
"share_capital_to": 100000,
"situation": "ATIVA",
"social_reason": "Empresa Teste",
"state": "SP"
}