Monitor and research the Brazilian Senate (Senado Federal) legislative activity. Use when: (1) searching for Senate bills/matérias by type, author, keyword or year, (2) checking today's or upcoming plenary/committee agenda, (3) looking up senators by name, party or state, (4) tracking voting results (votações) in plenary or committees, (5) checking committee (comissão) schedules and composition, (6) monitoring specific bill tramitação/status, (7) researching senator speeches (discursos/apartes), (8) checking senator mandates, affiliations, academic history, (9) any question about the Senado Federal, senators, or Senate legislative process. Base URL: https://legis.senado.leg.br/dadosabertos — no auth required, supports .json and .xml suffixes.
Base URL: https://legis.senado.leg.br/dadosabertos
Swagger: https://legis.senado.leg.br/dadosabertos/api-docs/swagger-ui/index.html
No authentication required.
Format: append .json or .xml to endpoint paths.
GET /senador/lista/atual.json # all senators currently in office
GET /senador/afastados.json # senators on leave
GET /senador/lista/legislatura/{leg}.json # by legislature number (e.g. 57)
GET /senador/partidos.json # party list
GET /senador/{codigo}.json # full senator profile
GET /senador/{codigo}/mandatos.json # mandate history
GET /senador/{codigo}/filiacoes.json # party affiliations
GET /senador/{codigo}/cargos.json # positions held
GET /senador/{codigo}/comissoes.json # committee memberships
GET /senador/{codigo}/liderancas.json # leadership roles
GET /senador/{codigo}/discursos.json # speeches
?dataInicio=YYYYMMDD&dataFim=YYYYMMDD&tipoPronunciamento=
GET /senador/{codigo}/apartes.json # interjections
GET /senador/{codigo}/autorias.json # authored bills
GET /senador/{codigo}/relatorias.json # reports authored
GET /senador/{codigo}/votacoes.json # voting history
GET /senador/{codigo}/profissao.json # professional background
GET /senador/{codigo}/historicoAcademico.json
GET /senador/{codigo}/licencas.json # leave periods
GET /materia/pesquisa/lista.json
?sigla=PL # type: PL, PEC, PLS, MSF, INC, etc.
?numero=123
?ano=2026
?autor= # author name
?assunto= # subject/keyword
?tramitando=S # S=currently in progress
?codigoSituacao=
GET /materia/{codigo}.json # by internal code
GET /materia/{sigla}/{numero}/{ano}.json # e.g. /materia/PL/1234/2026.json
GET /materia/situacaoatual/{codigo}.json # current status
GET /materia/votacoes/{codigo}.json # votes on this bill
GET /materia/textos/{codigo}.json # bill texts
GET /materia/emendas/{codigo}.json # amendments
GET /materia/relatorias/{codigo}.json # rapporteurs
GET /materia/autoria/{codigo}.json # authorship
GET /materia/movimentacoes/{codigo}.json # full tramitação history
GET /materia/tramitando.json # all currently in progress
GET /materia/legislaturaatual.json # current legislature bills
GET /materia/atualizadas.json # recently updated
?numdias=7 # last N days
GET /plenario/agenda/dia/{data}.json # e.g. /plenario/agenda/dia/20260304.json
GET /plenario/agenda/mes/{data}.json # e.g. /plenario/agenda/mes/202603.json
GET /plenario/agenda/cn/{data}.json # Congresso Nacional joint session agenda
GET /plenario/resultado/{data}.json # plenary results for a date (YYYYMMDD)
GET /plenario/resultado/mes/{data}.json # monthly results (YYYYMM)
GET /plenario/lista/votacao/{dataInicio}/{dataFim}.json # votes in date range (YYYYMMDD)
GET /plenario/votacao/nominal/{ano}.json # all nominal votes in a year
GET /plenario/lista/discursos/{dataInicio}/{dataFim}.json # speeches
GET /plenario/lista/legislaturas.json
GET /plenario/legislatura/{data}.json
GET /plenario/encontro/{codigo}.json # session detail
GET /plenario/encontro/{codigo}/pauta.json # session agenda
GET /plenario/encontro/{codigo}/resultado.json
GET /plenario/encontro/{codigo}/resumo.json
GET /comissao/lista/colegiados.json # all standing committees
GET /comissao/lista/mistas.json # joint CN/Congresso committees
GET /comissao/lista/{tipo}.json # by type
GET /comissao/{codigo}.json # committee detail
GET /comissao/agenda/{dataReferencia}.json # YYYYMMDD
GET /comissao/agenda/{dataInicio}/{dataFim}.json
GET /comissao/agenda/mes/{mesReferencia}.json # YYYYMM
GET /comissao/agenda/atual/iCal # iCal feed
GET /comissao/reuniao/{codigoReuniao}.json
GET /comissao/reuniao/notas/{codigoReuniao}.json
GET /composicao/comissao/{codigo}.json # membership
GET /composicao/comissao/resumida/mista/{codigo}/{dataInicio}/{dataFim}.json
GET /votacaoComissao/comissao/{siglaComissao}.json
GET /votacaoComissao/materia/{sigla}/{numero}/{ano}.json
GET /votacaoComissao/parlamentar/{codigo}.json
GET /votacao.json
?dataInicio=YYYYMMDD&dataFim=YYYYMMDD
?codigoSessao=
GET /composicao/mesaSF.json # Senate presiding board
GET /composicao/mesaCN.json # CN presiding board
GET /composicao/lideranca.json # leadership
GET /composicao/lista/liderancaSF.json
GET /composicao/lista/liderancaCN.json
GET /composicao/lista/partidos.json
GET /composicao/lista/blocos.json
GET /composicao/bloco/{codigo}.json
GET /autor/lista/atual.json
GET /autor/tiposAutor.json
GET /legislacao/lista.json
?tipo=&ano=&numero=
GET /legislacao/{codigo}.json
GET /legislacao/urn.json?urn={urn}
GET /taquigrafia/notas/sessao/{idSessao}.json
GET /taquigrafia/notas/reuniao/{idReuniao}.json
GET /taquigrafia/videos/sessao/{idSessao}.json
GET /taquigrafia/videos/reuniao/{idReuniao}.json
GET /discurso/texto-integral/{codigoPronunciamento}.json
GET /discurso/texto-binario/{codigoPronunciamento}.json
DATE=$(date +%Y%m%d)
curl "https://legis.senado.leg.br/dadosabertos/plenario/agenda/dia/$DATE.json"
curl "https://legis.senado.leg.br/dadosabertos/senador/lista/atual.json" | \
python3 -c "
import json,sys
data = json.load(sys.stdin)
senators = data['ListaParlamentarEmExercicio']['Parlamentares']['Parlamentar']
for s in senators:
name = s['IdentificacaoParlamentar']['NomeParlamentar']
if 'Pontes' in name:
print(json.dumps(s, ensure_ascii=False, indent=2))
"
curl "https://legis.senado.leg.br/dadosabertos/materia/pesquisa/lista.json?sigla=PL&ano=2026&tramitando=S&assunto=transporte"
START=$(date -d '7 days ago' +%Y%m%d)
END=$(date +%Y%m%d)
curl "https://legis.senado.leg.br/dadosabertos/plenario/lista/votacao/$START/$END.json"
MONTH=$(date +%Y%m)
curl "https://legis.senado.leg.br/dadosabertos/comissao/agenda/mes/$MONTH.json"
# By sigla/number/year:
curl "https://legis.senado.leg.br/dadosabertos/materia/movimentacoes/{codigo}.json"
YYYYMMDD; senator speeches use YYYYMMDD; materia pesquisa uses YYYY/senador/lista/atual.json/materia/pesquisa/lista.json results/materia/{sigla}/{numero}/{ano} is deprecated since 2025; prefer /processo or /materia/pesquisa/lista/comissao/agenda/atual/iCalreferences/api-endpoints.mdYou can use the async Python client for programmatic access:
import asyncio
from senado_client import get_senado_client
async def main():
client = get_senado_client()
# Listar senadores atuais
senators = await client.lista_senadores_atuais()
# Buscar por nome
resultado = await client.buscar_senador_por_nome("Bolsonaro")
# Pesquisar matérias
materias = await client.pesquisar_materia(sigla="PL", ano=2026)
# Votações da semana
from datetime import date, timedelta
votacoes = await client.get_votacoes_periodo(
date.today() - timedelta(days=7),
date.today()
)
await client.close()
asyncio.run(main())
Requires: pip install httpx