Methodology
Last updated: 2026-06-05Every number on Open America comes from a government source. The vote tallies, the bill counts, the party-unity percentages, the floor activity. Nothing on the site is generated by a model. Nothing comes from a paid vendor. If you want to verify a figure, this page tells you where it came from and how it was calculated.
Data sources
We pull from five places. Each one is official and public.
- congress.gov API (v3). Bills, sponsorship, cosponsors, committee assignments, member bios, CRS plain-English summaries, policy areas, related-bill links. Most of the corpus.
- clerk.house.gov. Live House floor activity from the FloorSummary XML feed, House roll-call votes from the EVS XML, per-representative positions, party tallies. The only public live source of per-member House vote positions.
- senate.gov LIS. Senate roll-call vote menu and the per-vote XML for each Senate roll call. Per-senator positions, party tallies, the question text. The Senate does not publish a real-time floor-narrative feed equivalent to clerk.house.gov; that gap is called out where it matters on the site.
- whitehouse.gov OMB. Statements of Administration Policy (SAPs). The White House's formal position on pending bills, surfaced on bill detail pages.
- govinfo.gov. The Daily Congressional Record archive (the full floor transcript).
How often the data refreshes
Different signals refresh at different speeds. We try to match the upstream's own cadence without hammering it. All times Eastern.
- Every 60 seconds during sessions for the live signals: clerk.house.gov's FloorSummary, the House EVS index, the Senate vote menu, and the OMB SAP listing. New House floor actions and closed Senate votes typically appear within 60 to 90 seconds of being published upstream.
- Every 5 minutes for the full pipeline: new bills, committee meetings, hearings, committee reports. This matches congress.gov's own publishing rhythm.
- Both crons short-circuit when neither chamber is in session, so weekend and recess minutes cost nothing.
- The live floor page polls a JSON endpoint every 60 seconds while the tab is open. New floor actions slide in without a reload.
How every statistic is calculated
One definition per metric. Same source on every page where the metric appears.
Bills introduced (per legislator)
Count of bills where the legislator is the sponsor, excluding amendments (which are tracked separately and ride along with the parent bill). Counts span the legislator's full congressional career, not just the current Congress.
Why exclude amendments: most amendments are riders to a bill the same legislator or a colleague already sponsored. Counting them as separate "bills introduced" would double-count the legislator's work, and produce a number that doesn't match what users see when they click into the list.
Bills cosponsored (per legislator)
Count of bills where the legislator is a cosponsor, with the same amendment exclusion.
Party unity (per legislator)
Of all the legislator's recorded Yea and Nay positions, the share where the legislator voted with their party's majority on that specific vote. "Their party's majority" means the side (Yea or Nay) that got more votes from the legislator's party on that roll call.
Independents are compared to the independent caucus rather than to D or R. Present and Not Voting positions are excluded from the denominator.
Missed votes (per legislator)
Share of roll calls during the legislator's service where they were recorded as Not Voting, out of total roll calls during their service. Legislators who joined mid-Congress aren't penalized for votes that happened before they were sworn in.
Vote tallies (Yea, Nay) on a roll call
The headline tally on a vote page is the official tally from the clerk.house.gov or senate.gov XML. We separately store every individual member's position. The two figures reconcile exactly on every Senate vote we have data for (verified on 2026-06-05 across the most recent 50 Senate roll calls, zero discrepancies). If they ever disagree, the official chamber tally is canonical and the per-member data is treated as suspect.
"Trending" and "Moving in Congress right now"
Bills with floor activity or formal legislative action in the last 48 hours, ranked by most recent action then activity count. Cached 5 minutes server-side. This is a real-time signal, not a watchlist signal.
What we don't have
Being honest about gaps is part of being trustworthy. The current ones:
- No Senate live floor narrative. The Senate doesn't publish a real-time narrative XML the way clerk.house.gov does. The /floor/ page shows Senate roll-call votes within about 5 minutes of close instead. For a vote in progress, we link to the senate.gov live stream.
- No historical pre-1989 data. Coverage runs roughly from the 101st Congress onward. Earlier records are on congress.gov but not in our ingestion.
- No state legislatures. Open America covers the U.S. Congress only. State, local, and tribal legislatures aren't in scope.
- No lobbying or campaign finance. LDA filings, FEC data, and third-party lobbying records aren't ingested. OpenSecrets and FollowTheMoney do this well; we link to them where relevant.
Errors and corrections
If a number on Open America disagrees with the upstream source (congress.gov, clerk.house.gov, senate.gov), the upstream is right and we have a bug. Report it with the page URL and the specific figure. We treat data correctness as a top priority.
Citation
Open America's data is free to cite, link, embed, and use for research, journalism, classroom work, and civic projects. Paid or unpaid. We ask for two things.
- Attribute as "Open America (openamerica.io)" and link back when the format allows.
- For figures that depend on a specific moment in time (live vote counts, as-of stats), include the date and time of your snapshot. Those change minute-to-minute during sessions.
We don't sell the data, run ads, or paywall this page. Journalists and researchers who want help citing or pulling something specific can write to hello@openamerica.io and we'll respond.
Find a number that doesn't match what the site is doing? That's a real bug. Report it.