50mais1

Open data: TSE election results by state and municipality

Every table behind the site, normalized from TSE files, in CSV and Parquet.

License

CC-BY 4.0 — TSE data (Electoral Data Repository), IBGE boundaries. You may copy, redistribute and adapt, including commercially, as long as you credit the source.

Suggested attribution: “50mais1 (50mais1.com.br), from TSE data and IBGE boundaries, CC-BY 4.0”. The bloc taxonomy is editorial and also CC-BY; the site code is closed.

Export generated on 10/25/2026, 10:04 PM GMT-3 · sources and original TSE files

Files

TableFormats
candidates
electorate
lean
LICENSE.txt
parties
polls
results_mun
results_uf
results
taxonomy/candidates.yaml
taxonomy/parties.yaml
units

UTF-8, comma separated, dot decimal. Parquet files share the same column names.

Data dictionary

Percentages are of valid votes (0–100). margin = right_pct − left_pct in percentage points: positive = right bloc ahead. unit_id: “UF:SP” for a state, “BR” national, “ZZ” abroad, “MUN:{TSE code}” for a municipality.

results_ufOne row per (year, round, state) with bloc totals
ColumnTypeDescription
yearintElection year
roundintRound (1 or 2)
ufstrState, ZZ (abroad) or BR (national total)
registered, turnout, abstentionintRegistered voters, turnout and abstention
blank, null, validintBlank, null and valid nominal votes for president
left_votes, right_votesintVotes summed by bloc
left_pct, right_pctfloat% of valid votes by bloc
marginfloatright_pct − left_pct (pts)
winner_blocstrleft or right
resultsVotes per candidate and unit (municipality, state, ZZ, BR)
ColumnTypeDescription
year, roundintYear and round
unit_idstrUF:SP, BR, ZZ or MUN:{TSE code}
candidate_idstr{year}-{number}, e.g. 2022-13
party_codestrParty code as printed by the TSE that year
votesintValid nominal votes
electorateElectorate and vote totals per unit and round
ColumnTypeDescription
year, round, unit_idKey
registered, turnout, abstentionintRegistered, turnout, abstention
blank, null, validintBlank, null and valid
unitsGeographic units
ColumnTypeDescription
unit_idstrIdentifier
ufstrState code
ibge_code, tse_codeintIBGE (7-digit for municipalities) and TSE codes
name, regionstrName and region (N, NE, CO, SE, S, EX)
is_municipalityboolTrue for municipalities
candidatesPresidential candidates with bloc and strength
ColumnTypeDescription
id, year, nrIdentifier, year and ballot number
name, party_codestrBallot name and party
blocstrleft or right (editorial taxonomy, see Methodology)
strengthint1–3: how clearly the candidate belongs to the bloc
partiesParties by era, with bloc and strength
ColumnTypeDescription
code, namestrCode and name
bloc, strengthBloc and strength (1–3)
valid_from, valid_tointEra in which the classification applies (empty valid_to = current)
pollsPolls registered with the TSE for the 2026 runoff
ColumnTypeDescription
id, institute, tse_registration, source_urlstrIdentification and source
field_start, field_end, nField dates and sample size
lula_pct, flavio_pct, undecided_pct, blank_null_pctfloatPublished percentages
populationstrtotal or valid: base of the percentages
verifiedboolRow checked against the original release
leanLean index by state
ColumnTypeDescription
uf, name, regionstrUnit
lean_indexfloatWeighted mean (state margin − national margin) over the last 4 runoffs; positive = right
ratingstrsolid/likely/lean _left|_right or tossup
electorate_sharefloat% of national valid votes
is_swingboolSwing state