top of page

API para buscar taxa selic

  • Foto do escritor: Amanda Nascimento
    Amanda Nascimento
  • há 5 dias
  • 2 min de leitura

Atualizado: há 23 horas


Este script serve para retornar via API com Python o percentual da taxca selic do banco central utilizando a biblioteca requests para conectar na API e pandas para visualização dos dados em formato de tabela.

Para executar o script você precisa de uma IDE (clique aqui), ter Python instalado na máquina (clique aqui) e instalar as bibliotecas mencionadas acima, com o pip (clique aqui). Crie uma pasta no VS Code, crie um arquivo, coloque .py no final do arquivo e cole o script abaixo.


import pandas as pd
import requests
from datetime import datetime, timedelta

# Código da série da SELIC (ao ano)
codigo_serie = 1178

# Intervalo: hoje até 4 anos atrás
#Se quiser puxar mais anos ou menos anos basta alterar a multiplicacao x 365
data_final = datetime.today().strftime('%d/%m/%Y')
data_inicial = (datetime.today() - timedelta(days=4*365)).strftime('%d/%m/%Y')

# URL da API
url = f"https://api.bcb.gov.br/dados/serie/bcdata.sgs.{codigo_serie}/dados?formato=json&dataInicial={data_inicial}&dataFinal={data_final}"

# Requisição
resposta = requests.get(url)
dados = resposta.json()

# DataFrame
df = pd.DataFrame(dados)
df['data'] = pd.to_datetime(df['data'], dayfirst=True)
df['valor'] = df['valor'].astype(float)
df = df.sort_values('data').reset_index(drop=True)

# Formata a coluna 'data' como dd/mm/yyyy
df['data'] = df['data'].dt.strftime('%d/%m/%Y')


# Mostra todas as linhas no console
pd.set_option('display.max_rows', None)

# Exibe o DataFrame completo
print(df)



API para buscar taxa selic e carregar os dados dentro de uma tabela SQL Server



No SQL Server, precisamos criar a estrutura da tabela para receber os dados


No SQL Server precisamos criar uma procedure para que python possa executar esta procedure.



No VS Code, precisa instalar a biblioteca pandas, requests e pyodbc, clique aqui para saber mais.

Execute o script abaixo em um arquivo python .py


Não esqueça de alterar em SERVER= o nome do seu computador, o nome da database.

O login esta com autenticação via windows. Se o seu login for via SQL Server, na linha abaixo de server, contem um comentário (#) com o script para inserir usuário e senha.


import pandas as pd
import requests
from datetime import datetime, timedelta
import pyodbc

# Códigos SGS
codigo_selic_real = 1178
codigo_selic_meta = 432

# Datas
data_final = datetime.today().strftime('%d/%m/%Y')
data_inicial = (datetime.today() - timedelta(days=4*365)).strftime('%d/%m/%Y')

def obter_dados_sgs(codigo):
    url = f"https://api.bcb.gov.br/dados/serie/bcdata.sgs.{codigo}/dados?formato=json&dataInicial={data_inicial}&dataFinal={data_final}"
    resposta = requests.get(url)
    dados = resposta.json()
    df = pd.DataFrame(dados)
    df['data'] = pd.to_datetime(df['data'], dayfirst=True)
    df['valor'] = df['valor'].astype(float)
    return df

df_selic = obter_dados_sgs(codigo_selic_real)
df_meta = obter_dados_sgs(codigo_selic_meta)
df_meta = df_meta.rename(columns={'valor': 'meta'})
df = pd.merge(df_selic, df_meta, on='data', how='left')
df = df.sort_values('data').reset_index(drop=True)

# Conexão com SQL Server
conn = pyodbc.connect(
    r'DRIVER={ODBC Driver 17 for SQL Server};SERVER=nomePc\SQLEXPRESS;DATABASE=amanda;Trusted_Connection=yes;'
)
#'DRIVER={ODBC Driver 17 for SQL Server};SERVER=nomePc\\SQLEXPRESS;DATABASE=amanda;UID=seu_usuario;PWD=sua_senha'

cursor = conn.cursor()

# Executa a procedure que limpa os dados antigos
cursor.execute("EXEC atualizar_selic")
conn.commit()

# Insere os dados atualizados
for index, row in df.iterrows():
    cursor.execute(
        "INSERT INTO selic_historico (data, valor, meta) VALUES (?, ?, ?)",
        row['data'].date(), row['valor'], row['meta']
    )

conn.commit()
cursor.close()
conn.close()

print("Dados atualizados com sucesso.")

© 2017-2025  Criado e desenvolvido por Amanda Nascimento

  • Discord
  • GitHub
  • youtube
  • LinkedIn Amanda
bottom of page