Download every Texas House vote from 2025
Every recorded floor vote of the 89th Texas Legislature's regular session, with each member's position, as plain JSON. Free, no sign-up, and dedicated to the public domain under CC0.
The files
- votes_89R.json 1.6 MB
All 3,546 recorded House votes. Every recorded floor vote of the Texas House in the 2025 regular session: 3,546 roll calls and 488,969 individual positions across 150 members. 3,454 are reconciled against the House Journal and 92 come from the Open States scrape, and each roll call says which. - members_89R.json 32 KB
Members and their votes on the 67 selected items. The 149 sitting members, with district and party, and how each voted on the 67 items the site asks about. - quiz_89R.json 102 KB
The 67 items the site asks about. The selected roll calls with the published selection rule, plain-language summaries, partisan valences, and Governor and Lieutenant Governor actions. Spanish summaries are in quiz_89R.es.json (35 KB). - zips_89R.json 51 KB
ZIP code to Texas House district crosswalk. 1,992 Texas ZIP codes mapped to House districts through 2020 Census blocks, with the share of each ZIP's people in every district it touches.
How a vote is encoded
items[].v is one character per entry of memberOrder, in that order: y = yea, n = nay, . = no vote recorded. A dot is an absence, not a neutral position.
rYea and dYea are each caucus’s yea share among its members who cast a yea or a nay; members with no recorded vote are excluded from the denominator. valence is rYea minus dYea, so +1 is a party-line Republican yea and -1 a party-line Democratic yea. Measured, not judged.
What the files do not contain
- Bill captions are deliberately absent. They live in the LegiScan CSVs rather than in the ingested corpus this was built from, and the project will not paraphrase the record. Join titles on billId from LegiScan or Open States.
- 103 items have fewer named positions than the chamber recorded, always short and never over. 92 of them are scrape-sourced, which is every scrape-sourced item in the file, against 11 of the 3454 reconciled against the Journal. Compare vYeas and vNays against yeas and nays per item to see the gap. The cause is Open States truncating surnames by one character, so a vote is recorded but cannot be attributed to a person. Use yeas and nays for what the chamber did, and v for who did it.
- Nate Schatzline (District 93) left the House on 29 July 2026. The 3,283 votes cast in that seat are kept in votes_89R.json with a null name and district, and members_89R.json names the member under "retired".
Where it comes from
Open States roll calls, reconciled against the official Texas House Journal. items[].src says which source a given vote came from: journal or scrape. Open States loses 5.27% of 89R votes to surnames truncated by one character, which is what the reconciliation exists to repair. See DATA_PIPELINE.md.
The code that builds every file is public, with the method written up alongside it: how the votes are ingested, reconciled and selected, how the quiz scores an answer, and how ZIP codes are mapped to districts, with its known error. The repository is MIT licensed.
Licence and citation
Roll-call votes and chamber totals are public record. CC0 covers this compilation and the derived fields. Credit is appreciated and not required:
Arras, Marco. Texas House of Representatives recorded floor votes, 89th Legislature (2025). https://rightnleft.com/open-data. CC0 1.0.
The same data, as pages
- Every vote in three charts: how often the parties agreed, and who broke with their own
- Every Texas House district, with how its member voted
- SB 2 Education savings accounts, every member's vote
- SB 8 Immigration enforcement, every member's vote
- SB 10 Ten Commandments in classrooms, every member's vote
- SB 3 THC ban, every member's vote
- SB 14 Regulatory review, every member's vote
- SB 6 Electric grid and large power users, every member's vote
- SB 5 Dementia research institute, every member's vote
Who made this. Marco Arras, a Texas resident. I donate to the Democratic Party, and I say so before anything else rather than in a footnote. The rule that picks which votes appear is published and runs identically on both caucuses, and every vote and count is in the files above.