U.S. Senate roll-call vote intelligence: party cohesion, controversy
Daily intelligence panel of every Senate roll-call vote in the 119th Congress, 2nd session, from the keyless Senate LIS XML feed (senate.gov): vote tallies, Republican/Democratic/Independent positions with intra-party disagreement rates computed from the individual ballots, turnout against 100 seats, and a documented 0-100 controversy score (closeness of the vote, caucus dissent, party split) ranked as controversy_rank. Flags identify unanimous votes, Democrat/Republican splits, cross-partisan alignment, caucus dissent, and suspected free votes (>=1% mean disagreement, a heuristic). Caveats: only recorded roll calls appear (no voice votes); Present and Not Voting/Absent are abstentions, not dissent; vacancies may push turnout below 100%; party tallies are recomputed from the ballots. U.S. federal public domain (17 U.S.C. 105); commercial_use=yes.
- Rows
- 244
- Columns
- 41
- Source cadence
- Daily
- Last refreshed
- Sep 27, 2026
- Theme
- government
| Column | Type | Description |
|---|---|---|
| vote_id | string | Stable vote identifier: '<chamber>-<congress>-<session>/<vote number>', e.g. 'house-119-2/314'. Primary key. |
| chamber | string | Chamber of Congress: 'house' or 'senate'. |
| congress | integer | U.S. Congress number (119 for every row). |
| session | integer | Session of the Congress (2 for every row). |
| vote_number | integer | Roll-call (House) or vote (Senate) number within the session, in order of occurrence. |
| vote_date | string | Date the roll-call vote was held (ISO date). (unit: ISO date) |
| country_code | string | ISO alpha-3 country code (USA for every row). (unit: ISO 3166-1 alpha-3) |
| question_text | string | Vote question, verbatim from the upstream feed: House 'vote-question' plus 'vote-desc' (e.g. 'On Motion to Suspend the Rules and Pass — Retire through Ownership Act'); Senate 'vote_question_text' (e.g. 'On the Concurrent Resolution H.Con.Res. 89'). |
| issue | string | Associated measure, verbatim upstream: House 'legis-num' (e.g. 'S 2403'); Senate 'document_name' or 'vote_title' (e.g. 'H.Con.Res. 89'). Null when the vote has no associated measure. |
| vote_type | string | Majority requirement, verbatim upstream: House 'vote-type' (e.g. '2/3 YEA-AND-NAY'); Senate 'majority_requirement' (e.g. '1/2'). |
| result | string | Official vote outcome, verbatim upstream (e.g. 'Passed', 'Concurrent Resolution Rejected (49-50)'). |
| yea_total | integer | Ballots cast 'Yea'. |
| nay_total | integer | Ballots cast 'Nay'. |
| present_total | integer | Ballots cast 'Present' (counted as abstentions for turnout, excluded from disagreement math). |
| not_voting_total | integer | Members recorded 'Not Voting' (Senate: also those counted 'absent' in the official tally). |
| total_ballots | integer | yea_total + nay_total + present_total + not_voting_total. |
| margin_votes | integer | Absolute vote margin |yea - nay|. |
| margin_pct | float | 100 * margin_votes / (yea + nay); null when no yea/nay votes were cast. (unit: percent) |
| turnout_pct | float | 100 * total_ballots / chamber seats (435 House, 100 Senate). Vacancies can push this below 100%. (unit: percent) |
| republican_vote | string | Republican position: 'yes', 'no', 'split' (exactly tied caucus), 'didnt_vote' (no Yea/Nay ballots), or null when the party has no members on record. |
| republican_disagreement | float | Fraction of Republican Yea+Nay ballots cast against the party position (0 = full discipline); min(yea,nay)/(yea+nay) for a 'split' position, 0.0 for 'didnt_vote'. Present/Not Voting ballots excluded. (unit: fraction) |
| democratic_vote | string | Democratic position: 'yes', 'no', 'split', 'didnt_vote', or null. |
| democratic_disagreement | float | Fraction of Democratic Yea+Nay ballots cast against the party position. (unit: fraction) |
| independent_vote | string | Independent position: 'yes', 'no', 'split', 'didnt_vote', or null (the House independent group usually has no members). Senate 'ID' ballots count as Independent. |
| independent_disagreement | float | Fraction of Independent Yea+Nay ballots cast against the party position; null when the party has no members on record. (unit: fraction) |
| n_parties_yes | integer | Parties with a 'yes' position. |
| n_parties_no | integer | Parties with a 'no' position. |
| n_parties_abstain | integer | Parties with a 'didnt_vote' position (no Yea/Nay ballots); excluded from the yes/no counts. 'split' parties are counted separately (neither yes nor no). |
| n_dissenting_parties | integer | Parties with disagreement > 0 on this vote. |
| max_disagreement | float | Largest intra-party disagreement fraction on this vote. (unit: fraction) |
| max_disagreement_party | string | Column prefix of the party with the largest disagreement (null when every party voted with full discipline). |
| mean_disagreement | float | Mean intra-party disagreement across parties with members on this vote. (unit: fraction) |
| unanimous_flag | boolean | True when every party with members voted the same yes/no way (no split or abstaining parties). |
| dem_rep_split_flag | boolean | True when the Democratic and Republican positions are yes/no and oppose each other. |
| cross_partisan_flag | boolean | True when the Democratic and Republican positions are yes/no and identical. |
| dissent_flag | boolean | True when any party had intra-party disagreement > 0 on this vote. |
| free_vote_suspect_flag | boolean | Heuristic only: true when mean_disagreement >= 0.01. Congressional feeds publish no whip designations, so this is an inference, not an official label. |
| controversy_score | float | 0-100 controversy score = 100 * (0.45 * closeness + 0.35 * max_disagreement + 0.20 * party_split), where closeness = 1 - |yea-nay|/(yea+nay), and party_split = min(n_yes, n_no)/n_parties_with_yes_no_position. 0 = unanimous whipped vote; ~100 = tied vote with caucus dissent and an even party split. (unit: 0-100 score) |
| controversy_rank | integer | Rank of controversy_score (1 = most controversial; deterministic tie-break: vote_date desc, vote_number desc). Ranked within each chamber's panel. |
| provenance_url | string | Upstream URL of this vote's roll-call XML (clerk.house.gov or senate.gov). |
| row_hash | string | Deterministic 16-hex-char row hash over chamber, vote_id, date, tallies and per-party positions/disagreement (idempotency). |
First 10 sample rows — a preview, not the complete dataset.
| vote_id | chamber | congress | session | vote_number | vote_date | country_code | question_text | issue | vote_type | result | yea_total | nay_total | present_total | not_voting_total | total_ballots | margin_votes | margin_pct | turnout_pct | republican_vote | republican_disagreement | democratic_vote | democratic_disagreement | independent_vote | independent_disagreement | n_parties_yes | n_parties_no | n_parties_abstain | n_dissenting_parties | max_disagreement | max_disagreement_party | mean_disagreement | unanimous_flag | dem_rep_split_flag | cross_partisan_flag | dissent_flag | free_vote_suspect_flag | controversy_score | controversy_rank | provenance_url | row_hash |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| senate-119-2/1 | senate | 119 | 2 | 1 | 2026-01-05 | USA | On the Nomination PN12-1 | PN12-1 | 1/2 | Nomination Confirmed (50-35) | 50 | 35 | 0 | 15 | 100 | 15 | 17.647 | 100 | yes | 0.023 | no | 0.154 | split | 0.5 | 1 | 1 | 0 | 3 | 0.5 | independent | 0.226 | false | true | false | true | true | 64.56 | 4 | https://www.senate.gov/legislative/LIS/roll_call_votes/vote1192/vote_119_2_00001.xml | c2588ae7b4deec55 |
| senate-119-2/2 | senate | 119 | 2 | 2 | 2026-01-06 | USA | On the Nomination PN499-11 | PN499-11 | 1/2 | Nomination Confirmed (53-47) | 53 | 47 | 0 | 0 | 100 | 6 | 6 | 100 | yes | 0 | no | 0 | no | 0 | 1 | 2 | 0 | 0 | 0 | — | 0 | false | true | false | false | false | 48.97 | 161 | https://www.senate.gov/legislative/LIS/roll_call_votes/vote1192/vote_119_2_00002.xml | c3765ef71bb04892 |
| senate-119-2/3 | senate | 119 | 2 | 3 | 2026-01-06 | USA | On the Nomination PN373 | PN373 | 1/2 | Nomination Confirmed (52-48) | 52 | 48 | 0 | 0 | 100 | 4 | 4 | 100 | yes | 0.019 | no | 0 | no | 0 | 1 | 2 | 0 | 1 | 0.019 | republican | 0.006 | false | true | false | true | false | 50.53 | 86 | https://www.senate.gov/legislative/LIS/roll_call_votes/vote1192/vote_119_2_00003.xml | 8d084af44f816f7f |
| senate-119-2/4 | senate | 119 | 2 | 4 | 2026-01-07 | USA | On the Motion to Proceed S.J.Res. 86 | S.J.Res. 86 | 1/2 | Motion to Proceed Rejected (43-50) | 43 | 50 | 0 | 7 | 100 | 7 | 7.527 | 100 | no | 0 | yes | 0 | yes | 0 | 2 | 1 | 0 | 0 | 0 | — | 0 | false | true | false | false | false | 48.28 | 202 | https://www.senate.gov/legislative/LIS/roll_call_votes/vote1192/vote_119_2_00004.xml | 93cb9dfa7c6e0055 |
| senate-119-2/5 | senate | 119 | 2 | 5 | 2026-01-08 | USA | On the Motion to Discharge S.J.Res. 98 | S.J.Res. 98 | 1/2 | Motion to Discharge Agreed to (52-47) | 52 | 47 | 0 | 1 | 100 | 5 | 5.051 | 100 | no | 0.096 | yes | 0 | yes | 0 | 2 | 1 | 0 | 1 | 0.096 | republican | 0.032 | false | true | false | true | true | 52.76 | 41 | https://www.senate.gov/legislative/LIS/roll_call_votes/vote1192/vote_119_2_00005.xml | 2ea94f38e43de4cf |
| senate-119-2/6 | senate | 119 | 2 | 6 | 2026-01-08 | USA | On the Nomination PN615-2 | PN615-2 | 1/2 | Nomination Confirmed (53-40) | 53 | 40 | 0 | 7 | 100 | 13 | 13.978 | 100 | yes | 0 | no | 0.133 | split | 0.5 | 1 | 1 | 0 | 2 | 0.5 | independent | 0.211 | false | true | false | true | true | 66.21 | 2 | https://www.senate.gov/legislative/LIS/roll_call_votes/vote1192/vote_119_2_00006.xml | 2933086c0d02146d |
| senate-119-2/7 | senate | 119 | 2 | 7 | 2026-01-12 | USA | On Cloture on the Motion to Proceed H.R. 6938 | H.R. 6938 | 3/5 | Cloture on the Motion to Proceed Agreed to (80-13, 3/5 majority required) | 80 | 13 | 0 | 7 | 100 | 67 | 72.043 | 100 | yes | 0.064 | yes | 0.205 | split | 0.5 | 2 | 0 | 0 | 3 | 0.5 | independent | 0.256 | false | false | true | true | true | 30.08 | 226 | https://www.senate.gov/legislative/LIS/roll_call_votes/vote1192/vote_119_2_00007.xml | e90ceae1350737b1 |
| senate-119-2/8 | senate | 119 | 2 | 8 | 2026-01-13 | USA | On the Motion to Proceed S.J.Res. 84 | S.J.Res. 84 | 1/2 | Motion to Proceed Rejected (47-52) | 47 | 52 | 0 | 1 | 100 | 5 | 5.051 | 100 | no | 0 | yes | 0 | yes | 0 | 2 | 1 | 0 | 0 | 0 | — | 0 | false | true | false | false | false | 49.39 | 135 | https://www.senate.gov/legislative/LIS/roll_call_votes/vote1192/vote_119_2_00008.xml | d6c52b1f4f0b6a4b |
| senate-119-2/9 | senate | 119 | 2 | 9 | 2026-01-14 | USA | On the Point of Order S.J.Res. 98 | S.J.Res. 98 | 1/2 | Point of Order Well Taken (50-50, Vice President of the United States, voted Yea) | 50 | 50 | 0 | 0 | 100 | 0 | 0 | 100 | yes | 0.057 | no | 0 | no | 0 | 1 | 2 | 0 | 1 | 0.057 | republican | 0.019 | false | true | false | true | true | 53.65 | 23 | https://www.senate.gov/legislative/LIS/roll_call_votes/vote1192/vote_119_2_00009.xml | fc22b389a3c511f4 |
| senate-119-2/10 | senate | 119 | 2 | 10 | 2026-01-15 | USA | On the Cloture Motion H.R. 6938 | H.R. 6938 | 3/5 | Cloture Motion Agreed to (85-14, 3/5 majority required) | 85 | 14 | 0 | 1 | 100 | 71 | 71.717 | 100 | yes | 0.075 | yes | 0.205 | split | 0.5 | 2 | 0 | 0 | 3 | 0.5 | independent | 0.26 | false | false | true | true | true | 30.23 | 225 | https://www.senate.gov/legislative/LIS/roll_call_votes/vote1192/vote_119_2_00010.xml | 869acd950e762688 |
- Current
20260927T153951Z-a688a52bb35b · sha256 a688a52bb35b…
244 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/us_congress_votes/us_senate_vote_intel" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/us_congress_votes/us_senate_vote_intel").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/us_congress_votes/us_senate_vote_intel
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20260927T153951Z-a688a52bb35b and its content hash, so readers get exactly the data you used.
U.S. House Clerk + Senate LIS roll-call feeds. (2026). U.S. Senate roll-call vote intelligence: party cohesion, controversy [Data set, snapshot 20260927T153951Z-a688a52bb35b, sha256 a688a52bb35b]. Datazimuts. Retrieved 2026-09-27, from https://datazimuts.com/en/datasets/us_congress_votes/us_senate_vote_intel?snapshot=20260927T153951Z-a688a52bb35b
@misc{dz_us_congress_votes_us_senate_vote_intel_a688a52b,
title = {{U.S. Senate roll-call vote intelligence: party cohesion, controversy}},
author = {{U.S. House Clerk + Senate LIS roll-call feeds}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/us_congress_votes/us_senate_vote_intel?snapshot=20260927T153951Z-a688a52bb35b}},
note = {Snapshot 20260927T153951Z-a688a52bb35b, sha256 a688a52bb35b2c2628292f41f9594255114e2e6464a4fabe7199a636395d7a05; accessed 2026-09-27}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=us_congress_votes%2Fus_senate_vote_intel&lang=en&theme=auto&snapshot=20260927T153951Z-a688a52bb35b&x=vote_date&y=congress&agg=avg" title="U.S. Senate roll-call vote intelligence: party cohesion, controversy" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.