ExchangeRebel Election Finance (FEC) API
The Election Finance (FEC) API from ExchangeRebel — 5 operation(s) for election finance (fec).
The Election Finance (FEC) API from ExchangeRebel — 5 operation(s) for election finance (fec).
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/exchangerebel-com:exchangerebel-com-election-finance-fec-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: ExchangeRebel — pay-per-call APIs for AI agents (x402 on…
version: 1.0.0
contact:
name: 'ExchangeRebel (operator: Rebel Data)'
url: https://exchangerebel.com
email: sound.money.investing@gmail.com
x-guidance: 'All paid operations use x402 on Solana: call without payment to get a 402 challenge (SOL recipient + USDC token account + fresh memo), pay with the memo attached via the Solana Memo program, then retry with header X-Payment-Tx: <signature> and ?toll_memo=<memo>. Challenges are dual-version: the PAYMENT-REQUIRED header carries the x402 v2 PaymentRequired object and the response body carries the same challenge in x402 v1 form for compatibility. Free operations (security: []) include each service''s /health catalog with full response shapes. Prices in x-payment-info are USD per call unless the summary says otherwise (RPC is per 1,000-request block; Telegram provisioning is per bot-month; transcription is per minute of audio).'
description: '67 data and utility APIs behind x402 tolls, settled in SOL or USDC on Solana. Call a paid endpoint without payment to receive a 402 x402 challenge (recipient + fresh memo), pay with the memo attached via the Solana Memo program, then retry with the X-Payment-Tx header and toll_memo query parameter. Free catalog/health endpoints are marked without x-payment-info. Full catalogs: GET /toll/discovery and each service''s /health.'
servers:
- url: https://exchangerebel.com
tags:
- name: Election Finance (FEC)
paths:
/toll/politics/fec/committees:
get:
tags:
- Election Finance (FEC)
summary: Fetch FEC committee profiles by cycle
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
content:
application/json:
example:
cycle: 2026
count: 4
total_matching: 4
limit: 20
offset: 0
committees:
- cmte_id: C90016668
cmte_nm: AMERICAN WOMEN LOVE TRUMP INC
cmte_tp: O
cmte_dsgn: U
cmte_pty_affiliation: ''
cmte_st: DC
cand_id: null
- cmte_id: C00493783
cmte_nm: FRESHMAN AGRICULTURAL REPUBLICAN MEMBERS TRUST AKA FARM TRUST
cmte_tp: H
cmte_dsgn: B
cmte_pty_affiliation: REP
cmte_st: KS
cand_id: null
- cmte_id: C00000059
cmte_nm: HALLMARK CARDS, INC. PAC (HALLPAC)
cmte_tp: Q
cmte_dsgn: B
cmte_pty_affiliation: ''
cmte_st: MO
cand_id: null
- cmte_id: C00832576
cmte_nm: PATRIOT PAC
cmte_tp: H
cmte_dsgn: B
cmte_pty_affiliation: REP
cmte_st: VA
cand_id: null
source_updated: Mon, 19 Oct 2026 05:42:03 GMT
freshness_note: Nightly FEC ETL (through 7 pm prior-day filings); source_updated is the HTTP Last-Modified header captured at bulk download. Disbursements (oppexp) refresh on their own ETL cadence and can lag the masters — not a bug, see data_notes.
attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
data_health:
as_of: '2026-10-21T21:23:05.252Z'
source: fec
license: US public domain (U.S. federal government work — FEC)
attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
commercial_ok: true
checks_passed:
- license
- schema
- freshness
error_budget: critical fields <0.1%, other fields <1%
quality:
adversarial_sample: 0/700 row mismatches vs raw bulk files (deterministic seed 20261010)
error_budget: critical fields <0.1%, other fields <1%
ie_dedupe: 'one row per (spe_id, tran_id): latest amendment kept, dedupe_group_size carried on kept rows'
donor_boundary: donor files (indiv/itcont) never downloaded; individual payee identity stripped at ingestion
paid: true
'402':
description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
parameters:
- name: cycle
in: query
required: false
schema:
type: string
description: 2024 | 2026 (default 2026)
- name: name
in: query
required: false
schema:
type: string
description: Name substring search
- name: committee_id
in: query
required: false
schema:
type: string
description: Exact committee id
- name: committee_type
in: query
required: false
schema:
type: string
description: Committee type code (e.g. H, S, P)
- name: limit
in: query
required: false
schema:
type: string
description: Page size 1-100 (default 20)
- name: offset
in: query
required: false
schema:
type: string
description: Page offset (default 0)
x-payment-info:
protocols:
- x402
price:
mode: fixed
currency: USD
amount: '0.05'
security:
- x402Payment: []
operationId: getTollPoliticsFecCommittees
x-operation-id-source: derived
/toll/politics/fec/committees/{id}:
get:
tags:
- Election Finance (FEC)
summary: Fetch one FEC committee profile + totals
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
content:
application/json:
example:
cycle: 2026
committee:
cmte_id: C00832576
cmte_nm: PATRIOT PAC
tres_nm: JONES, ALEX
cmte_st1: 9 ELM ST
cmte_st2: null
cmte_city: ARLINGTON
cmte_st: VA
cmte_zip: '22201'
cmte_dsgn: B
cmte_tp: H
cmte_pty_affiliation: REP
cmte_filing_freq: Q
org_tp: ''
connected_org_nm: ''
cand_id: null
cycle_totals:
ttl_receipts: 472763.33
ttl_disb: 400000
coh_bop: 1000
coh_cop: 73763.33
debts_owed_by: 0
indv_contrib: 400000
other_pol_cmte_contrib: 10000
contrib_to_other_cmte: 2000
ind_exp: 5000
cvg_end_date: '2026-09-30'
totals_scope: PAC/party committee totals (Form 3X filers); House/Senate campaigns report under candidate totals
linked_candidates:
- cand_id: H00000001
cand_name: CANDIDATE 1
cand_pty_affiliation: REP
cand_office: H
cand_office_st: VA
cand_office_district: '01'
- cand_id: H00000002
cand_name: CANDIDATE 2
cand_pty_affiliation: REP
cand_office: H
cand_office_st: VA
cand_office_district: '01'
- cand_id: H00000003
cand_name: CANDIDATE 3
cand_pty_affiliation: REP
cand_office: H
cand_office_st: VA
cand_office_district: '01'
- cand_id: H00000004
cand_name: CANDIDATE 4
cand_pty_affiliation: REP
cand_office: H
cand_office_st: VA
cand_office_district: '01'
- cand_id: H00000005
cand_name: CANDIDATE 5
cand_pty_affiliation: REP
cand_office: H
cand_office_st: VA
cand_office_district: '01'
source_updated: Mon, 19 Oct 2026 05:42:03 GMT
freshness_note: Nightly FEC ETL (through 7 pm prior-day filings); source_updated is the HTTP Last-Modified header captured at bulk download. Disbursements (oppexp) refresh on their own ETL cadence and can lag the masters — not a bug, see data_notes.
attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
data_health:
as_of: '2026-10-21T21:23:05.255Z'
source: fec
license: US public domain (U.S. federal government work — FEC)
attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
commercial_ok: true
checks_passed:
- license
- schema
- freshness
error_budget: critical fields <0.1%, other fields <1%
quality:
adversarial_sample: 0/700 row mismatches vs raw bulk files (deterministic seed 20261010)
error_budget: critical fields <0.1%, other fields <1%
ie_dedupe: 'one row per (spe_id, tran_id): latest amendment kept, dedupe_group_size carried on kept rows'
donor_boundary: donor files (indiv/itcont) never downloaded; individual payee identity stripped at ingestion
paid: true
'402':
description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Committee id (e.g. C00000059)
- name: cycle
in: query
required: false
schema:
type: string
description: 2024 | 2026 (default 2026)
x-payment-info:
protocols:
- x402
price:
mode: fixed
currency: USD
amount: '0.05'
security:
- x402Payment: []
operationId: getTollPoliticsFecCommitteesById
x-operation-id-source: derived
/toll/politics/fec/disbursements:
get:
tags:
- Election Finance (FEC)
summary: Fetch FEC Schedule B disbursements
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
content:
application/json:
example:
cycle: 2026
committee_id: C00010603
count: 2
total_matching: null
limit: 20
offset: 0
disbursements:
- sub_id: '40712345678901234567'
cmte_id: C00010603
transaction_date: '2026-10-01'
transaction_dt: 10/01/2026
transaction_amt: 1250.5
purpose: CONSULTING
category: CON
category_desc: Consulting
entity_tp: ORG
payee_name: ACME CONSULTING LLC
payee_city: WASHINGTON
payee_state: DC
memo_text: null
rpt_yr: '2026'
rpt_tp: Q3
form_tp_cd: SB
- sub_id: '40712345678901234568'
cmte_id: C00010603
transaction_date: '2026-09-15'
transaction_dt: 09/15/2026
transaction_amt: 300
purpose: TRAVEL
category: TRA
category_desc: Travel
entity_tp: IND
payee_name: null
payee_city: null
payee_state: null
memo_text: null
rpt_yr: '2026'
rpt_tp: Q3
form_tp_cd: SB
payee_note: Payee fields are NULL for individual persons (privacy strip at ingestion, 52 U.S.C. § 30111(a)(4)); institutional payees retained.
source_updated: null
freshness_note: Nightly FEC ETL (through 7 pm prior-day filings); source_updated is the HTTP Last-Modified header captured at bulk download. Disbursements (oppexp) refresh on their own ETL cadence and can lag the masters — not a bug, see data_notes.
attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
data_health:
as_of: '2026-10-21T21:23:05.260Z'
source: fec
license: US public domain (U.S. federal government work — FEC)
attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
commercial_ok: true
checks_passed:
- license
- schema
- freshness
error_budget: critical fields <0.1%, other fields <1%
quality:
adversarial_sample: 0/700 row mismatches vs raw bulk files (deterministic seed 20261010)
error_budget: critical fields <0.1%, other fields <1%
ie_dedupe: 'one row per (spe_id, tran_id): latest amendment kept, dedupe_group_size carried on kept rows'
donor_boundary: donor files (indiv/itcont) never downloaded; individual payee identity stripped at ingestion
paid: true
'402':
description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
parameters:
- name: cycle
in: query
required: false
schema:
type: string
description: 2024 | 2026 (default 2026)
- name: committee_id
in: query
required: true
schema:
type: string
description: Committee id (required)
- name: limit
in: query
required: false
schema:
type: string
description: Page size 1-100 (default 20)
- name: offset
in: query
required: false
schema:
type: string
description: Page offset (default 0)
x-payment-info:
protocols:
- x402
price:
mode: fixed
currency: USD
amount: '0.05'
security:
- x402Payment: []
operationId: getTollPoliticsFecDisbursements
x-operation-id-source: derived
/toll/politics/fec/independent-expenditures:
get:
tags:
- Election Finance (FEC)
summary: Fetch FEC independent expenditures
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
content:
application/json:
example:
cycle: 2026
count: 4
total_matching: 4
limit: 20
offset: 0
independent_expenditures:
- spe_id: C11111111
tran_id: T3
cand_id: S00000001
cand_name: SENATOR X
spender_name: SENATE CONSERVATIVES FUND
spender_is_committee: 1
sup_opp: S
exp_amo: 9000
agg_amo: 9000
exp_date_parsed: '2026-10-05'
pur: TV ADS
ele_type: G
can_office: S
can_office_state: TX
can_office_dis: '00'
dedupe_group_size: 2
amndt_ind: A
- spe_id: C90016668
tran_id: T1
cand_id: H2AK01158
cand_name: PELTOLA, MARY
spender_name: AMERICAN WOMEN LOVE TRUMP INC
spender_is_committee: 1
sup_opp: S
exp_amo: 5000
agg_amo: 5000
exp_date_parsed: '2026-10-01'
pur: ADVERTISING
ele_type: G
can_office: H
can_office_state: AK
can_office_dis: '00'
dedupe_group_size: 1
amndt_ind: N
- spe_id: C00000059
tran_id: T2
cand_id: H00000001
cand_name: CANDIDATE 1
spender_name: HALLMARK CARDS, INC. PAC (HALLPAC)
spender_is_committee: 1
sup_opp: S
exp_amo: 3000
agg_amo: 3000
exp_date_parsed: '2026-09-15'
pur: MAIL
ele_type: G
can_office: H
can_office_state: VA
can_office_dis: '01'
dedupe_group_size: 1
amndt_ind: N
- spe_id: C22222222
tran_id: T4
cand_id: S00000001
cand_name: SENATOR X
spender_name: SOME PAC
spender_is_committee: 1
sup_opp: O
exp_amo: 2000
agg_amo: 2000
exp_date_parsed: '2026-08-01'
pur: RADIO
ele_type: G
can_office: S
can_office_state: TX
can_office_dis: '00'
dedupe_group_size: 1
amndt_ind: N
dedupe_note: 'One row per (spe_id, tran_id): the latest-amendment row is kept; raw-file amendment rows that would double-count are excluded.'
spender_note: spender_name is NULL when the spender is not a registered committee (privacy strip at ingestion).
source_updated: Mon, 19 Oct 2026 10:13:29 GMT
freshness_note: Nightly FEC ETL (through 7 pm prior-day filings); source_updated is the HTTP Last-Modified header captured at bulk download. Disbursements (oppexp) refresh on their own ETL cadence and can lag the masters — not a bug, see data_notes.
attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
data_health:
as_of: '2026-10-21T21:23:05.263Z'
source: fec
license: US public domain (U.S. federal government work — FEC)
attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
commercial_ok: true
checks_passed:
- license
- schema
- freshness
error_budget: critical fields <0.1%, other fields <1%
quality:
adversarial_sample: 0/700 row mismatches vs raw bulk files (deterministic seed 20261010)
error_budget: critical fields <0.1%, other fields <1%
ie_dedupe: 'one row per (spe_id, tran_id): latest amendment kept, dedupe_group_size carried on kept rows'
donor_boundary: donor files (indiv/itcont) never downloaded; individual payee identity stripped at ingestion
paid: true
'402':
description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
parameters:
- name: cycle
in: query
required: false
schema:
type: string
description: 2024 | 2026 (default 2026)
- name: committee_id
in: query
required: false
schema:
type: string
description: Spender committee id
- name: spender
in: query
required: false
schema:
type: string
description: Spender name substring search
- name: support_oppose
in: query
required: false
schema:
type: string
description: S (support) | O (oppose)
- name: limit
in: query
required: false
schema:
type: string
description: Page size 1-100 (default 20)
- name: offset
in: query
required: false
schema:
type: string
description: Page offset (default 0)
x-payment-info:
protocols:
- x402
price:
mode: fixed
currency: USD
amount: '0.05'
security:
- x402Payment: []
operationId: getTollPoliticsFecIndependentExpenditures
x-operation-id-source: derived
/toll/politics/fec/totals:
get:
tags:
- Election Finance (FEC)
summary: Fetch FEC cycle financial totals
responses:
'200':
description: Success. Response shape is documented in the service catalog (GET /health on the service).
content:
application/json:
example:
cycle: 2026
count: 1
results:
- kind: committee
scope: PAC/party committee cycle totals (Form 3X filers)
coverage_end: '2026-09-30'
cmte_id: C90016668
cmte_nm: AMERICAN WOMEN LOVE TRUMP INC
cmte_tp: O
cmte_dsgn: U
ttl_receipts: 1000.5
trans_from_aff: 0
indv_contrib: 500
other_pol_cmte_contrib: 100
cand_contrib: 0
ttl_disb: 900.25
tranf_to_aff: 0
coh_bop: 10
coh_cop: 110.25
debts_owed_by: 0
ind_exp: 0
pty_coord_exp: 0
contrib_to_other_cmte: 0
cvg_end_date: '2026-09-30'
granularity_note: Committee-cycle aggregates only — bulk carries no per-report (individual filing) granularity.
source_updated: Mon, 19 Oct 2026 05:41:54 GMT
freshness_note: Nightly FEC ETL (through 7 pm prior-day filings); source_updated is the HTTP Last-Modified header captured at bulk download. Disbursements (oppexp) refresh on their own ETL cadence and can lag the masters — not a bug, see data_notes.
attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
data_health:
as_of: '2026-10-21T21:23:05.258Z'
source: fec
license: US public domain (U.S. federal government work — FEC)
attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
commercial_ok: true
checks_passed:
- license
- schema
- freshness
error_budget: critical fields <0.1%, other fields <1%
quality:
adversarial_sample: 0/700 row mismatches vs raw bulk files (deterministic seed 20261010)
error_budget: critical fields <0.1%, other fields <1%
ie_dedupe: 'one row per (spe_id, tran_id): latest amendment kept, dedupe_group_size carried on kept rows'
donor_boundary: donor files (indiv/itcont) never downloaded; individual payee identity stripped at ingestion
paid: true
'402':
description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
parameters:
- name: cycle
in: query
required: false
schema:
type: string
description: 2024 | 2026 (default 2026)
- name: committee_id
in: query
required: false
schema:
type: string
description: Committee id (kind=committee totals)
- name: candidate_id
in: query
required: false
schema:
type: string
description: Candidate id (kind=candidate totals)
x-payment-info:
protocols:
- x402
price:
mode: fixed
currency: USD
amount: '0.05'
security:
- x402Payment: []
operationId: getTollPoliticsFecTotals
x-operation-id-source: derived
components:
securitySchemes:
x402Payment:
type: apiKey
in: header
name: X-Payment-Tx
description: 'x402 toll payment proof: the Solana transaction signature of a payment carrying the memo from the 402 challenge; send together with ?toll_memo=<memo>. Payment itself is made on-chain in SOL or USDC to the recipient named in the challenge.'