Methodology
Every number on PaidForPolitics comes from a public source. Here's exactly where it comes from, how we process it, and what its limitations are.
The primary source for all campaign finance data. The FEC requires disclosure of all contributions over $200 to federal candidates, PACs, and party committees. We use both the FEC bulk data files (weball.txt) and the FEC API for candidate receipts and disbursements. FEC data is public domain with no restrictions on use.
Certified election results by congressional district going back to 1976. Used to calculate total votes cast per race, winner and runner-up identification, win margins, and dollar-per-vote figures. MIT Election Lab data is openly licensed for public use.
Official member data including bioguide IDs, party affiliation, state, district, and term history for all current House members and Senators. Used to build our member index and cross-reference with FEC candidate records.
119th Congress congressional district boundary data used for the district maps on each representative's page and the state choropleth map. Boundaries are fetched in real time from the Census Bureau's TIGER/Web mapping service.
OpenSecrets is a nonpartisan nonprofit that has tracked money in U.S. politics since 1983. They maintain the most comprehensive industry classification system for campaign contributions, built from 30+ years of expert analysis of FEC filings. We link to OpenSecrets for full donor industry breakdowns, PAC classifications, and individual donor data for both House members and Senators.
Source for the $1.9 billion dark money figure cited on the homepage, from their 2024 federal election dark money analysis. Used for contextual statistics only — not integrated into per-member data.
Dollar Per Vote is calculated by dividing total campaign disbursements (money spent) by the total number of votes cast in the general election for that seat.
Dollar Per Vote = Total Disbursements ÷ Total Votes Cast
Disbursement data comes from FEC candidate committee filings via the FEC bulk data file and API. Total receipts (money raised) are used as the primary fundraising figure — this includes direct contributions plus any transfers from joint fundraising committees, which more accurately reflects a candidate's total fundraising. Vote totals come from MIT Election Lab certified results.
Dollar Per Vote is calculated separately for the winning candidate and the runner-up where FEC data is available. The winner's DPV reflects their own campaign spending. The runner-up's DPV is calculated from their disbursements divided by the same total votes cast in the race.
State and national averages are calculated from all contested House races in the 2024 election cycle. Percentile rankings compare a district's dollar-per-vote figure against all other House districts in that cycle.
Dollar Per Vote is not currently calculated for Senate races, where statewide vote totals and multi-cycle terms make direct comparisons less meaningful.
Runner-up candidate spending data is sourced from the FEC bulk candidate summary file (weball.txt), which covers all federally registered House candidates. We match runner-up candidates identified in MIT Election Lab results to the FEC bulk file by state, congressional district, and last name.
Opponent data is available for approximately 77% of House districts. Gaps occur when a runner-up candidate did not register a federal campaign committee (common in heavily non-competitive races where challengers run with minimal infrastructure), or when name formatting differences between the MIT election data and FEC registration prevent a reliable match.
Where opponent data is unavailable, the district page notes the data gap rather than displaying a zero or estimate.
For detailed donor industry breakdowns, named PAC contributions, and individual donor data, we direct users to OpenSecrets. OpenSecrets classifies every FEC contribution by industry using a standardized taxonomy built and maintained by researchers over 30+ years — far more accurate and comprehensive than automated employer-name matching.
Each House member and Senator page on PaidForPolitics includes a direct link to that member's OpenSecrets profile for full donor breakdown data.
Senator profiles show total raised and total spent for each senator's most recent election cycle, sourced from FEC bulk data and the FEC API. Senate races are statewide and involve much larger fundraising totals than House races — the 2024 cycle saw several Senate candidates raise over $50 million.
Dollar Per Vote is not calculated for Senate races given the complexity of multi-year terms and statewide vote totals. Last election year for each senator is determined from their FEC candidate record's election_years field, which reflects when they actually appeared on the ballot.
Each House district page shows results from the five most recent election cycles (2014–2022) in addition to the current 2024 data. These historical results come from MIT Election Lab certified results and show winner, runner-up, party, total votes cast, and win margin for each cycle.
Candidate names in historical results are presented as recorded in the MIT Election Lab data. Some names may include quotation marks or formatting artifacts from the original data source which we normalize on display.
All House finance data reflects the 2024 election cycle (January 2023 – December 2024) as reported to the FEC. Senate finance data reflects each senator's most recent election cycle — 2024, 2022, or 2020 depending on their Senate class. The bulk data snapshot used for candidate totals and opponent matching was downloaded in early 2025 and reflects filings through December 31, 2024.
2026 cycle data will be added as candidates file quarterly reports with the FEC. District maps reflect 119th Congress boundaries as published by the Census Bureau TIGER/Web service and are fetched in real time.
ZIP codes are postal delivery routes, not geographic areas. A single ZIP code may span multiple congressional districts. When this occurs we assign the district with the greatest geographic overlap with that ZIP code. We recommend users verify their district assignment if they are near a district boundary.
Opponent spending data is unavailable for approximately 23% of House districts, primarily in heavily non-competitive races where challengers ran without registering a federal campaign committee.
Four Senate seats are currently held by appointees with no prior Senate campaign history — these senators have no FEC campaign finance data available.
Presidential race data is not yet available on PaidForPolitics. We plan to add 2024 presidential campaign finance data in a future update.
If you believe a data point is incorrect or have a question about our methodology, contact us at hello@paidforpolitics.com. We take data accuracy seriously and will investigate all reported discrepancies.