Skip to content

🗳️ fec

Federal Election Commission campaign finance data. Contains candidate and committee registrations, itemized contributions, expenditures, and inter-committee transfers. Covers all federal elections (President, Senate, House) with data from 1980 to present. Bulk downloads are pipe-delimited files with no headers.

14 datasets · 232 columns

candidates · table

All federal candidates registered with the FEC. Includes candidate ID, name, party, office sought, state, district, incumbent/challenger status, and principal campaign committee. One record per candidate per election cycle. Source: cn{YY}.zip bulk download (pipe-delimited, no header).

Column Type Null Description
candidate_id string no FEC candidate ID (e.g., H0AL01234, S0AK00567, P80000722)
candidate_name string yes Candidate name (LAST, FIRST MIDDLE)
party string yes Party affiliation code (DEM, REP, LIB, GRN, IND, etc.)
office string yes Office sought (H=House, S=Senate, P=President)
state string yes Two-letter state abbreviation (US postal code)
district string yes Congressional district number (00 for at-large/Senate/President)
cd_fips string yes Enriched 4-digit congressional-district FIPS (state_fips + zero-padded district) — FK to geo.congressional_districts.cd_fips. Computed at materialization for House candidates only (office=H); NULL for Senate/President/unmapped jurisdictions. Mirrors the candidate_district_profile view join logic.
incumbent_challenger string yes Incumbent/challenger/open status (I, C, O)
candidate_status string yes Candidate status (C=statutory candidate, F=statutory candidate for future, N=not yet, P=statutory candidate in prior)
principal_committee_id string yes Principal campaign committee ID
street1 string yes Mailing address street line 1
street2 string yes Mailing address street line 2
city string yes Mailing address city
state_address string yes Mailing address state
zip string yes Mailing address ZIP code
election_year integer yes Election year (even-numbered)

committees · table

All political committees registered with the FEC. Includes PACs, party committees, campaign committees, and Super PACs. Contains committee type, designation, connected organization, treasurer, and filing frequency. Source: cm{YY}.zip bulk download (pipe-delimited, no header). To reach a committee's connected organization FROM another schema rather than by name, join ref.canonical_org_entity on fec_committee_id = committee_id — that table carries one foreign key per source, so the org's LEI/SEC CIK and its committee_id sit in the same row and the join is exact. Matching connected_org_name as text finds the wrong entities and misses orgs filing under a differently-worded name.

Column Type Null Description
committee_id string no FEC committee ID (e.g., C00000042)
committee_name string yes Committee name
treasurer_name string yes Committee treasurer name
street1 string yes Committee street address line 1
street2 string yes Committee street address line 2
city string yes Committee city
state string yes Committee state (two-letter postal)
zip string yes Committee ZIP code
designation string yes Committee designation: A=Authorized by candidate, B=Lobbyist/Registrant PAC, D=Leadership PAC, J=Joint fundraiser, P=Principal campaign committee, U=Unauthorized
committee_type string yes Committee type code: H=House, S=Senate, P=Presidential, D=Delegate, U=Single-candidate independent, V=PAC with non-contribution account, W=PAC with non-contribution account (nonqualified), X=Party nonqualified, Y=Party qualified, Z=National party nonfederal, N=PAC nonqualified, Q=PAC qualified, I=Independent expenditure filer (person), C=Communication cost filer, E=Independent expenditure filer (not a committee), O=Super PAC
connected_org_name string yes Connected organization name (for corporate/labor/trade PACs)
candidate_id string yes Candidate ID (for authorized committees)
filing_frequency string yes Filing frequency (A=administratively terminated, D=debt, M=monthly, Q=quarterly, T=terminated, W=waived)
org_type string yes Interest group category (C=corporation, L=labor, M=membership, T=trade, V=cooperative, W=corp without capital stock)
party string yes Party affiliation

candidate_committee_linkages · table

Links between candidates and their authorized committees. Shows which committees are authorized by which candidates, including the linkage type and election year context. Source: ccl{YY}.zip (pipe-delimited, no header).

Column Type Null Description
candidate_id string no FEC candidate ID (e.g., H0AL01234, S0AK00567, P80000722)
election_year integer yes Election year (even-numbered)
fec_election_year integer yes FEC election year for this record
committee_id string no FEC committee ID (e.g., C00000042)
committee_type string yes Committee type code: H=House, S=Senate, P=Presidential, D=Delegate, U=Single-candidate independent, V=PAC with non-contribution account, W=PAC with non-contribution account (nonqualified), X=Party nonqualified, Y=Party qualified, Z=National party nonfederal, N=PAC nonqualified, Q=PAC qualified, I=Independent expenditure filer (person), C=Communication cost filer, E=Independent expenditure filer (not a committee), O=Super PAC
committee_designation string yes Committee designation (A=authorized, P=principal)
linkage_id long yes Unique linkage identifier

individual_contributions · table

Itemized individual (donor-level) contributions to federal committees exceeding $200 per cycle. transaction_type spans both ordinary contributions (15/15E/22Y) AND code 10 (giving to Super PACs/Hybrid PACs/nonfederal soft-money accounts) — 10 is uncapped and by dollar volume is typically the single largest code (2024: $6.2B vs. $3.6B for 15), so a query that only knows 15/15E/22Y silently undercounts total giving, especially per-donor. See the transaction_type column comment for the full code list. Largest FEC dataset (~4-5GB per cycle, 20M+ records); contains donor name, employer, occupation, amount, date, and memo text (vectorized for inferred relationship discovery). Distinct from committee_contributions (committee-to-candidate money) and intercommittee_transactions (committee-to-committee transfers). Source: indiv{YY}.zip (pipe-delimited, no header).

Column Type Null Description
committee_id string no FEC committee ID (e.g., C00000042)
amendment_indicator string yes Amendment indicator (N=new, A=amendment, T=termination)
report_type string yes Report type (e.g., 12G=pre-general, 12P=pre-primary, 30G=post-general, Q1-Q3=quarterly, YE=year-end)
transaction_pgi string yes Primary/general indicator (P=primary, G=general)
image_num string yes Microfilm image number
transaction_type string yes FEC transaction type code (source: FEC transaction-type-code-descriptions). 15=contribution (individual/partnership/LLC), 15C=contribution from candidate, 15E=earmarked contribution, 22Y=contribution refund, 10=contribution to Super PAC/Hybrid PAC/nonfederal soft-money account (uncapped, no 15/15E individual limit — usually the largest single code by dollar volume, e.g. $6.2B vs $3.6B for 15 in 2024), 11=Native American Tribe contribution, 21Y=Native American Tribe refund, 20Y=nonfederal refund, 24I=earmarked passed by intermediary committee (intermediary out), 24T=earmarked passed from intermediary's treasury (treasury out), 19=electioneering communication donation received, 30/30E/30T=Convention Account receipt (individual/earmarked/tribe), 31/31E/31T=Headquarters Account receipt (individual/earmarked/tribe), 32/32E/32T=Recount Account receipt (individual/earmarked/tribe), 41Y=Headquarters Account refund, 42Y=Recount Account refund.
entity_type string yes Entity type (IND=individual, COM=committee, ORG=organization, PAC=PAC, CAN=candidate)
contributor_name string yes Contributor name (LAST, FIRST MIDDLE)
city string yes Contributor city
state string yes Contributor state (two-letter postal)
zip_code string yes Contributor ZIP code
employer string yes Contributor employer name
occupation string yes Contributor occupation
transaction_date date yes Transaction date
amount double yes Transaction amount in USD (negative for refunds)
other_id string yes Other committee ID (for transfers/earmarks)
transaction_id string yes Transaction ID assigned by filer
filing_id long yes FEC filing ID number
memo_cd string yes Memo code (X=memo item, not counted in totals)
memo_text string yes Memo text (earmark info, conduit, purpose descriptions)
sub_id long yes FEC unique record identifier

committee_contributions · table

Committee-to-candidate transactions (PACs, party committees), spanning direct contributions and coordinated/independent spending via transaction_type codes (24K=direct contribution, 24C=coordinated party expenditure, 24E=independent for, 24A=independent against, 24F=communication cost for). Each row carries a candidate_id, distinguishing it from intercommittee_transactions (committee-to-committee transfers with no candidate link). Source: pas2{YY}.zip (pipe-delimited, no header).

Column Type Null Description
committee_id string no FEC committee ID (e.g., C00000042)
amendment_indicator string yes Amendment indicator (N=new, A=amendment, T=termination)
report_type string yes Report type
transaction_pgi string yes Primary/general indicator
image_num string yes Microfilm image number
transaction_type string yes Transaction type code (24A=independent against, 24C=coordinated, 24E=independent for, 24F=comm cost for, 24K=direct contribution)
entity_type string yes Entity type
contributor_name string yes Contributing committee/entity name
city string yes Contributor city
state string yes Contributor state
zip_code string yes Contributor ZIP code
employer string yes Employer (if applicable)
occupation string yes Occupation (if applicable)
transaction_date date yes Transaction date
amount double yes Transaction amount in USD (negative for refunds)
other_id string yes Candidate ID or other committee ID
candidate_id string no FEC candidate ID (e.g., H0AL01234, S0AK00567, P80000722)
transaction_id string yes Transaction ID
filing_id long yes FEC filing ID number
memo_cd string yes Memo code
memo_text string yes Memo text (purpose, earmark info)
sub_id long yes FEC unique record identifier

intercommittee_transactions · table

Transactions between political committees — transfers, joint fundraising allocations, and other inter-committee financial activity — with no candidate_id column, unlike committee_contributions (which links each row to a specific candidate). Shows the flow of money between PACs, party committees, and campaign committees. Source: oth{YY}.zip (pipe-delimited, no header).

Column Type Null Description
committee_id string no FEC committee ID (e.g., C00000042)
amendment_indicator string yes Amendment indicator (N=new, A=amendment, T=termination)
report_type string yes Report type
transaction_pgi string yes Primary/general indicator
image_num string yes Microfilm image number
transaction_type string yes Transaction type code
entity_type string yes Entity type
contributor_name string yes Contributing entity name
city string yes City
state string yes State
zip_code string yes ZIP code
employer string yes Employer
occupation string yes Occupation
transaction_date date yes Transaction date
amount double yes Transaction amount in USD (negative for refunds)
other_id string yes Other committee ID (receiving/sending)
transaction_id string yes Transaction ID
filing_id long yes FEC filing ID number
memo_cd string yes Memo code
memo_text string yes Memo text
sub_id long yes FEC unique record identifier

operating_expenditures · table

Itemized operating expenditures by political committees. Shows how committees spend their money — consultants, media buys, travel, rent, staffing, etc. Purpose text is vectorized for spending pattern analysis. Source: oppexp{YY}.zip (pipe-delimited, no header).

Column Type Null Description
committee_id string no FEC committee ID (e.g., C00000042)
amendment_indicator string yes Amendment indicator (N=new, A=amendment, T=termination)
report_year integer yes Report year
report_type string yes Report type
image_num string yes Microfilm image number
line_num string yes Line number on form
form_type string yes Form type (SB/F3, etc.)
schedule_type string yes Schedule type description
payee_name string yes Name of payee
city string yes Payee city
state string yes Payee state
zip_code string yes Payee ZIP code
transaction_date date yes Transaction date
amount double yes Transaction amount in USD (negative for refunds)
transaction_pgi string yes Primary/general indicator
purpose string yes Purpose of expenditure (e.g., MEDIA BUY, CONSULTING, TRAVEL, RENT)
category string yes Disbursement category code
category_description string yes Disbursement category description
memo_cd string yes Memo code
memo_text string yes Memo text
entity_type string yes Entity type
sub_id long yes FEC unique record identifier
filing_id long yes FEC filing ID number
transaction_id string yes Transaction ID
back_ref_transaction_id string yes Back-reference transaction ID

independent_expenditures · table

Independent expenditures — spending by committees and individuals for or against candidates that is not coordinated with the candidate's campaign. Includes Super PAC spending. Source: independent_expenditure_{YYYY}.csv (CSV with headers).

Column Type Null Description
candidate_id string yes FEC candidate ID
candidate_name string yes Candidate name
spender_id string yes Committee/spender ID
spender_name string yes Committee/spender name
election_year integer yes FEC election year
support_oppose string yes Support/oppose indicator (S=support, O=oppose)
purpose string yes Purpose of expenditure
payee string yes Payee name
transaction_date date yes Expenditure date
amount double yes Expenditure amount in USD
candidate_office string yes Office sought (H/S/P)
candidate_state string yes Candidate state
candidate_district string yes Candidate district
candidate_party string yes Candidate party
prev_file_num long yes Previous file number (for amendments)
amendment_indicator string yes Amendment indicator
filing_id long yes FEC filing ID number
transaction_id string yes Transaction ID
image_num string yes Image number

electioneering_communications · table

Electioneering communications — broadcast, cable, or satellite ads that mention a federal candidate within 30 days of a primary or 60 days of a general election. Carries the reported disbursement amount plus, when one ad buy names multiple candidates, number_of_candidates and calculated_candidate_share to apportion the cost per candidate. Source: ElectioneeringComm_{YYYY}.csv (CSV with headers).

Column Type Null Description
candidate_id string yes FEC candidate ID
candidate_name string yes Candidate name
candidate_office string yes Office sought (H/S/P)
candidate_state string yes Candidate state
candidate_district string yes Candidate district
committee_id string yes Committee ID
committee_name string yes Committee/organization name
payee_name string yes Payee name
disbursement_description string yes Description of the communication/disbursement
disbursement_date date yes Disbursement date
communication_date date yes Communication date
amount double yes Reported disbursement amount in USD
number_of_candidates integer yes Number of candidates targeted
calculated_candidate_share double yes Calculated per-candidate share of disbursement

communication_costs · table

Communication costs reported by corporations and labor organizations for internal communications (to employees, members) mentioning federal candidates, with a support_oppose (S/O) flag per candidate. Distinct from electioneering_communications, which covers public broadcast/cable/satellite ads rather than internal member communications. Source: CommunicationCosts_{YYYY}.csv (CSV with headers).

Column Type Null Description
committee_id string yes Committee ID
committee_name string yes Reporting organization name
candidate_id string yes FEC candidate ID
candidate_name string yes Candidate name
candidate_office string yes Office sought (H/S/P)
candidate_state string yes Candidate state
candidate_district string yes Candidate district
party string yes Candidate party affiliation
support_oppose string yes Support/oppose indicator (S=support, O=oppose)
communication_type string yes Communication type code (24A, 24N, etc.)
communication_class string yes Communication class
transaction_date date yes Transaction date. Unlike every other FEC bulk table (which use MMDDYYYY_OR_SLASH), CommunicationCosts_{year}.csv's TRANSACTION_DT is YYYYMMDD (e.g. "20260330") — verified directly against the raw cached response for both 2024 and 2026, not assumed from the shared *transaction_date_column anchor other tables use.
amount double yes Transaction amount in USD
purpose string yes Purpose of communication
filing_id long yes FEC filing ID number

candidate_summaries · table

Aggregated per-candidate financial summary for each election cycle — one row per candidate, not a transaction. Includes total receipts, disbursements, cash on hand, debts, and individual contributions split into itemized (>$200) vs unitemized (<=$200), plus party/other-committee contribution totals. Rolls up the transaction-level individual_contributions and committee_contributions tables rather than replacing them. Source: candidate_summary_{YYYY}.csv (CSV with headers).

Column Type Null Description
candidate_id string no FEC candidate ID (e.g., H0AL01234, S0AK00567, P80000722)
candidate_name string yes Candidate name (LAST, FIRST MIDDLE)
incumbent_challenger string yes Incumbent/challenger/open status
office string yes Office sought (H=House, S=Senate, P=President)
state string yes Two-letter state abbreviation (US postal code)
district string yes Congressional district number (00 for at-large/Senate/President)
party string yes Party affiliation (DEM, REP, LIB, GRN, IND, etc.)
total_receipts double yes Total receipts
transfers_from_auth double yes Transfers from authorized committees
total_disbursements double yes Total disbursements
transfers_to_auth double yes Transfers to authorized committees
cash_begin double yes Cash on hand at beginning of period
cash_end double yes Cash on hand at end of period
contributions_from_candidate double yes Contributions from the candidate
loans_from_candidate double yes Loans from the candidate
other_loans double yes Other loans
loan_repayments_candidate double yes Candidate loan repayments
other_loan_repayments double yes Other loan repayments
debts_owed_by double yes Debts owed by committee
total_individual_contributions double yes Total individual contributions
individual_itemized double yes Itemized individual contributions (>$200)
individual_unitemized double yes Unitemized individual contributions (<=$200)
pac_contributions double yes Contributions from political party committees
other_committee_contributions double yes Contributions from other political committees
coverage_end_date date yes Coverage end date
refunds_individual double yes Refunds to individuals
refunds_committee double yes Refunds to committees

committee_summaries · table

Aggregated per-committee financial summary for each election cycle — one row per committee, not a transaction. Includes total receipts, disbursements, cash on hand, debts, independent expenditures, party coordinated expenditures, and the nonfederal (non-election-account) share of transfers and expenditures. Rolls up the transaction-level committee_contributions and intercommittee_transactions tables rather than replacing them. Source: committee_summary_{YYYY}.csv (CSV with headers).

Column Type Null Description
committee_id string no FEC committee ID (e.g., C00000042)
committee_name string yes Committee name
committee_type string yes Committee type code
designation string yes Committee designation
filing_frequency string yes Filing frequency
total_receipts double yes Total receipts
transfers_from_affiliates double yes Transfers from affiliates
individual_contributions double yes Total individual contributions
other_political_contributions double yes Contributions from other political committees
candidate_contributions double yes Candidate contributions
candidate_loans double yes Candidate loans
total_loans_received double yes Total loans received
total_disbursements double yes Total disbursements
transfers_to_affiliates double yes Transfers to affiliates
refunds_individual double yes Refunds to individuals
refunds_committee double yes Refunds to committees
candidate_loan_repayments double yes Candidate loan repayments
total_loan_repayments double yes Total loan repayments
cash_begin double yes Cash on hand beginning of period
cash_end double yes Cash on hand end of period
debts_owed_by double yes Debts owed by committee
nonfederal_transfers_received double yes Nonfederal transfers received
contributions_to_committees double yes Contributions to other committees
independent_expenditures double yes Independent expenditures
party_coordinated_expenditures double yes Party coordinated expenditures
nonfederal_expenditure_share double yes Nonfederal share of expenditures
coverage_end_date date yes Coverage end date
connected_org_name string yes Connected organization name (for corporate/labor PACs)
party string yes Party affiliation
state string yes Committee state

active_candidates · view

Federal candidates flagged as certified active (candidate_status = 'C') in fec.candidates. Not filtered to a single cycle — rows span every loaded election year, distinguished by the year column. Single-schema view using only fec tables.

View — columns are resolved by the query engine at runtime.

candidate_district_profile · view

Enriches FEC candidates with geographic state and congressional district data. House candidates (office=H) are matched to their TIGER district boundary via state_fips + zero-padded district number. Senate/presidential rows get state geography only (no CD match).

View — columns are resolved by the query engine at runtime.