FEC Disbursements (Schedule B)
Itemized committee DISBURSEMENTS — the money-OUT counterpart to Schedule A contributions. Every itemized payment a federal committee reports: vendor payments, media buys, consulting fees, polling, payroll, rent, refunds, and committee-to-committee transfers, with payee name/city/state, purpose category, amount, and date. Queries run live against the FEC API (full itemized coverage for the current cycle) with a cached $1K+ subset as outage fallback. Note the reporting lag: disbursements surface when monthly or quarterly reports are FILED, up to ~50 days after the spend date.
GET /v1/fec-disbursementsWhat it returns
One record per itemized disbursement (FEC sub_id). memoed_subtotal rows are excluded by default (they double-count dollars) — pass exclude_memos=false for the raw rows. spender_committee_id joins to FEC candidate/committee profiles. See the live example below for the full field set.
Filters
| sub_id | FEC sub_id (globally unique row ID). Direct doc lookup, fastest. |
| spender_committee_id | FEC committee ID doing the spending (e.g., 'C00580100'). Use get_fec_candidate_profile to find the principal committee for a candidate. |
| recipient_name | Case-insensitive substring against the payee's filed name (vendor, consulting firm, committee, or individual). Substring filter (client-side on the cached path). |
| candidate_id | FEC candidate ID tied to the disbursement (e.g., 'S6PA00091'). NOTE: only populated on candidate-linked rows; most vendor payments carry no candidate_id — prefer spender_committee_id for a campaign's full spending picture. |
| recipient_state | 2-letter US state code of the recipient (e.g., 'CA', 'TX'). |
| disbursement_purpose_category | FEC's normalized purpose bucket (e.g., 'ADVERTISING', 'CONSULTING', 'CONTRIBUTIONS', 'FUNDRAISING', 'TRANSFERS', 'TRAVEL', 'PAYROLL', 'OTHER'). |
| entity_type | Recipient entity type code: IND (individual), COM (committee), CCM (candidate committee), PAC, PTY (party), CAN (candidate), ORG (organization — most vendors), UNK (unknown). |
| min_amount | Inclusive lower bound on disbursement_amount in dollars. KeyVex's cached subset holds $1,000+ rows; live queries cover every itemized row. |
| max_amount | Inclusive upper bound on disbursement_amount. |
| since | Inclusive lower bound on disbursement_date (YYYY-MM-DD). |
| until | Inclusive upper bound on disbursement_date (YYYY-MM-DD). |
| cycle | Election cycle year (2-year transaction period). Common values: 2026, 2024, 2022. |
| exclude_memos | When true (DEFAULT), filters out rows flagged memoed_subtotal=true — FEC's aggregate / subtotal duplicates that double-count the same dollars across multiple rows. Pass exclude_memos=false to include them (useful for matching FEC's own raw row counts). |
| sort_by | Sort key. Default: disbursement_date. |
| sort_order | Default: desc (most recent / largest first). |
| limit | Maximum disbursements to return. Default 50, max 500. |
Example request
curl "https://api.keyvex.com/v1/fec-disbursements?limit=1" \
-H "x-api-key: YOUR_KEY"
Response
{
"results": [
{
"sub_id": "4063020261523244160",
"disbursement_amount": 99823.91,
"disbursement_date": "2026-06-17",
"disbursement_date_source": null,
"date_corrected": false,
"date_correction_basis": null,
"disbursement_description": "LOAN REPAYMENT: LOAN RECEIVED",
"disbursement_purpose_category": "LOAN-REPAYMENTS",
"disbursement_type": "20C",
"disbursement_type_description": "LOAN REPAYMENTS MADE TO CANDIDATE",
"recipient_name": "ADAMS, HOLLY",
"recipient_city": "LEBANON",
"recipient_state": "OH",
"recipient_zip": "450360073",
"recipient_committee_id": "",
"spender_committee_id": "C00937664",
"spender_committee_type": "H",
"spender_committee_designation": "P",
"spender_committee_org_type": "",
"beneficiary_committee_name": "HOLLY ADAMS FOR US CONGRESS",
"candidate_id": "H6OH01195",
"candidate_name": "ADAMS, HOLLY",
"candidate_office": "H",
"candidate_office_state": "OH",
"candidate_office_district": "01",
"payee_first_name": "HOLLY",
"payee_last_name": "ADAMS",
"entity_type": "CAN",
"entity_type_desc": "CANDIDATE",
"category_code": "",
"election_type": "P2026",
"fec_election_year": null,
"two_year_transaction_period": 2026,
"report_type": "TER",
"report_year": null,
"file_number": 1986453,
"line_number": "19A",
"line_number_label": "Loan Repayments Made or Guaranteed by Candidate",
"transaction_id": "BDAA0D441C3E04E68AC5",
"image_number": "202606249874260889",
"pdf_url": "https://docquery.fec.gov/cgi-bin/fecimg/?202606249874260889",
"memo_text": "",
"memo_code": "",
"memoed_subtotal": false,
"original_sub_id": "",
"amendment_indicator": "A",
"filing_form": "F3",
"load_date": "2026-07-01T02:51:48",
"source_url": "https://www.fec.gov/data/disbursements/?committee_id=C00937664&data_type=processed",
"scraped_at": "2026-07-08T19:07:47.399Z"
}
],
"count": 1,
"has_more": true
}
Example questions you can answer
- Where does a campaign or super PAC actually spend its money?
- Which media/consulting firms are the biggest recipients this cycle?
- All disbursements by one committee, sorted by amount.
- Committee-to-committee transfer flows.
Related datasets
Hand any AI your key + the OpenAPI spec and it can pull this dataset directly. Free key = full data, 60 requests/day.
Get a free key OpenAPI spec → REST docs →