FEC Disbursements (Schedule B)
Itemized committee DISBURSEMENTS, the money-OUT counterpart to Schedule A contributions. Itemized payments a federal committee reports to organisations: vendor payments, media buys, consulting firms, polling, payroll services, rent, and committee-to-committee transfers, with payee name/city/state, purpose category, amount, and date. Rows naming a natural person, individual payees (including refunds to individual contributors), candidates, unclassified payees, and people a filer coded as an organisation, are withheld per record under the FEC sale-or-use rule (11 CFR 104.15). 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-disbursementsLive from the data
Loading the latest numbers…
What it returns
One record per itemized disbursement to an organisation or committee (FEC sub_id); natural persons are withheld. 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 or committee, natural persons are withheld, so a person's name returns nothing). 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, ORGANISATION types only: COM (committee), CCM (candidate committee), PAC, PTY (party), ORG (organization, most vendors). IND (individual), CAN (candidate, a natural person) and UNK (unclassified) are not accepted: those rows are withheld under 11 CFR 104.15. |
| 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?sub_id=4022320261311748072" \
-H "x-api-key: YOUR_KEY"
Response
{
"results": [
{
"sub_id": "4022320261311748072",
"disbursement_amount": 1141.46,
"disbursement_date": "2026-01-26",
"disbursement_date_source": null,
"date_corrected": false,
"date_correction_basis": null,
"disbursement_description": "PROCESSING FEE",
"disbursement_purpose_category": "OTHER",
"disbursement_type": "",
"disbursement_type_description": "",
"recipient_name": "ANEDOT",
"recipient_city": "NEW ORLEANS",
"recipient_state": "LA",
"recipient_zip": "70112",
"recipient_committee_id": "",
"spender_committee_id": "C00027466",
"spender_committee_type": "Y",
"spender_committee_designation": "U",
"spender_committee_org_type": "",
"beneficiary_committee_name": "",
"candidate_id": "",
"candidate_name": "",
"candidate_office": "",
"candidate_office_state": "",
"candidate_office_district": "",
"payee_first_name": "",
"payee_last_name": "",
"entity_type": "ORG",
"entity_type_desc": "ORGANIZATION",
"category_code": "",
"election_type": "",
"fec_election_year": null,
"two_year_transaction_period": 2026,
"report_type": "M2",
"report_year": null,
"file_number": 1949363,
"line_number": "21B",
"line_number_label": "Other Federal Operating Expenditures",
"transaction_id": "SB21B.I576592",
"image_number": "202602209837787748",
"pdf_url": "https://docquery.fec.gov/cgi-bin/fecimg/?202602209837787748",
"memo_text": "",
"memo_code": "",
"memoed_subtotal": false,
"original_sub_id": "",
"amendment_indicator": "A",
"filing_form": "F3X",
"load_date": "2026-02-24T02:36:07",
"source_url": "https://www.fec.gov/data/disbursements/?committee_id=C00027466&data_type=processed",
"scraped_at": "2026-07-09T18:16:14.032Z"
}
],
"count": 1,
"has_more": false
}
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. Paid plans only (Basic and up): a free key does not include this dataset.
See plans OpenAPI spec → REST docs →Not investment advice. KeyVex is a data publisher: nothing on this site or in API responses is investment, legal, tax, or compliance advice (Terms §8).