Follow the flow › Step 4 of 16 · Voting path
4. Campaign donations
People, companies' political committees (PACs), unions and parties give money to candidates. Big gifts must be reported: who gave, how much, their ZIP code, and their employer. Companies cannot give straight to federal candidates, but their PACs and employees can. This is where you can see who helps pay for a campaign.
Who holds the money or the vote here?
The candidate's campaign committee holds the money; PACs and parties hold their own.
How often does it happen?
All the time, reported to the FEC monthly or quarterly, with extra reports before each election.
Where the records come from
Federal data is the same for everyone. When you pick a state, the state and local rows are the places to look for your state. "Have now" means PSI Sci already collects it; "Planned" means we list the source but do not collect it yet.
| Level | Source | Format | How often | On PSI Sci |
|---|---|---|---|---|
| Federal | FEC: candidate totals (OpenFEC API) PSI Sci collects totals for current members and 2026 candidates | API | daily | Have now |
| Federal | FEC bulk data: individual contributions (itemized, with ZIP and employer) | bulk | weekly | Planned |
| State | State ethics / campaign finance office (example: the Texas one) Every state has one; formats differ | bulk/search | per filing period | Planned |
| County | County elections office / county clerk campaign reports Often on paper or PDF | page/PDF | per filing period | Planned |
| City | City secretary / city clerk campaign finance reports | page/PDF | per filing period | Planned |
| District | FEC data filtered to the House district (candidate office_district) | API | daily | Planned |
| ZIP | FEC individual contributions grouped by contributor ZIP | API/bulk | weekly | Planned |
See these sources as searchable records (rendered live).
See it on PSI Sci now
Variable names
| Variable | Federal | State | County | City | District | ZIP |
|---|---|---|---|---|---|---|
donation_amount | fed_donation_amount | st_donation_amount | cnty_donation_amount | cty_donation_amount | dist_donation_amount | zip_donation_amount |
donor_name | fed_donor_name | st_donor_name | cnty_donor_name | cty_donor_name | dist_donor_name | zip_donor_name |
donor_zip | fed_donor_zip | st_donor_zip | cnty_donor_zip | cty_donor_zip | dist_donor_zip | zip_donor_zip |
donor_employer | fed_donor_employer | st_donor_employer | cnty_donor_employer | cty_donor_employer | dist_donor_employer | zip_donor_employer |
donor_type | fed_donor_type | st_donor_type | cnty_donor_type | cty_donor_type | dist_donor_type | zip_donor_type |
recipient_candidate_id | recipient_candidate_id | recipient_candidate_id | recipient_candidate_id | recipient_candidate_id | recipient_candidate_id | recipient_candidate_id |
recipient_committee_id | recipient_committee_id | recipient_committee_id | recipient_committee_id | recipient_committee_id | recipient_committee_id | recipient_committee_id |
cash_on_hand | fed_cash_on_hand | st_cash_on_hand | cnty_cash_on_hand | cty_cash_on_hand | dist_cash_on_hand | zip_cash_on_hand |
IDs (like bioguide_id, bill_id, piid, zcta) have no prefix because they already say what they point to.