Exemplos com cURL
Listar despesas de saúde de 2024
cURL
curl "https://api.betim.mg.gov.br/v1/despesas?ano=2024&secretaria=saude&per_page=10" \
-H "Accept: application/json"Buscar servidores da educação
cURL
curl "https://api.betim.mg.gov.br/v1/servidores?secretaria=educacao" \
-H "Accept: application/json"Licitações abertas
cURL
curl "https://api.betim.mg.gov.br/v1/licitacoes?status=aberta&modalidade=pregao" \
-H "Accept: application/json"Exemplos com Python
Análise de despesas com pandas
Python
import requests
import pandas as pd
BASE_URL = "https://api.betim.mg.gov.br/v1"
def get_despesas(ano=2024, secretaria=None):
params = {"ano": ano, "per_page": 100}
if secretaria:
params["secretaria"] = secretaria
response = requests.get(f"{BASE_URL}/despesas", params=params)
response.raise_for_status()
return response.json()
# Buscar e analisar
data = get_despesas(ano=2024, secretaria="saude")
df = pd.DataFrame(data["data"])
print(f"Total de despesas: {data['meta']['total']}")
print(f"Valor total pago: R$ {df['valor_pago'].sum():,.2f}")Download completo com paginação
Python
import requests
def get_all_pages(endpoint, **params):
"""Busca todas as páginas de um endpoint."""
results = []
page = 1
while True:
resp = requests.get(
f"https://api.betim.mg.gov.br/v1/{endpoint}",
params={"page": page, "per_page": 100, **params}
).json()
results.extend(resp["data"])
if page >= resp["meta"]["last_page"]:
break
page += 1
return results
# Baixar todos os servidores
servidores = get_all_pages("servidores")
print(f"Total: {len(servidores)} servidores")Exemplos com JavaScript
Buscar despesas com async/await e URLSearchParams
JavaScript
const BASE_URL = "https://api.betim.mg.gov.br/v1";
// Buscar despesas com async/await
async function getDespesas({ ano = 2024, secretaria, page = 1 } = {}) {
const params = new URLSearchParams({ ano, page, per_page: 20 });
if (secretaria) params.append("secretaria", secretaria);
const response = await fetch(`${BASE_URL}/despesas?${params}`);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
return response.json();
}
// Exemplo de uso
const { data, meta } = await getDespesas({ ano: 2024 });
console.log(`${meta.total} despesas encontradas`);
data.forEach(d => {
console.log(`${d.secretaria}: R$ ${d.valor_pago.toLocaleString("pt-BR")}`);
});Exemplo com R
Análise de despesas com httr2 e dplyr
R
library(httr2)
library(dplyr)
base_url <- "https://api.betim.mg.gov.br/v1"
get_despesas <- function(ano = 2024, secretaria = NULL) {
req <- request(base_url) |>
req_url_path_append("despesas") |>
req_url_query(ano = ano, per_page = 100)
if (!is.null(secretaria)) {
req <- req |> req_url_query(secretaria = secretaria)
}
resp <- req |> req_perform()
resp_body_json(resp)$data
}
# Análise
despesas <- get_despesas(ano = 2024) |> bind_rows()
despesas |>
group_by(secretaria) |>
summarise(total = sum(valor_pago)) |>
arrange(desc(total))Cenários de Uso Comum
Dashboard de Controle Social
Combine /despesas/totais + /receitas para criar painel próprio de acompanhamento fiscal
/despesas/totais/receitasMonitoramento de Contratos
Use /licitacoes + /contratos para alertas de vencimento e aditivos
/licitacoes/contratosAnálise de Pessoal
Cruze /servidores com /despesas?natureza=pessoal para análise de folha
/servidores/despesasSuporte
Precisa de ajuda com a integração?
Entre em contato pelo e-mail apis@betim.mg.gov.br e nossa equipe técnica retornará em até 2 dias úteis.
Dados fornecidos pela Prefeitura Municipal de Betim, MG — Portal da Transparência