Skip to content

About Badger Politics

Badger Politics is an independent project, not affiliated with the State of Wisconsin. It exists so that anyone in Wisconsin can answer, in plain words: what is my Legislature doing, how did my lawmakers vote, and what died quietly without a hearing?

Everything is built from official public records, last checked Sep 15, 2026. The Legislature's newest recorded action is from Aug 18, 2026. Between floorperiods those two dates drift apart, because we keep checking while the Legislature rests.

There are no accounts, no tracking cookies and no ads. Find your lawmakers keeps your district in your browser only, and your address is never stored. The site and the code that builds it are open source on GitHub, and the data is free to reuse.

Where every number comes from

Each kind of record on this site has one official source, and every page links back to it so you can check our work.

Bills, votes and hearings

Read nightly from the Legislature's own site, docs.legis.wisconsin.gov, using the open-source Open States scrapers, with our fixes contributed back. Coverage runs from the 2009 session to today. A few older sessions are marked “partial data” where the Legislature's records don't include individual roll calls.

  • Every vote is matched against a roster of who actually served that session. If a name on a roll call could mean two people, the nightly build stops and a person resolves it. We never guess.
  • Some official roll calls give only a count of members who didn't vote, without their names. We show the count and never invent the names.
  • “Never got a hearing” means what it says: the bill died at the end of a session with no public hearing on record. The committee and chair shown come from the bill's own history.

State lawmakers

Names, districts, parties, photos and committee assignments come from docs.legis.wisconsin.gov. Attendance and “votes with their party” figures are worked out from the roll calls above, and each page says what its numbers count.

Elections and districts

Candidate lists come from the Wisconsin Elections Commission's ballot access report, and past results from its certified canvass reports. District boundaries are the Legislative Technology Services Bureau's official 2024 files. When you look up your address, it goes to the U.S. Census geocoder once, only to get coordinates, and is never stored. It isn't sent anywhere else.

Automated election-report updates were paused on September 7, 2026. Candidate information reflects our archived reports; check with the Elections Commission for later changes to the ballot.

Campaign money

Reported receipts come from committees' own filings with the Wisconsin Ethics Commission, through campaignfinance.wi.gov, covering electronic records from 2008 to today. Some things to know when reading them:

  • Corporations can't contribute to Wisconsin candidates. Money reaching a lawmaker's committee comes from individual people, from political committees (PACs, party committees, other candidates), and from conduits that pass along individual contributions.
  • “Committees that gave the most” lists political committees by their own filings. A PAC's name may mention a company or industry, but the money is the PAC's, raised from its contributors, not a corporate payment.
  • “What individual donors do for a living” adds up what donors themselves reported as their occupation. It says nothing about any employer directing or endorsing the contribution.
  • Totals follow the person: they cover all of a lawmaker's candidate committees, including committees for runs at other offices.
  • The current two-year reporting period is shown first, including collected receipts from before taking office. Earlier periods and all available history stay available. The optional service filter counts only receipts within recorded terms in the Legislature, leaving out gaps between terms; those dates come from service records, not floor votes. Electronic records begin in July 2008, and missing filings and amendments can leave gaps.
  • Receipts are broader than donations. They can include loans, transfers, refunds and in-kind support. Receipts minus spending isn't cash on hand. The latest transaction date describes the collected records; it isn't proof that every filing is present.
  • Committees are linked to lawmakers only when the link is certain. Where we haven't verified a committee yet, the page says the data isn't linked. It never shows a false zero.
  • Donors are grouped by the state's own filer identifiers, not by name, so two different people with the same name are never combined. Pages name the individuals who gave the most, as the public filings do; the JSON API and bulk downloads show individual donors only in totals.
  • Organization logos appear only for committees whose sponsoring organization we've verified by hand, and the build checks the organization's own website again before fetching each logo. A logo never replaces the committee's registered name.

Members of Congress

Roll calls come from the U.S. Senate and the House Clerk. Each vote is matched to a member by the chamber's own member ID, never by name, and a vote whose yes and no counts don't match the positions recorded stops the update. Federal campaign money comes from the Federal Election Commission's summaries, with the date each was retrieved.

City councils

Votes for Appleton, Green Bay, Madison, Milwaukee, Waukesha and West Allis come from each city's own legislative system, and each one links to the city's own record of the meeting where it was cast. Members are matched by the system's own member IDs or by verified full names. Only votes the clerk recorded member by member appear; a voice vote names no one, so it isn't counted for anyone. Each council's page says what its records cover.

Lobbying

Eye on Lobbying registrations aren't shown or included in downloads, because the source disallows automated collection. They may return once an approved source of this data is available.

Pay

Salaries are set by statute and are the same for every member. Per diem rates come from each chamber's rules. What individual members actually claim is released by the chief clerks on request once a year, and is labeled that way where it's shown.

Checks the data must pass

  • Integrity checks gate every update. If any check fails, the site simply isn't updated that night. Checks are never loosened to make a run pass.
  • Counts are reconciled against the source. Every month of campaign finance records must match the state system's own record count exactly before it's accepted.
  • History is checked again every night. Committees can amend old filings, so a rotating sample of past months is fetched again each night and refreshed if the official record changed.
  • An independent source checks our math. We compare each lawmaker's totals against the National Institute on Money in State Politics (followthemoney.org), which processes the same filings separately. Their data is used only for checking and isn't republished here.
  • The site itself is tested. Every build runs automated accessibility scans and functional checks, from search quality to district lookup, before it ships.

What we won't do

  • We never infer. If a link between records can't be established from official identifiers, the page says so instead of guessing. Gaps are labeled as gaps.
  • We don't put donations next to votes or suggest that money caused a vote. Both are shown, on separate pages, and you can draw your own conclusions.
  • We don't track you. Analytics is a single privacy-respecting counter (GoatCounter) with no cookies. The same counter runs in our bill and lawmaker cards embedded on other sites, so they need no cookie notice either. Personalization lives in your browser and nowhere else.

Contact and corrections

Accuracy is the whole point. Every vote and bill page links to the official record. If anything here disagrees with it, please open an issue. Corrections are treated as the highest-priority bugs.

Source operators can use the same issue tracker to ask for changes to automated access, report a problem or suggest a preferred data source.