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).

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 contributions to federal committees exceeding $200 in an election cycle. Largest FEC dataset (~4-5GB per cycle, 20M+ records). Contains donor name, employer, occupation, amount, date, and memo text. Memo text is vectorized for inferred relationship discovery. 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 Transaction type code (15=contribution, 15E=earmarked, 22Y=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

Contributions from committees (PACs, party committees) to candidates. Shows direct committee-to-candidate financial support including amount, date, and purpose. 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. 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. 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. 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
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 financial summary for each federal candidate per election cycle. Includes total receipts, disbursements, cash on hand, debts, and individual/ PAC contribution breakdowns. 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 financial summary for each political committee per election cycle. Includes total receipts, disbursements, cash on hand, debts, contribution sources, and independent expenditures. 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

Active federal candidates from the most recent election cycle. Filters fec.candidates to rows where candidate_status = 'C' (certified active). 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.