O Tesouro Transparente é a plataforma de dados abertos da Secretaria do Tesouro Nacional (STN), vinculada ao Ministério da Fazenda. Disponibiliza informações sobre finanças públicas de todos os entes federativos brasileiros (União, estados e municípios), incluindo:
Tesouro Direto — dados sobre títulos públicos vendidos a pessoas físicas
Dívida Pública Federal — estoque, composição e perfil da dívida
SICONFI — dados contábeis de estados e municípios (RREO, RGF, DCA)
Transferências — repasses constitucionais e voluntários a entes subnacionais
Resultado Primário — indicadores fiscais do Governo Federal
A plataforma oferece APIs REST públicas, sem necessidade de autenticação, que permitem acesso programático a todos esses conjuntos de dados.
import requestsimport pandas as pdBASE_TD = "https://apidatalake.tesouro.gov.br/ords/sadipem/td"def consultar_precos_tesouro_direto(): """ Obtém os preços e taxas atuais dos títulos do Tesouro Direto. Returns: DataFrame com preços e taxas dos títulos """ url = f"{BASE_TD}/precos-titulos" response = requests.get(url) response.raise_for_status() dados = response.json() # A resposta geralmente vem em formato {"items": [...]} registros = dados.get("items", dados) return pd.DataFrame(registros)df_precos = consultar_precos_tesouro_direto()print(df_precos.head())
BASE_TT = "https://apidatalake.tesouro.gov.br/ords/sadipem/tt"def consultar_rreo(codigo_ibge: str, exercicio: int): """ Consulta o Relatório Resumido de Execução Orçamentária (RREO) de um ente federativo. Args: codigo_ibge: Código IBGE do município ou estado exercicio: Ano do exercício fiscal Returns: DataFrame com dados do RREO """ url = f"{BASE_TT}/rreo" params = { "id_ente": codigo_ibge, "an_exercicio": exercicio, } response = requests.get(url, params=params) response.raise_for_status() dados = response.json() registros = dados.get("items", dados) return pd.DataFrame(registros)# Exemplo: RREO de São Paulo (3550308), exercício 2023df_rreo = consultar_rreo("3550308", 2023)print(f"Registros: {len(df_rreo)}")print(df_rreo.head())
def consultar_fpm(uf: str = None, exercicio: int = None): """ Consulta valores do Fundo de Participação dos Municípios. Args: uf: Sigla da UF (opcional) exercicio: Ano do exercício (opcional) Returns: DataFrame com dados do FPM """ url = f"{BASE_TT}/fpm" params = {} if uf: params["no_uf"] = uf if exercicio: params["an_exercicio"] = exercicio response = requests.get(url, params=params) response.raise_for_status() dados = response.json() registros = dados.get("items", dados) return pd.DataFrame(registros)# FPM para municípios de São Paulo em 2023df_fpm = consultar_fpm(uf="SAO PAULO", exercicio=2023)print(f"Municípios: {len(df_fpm)}")print(df_fpm.head())