---
title: "Returns FEC Schedule B disbursements — itemized records of money flowing OUT of a federal committee to organisations: vendor payments, media / ad buys, consulting firms, payroll services, and committee-to-committee transfers"
method: GET
path: "/v1/fec-disbursements"
---

# Returns FEC Schedule B disbursements — itemized records of money flowing OUT of a federal committee to organisations: vendor payments, media / ad buys, consulting firms, payroll services, and committee-to-committee transfers

`GET /v1/fec-disbursements`

## Request

- Base URL: `https://api.keyvex.com`
- URL: `https://api.keyvex.com/v1/fec-disbursements`
- Auth: API key in header `x-api-key`

Returns FEC Schedule B disbursements — itemized records of money flowing OUT of a federal committee to organisations: vendor payments, media / ad buys, consulting firms, payroll services, and committee-to-committee transfers. The OUT-flow counterpart to get_fec_contributions (Schedule A, money IN).  ORGANISATIONS ONLY: per-record rows are served only when FEC codes the payee as a committee or organisation (COM, CCM, PAC, PTY, ORG). Rows naming a natural person — individual payees (IND), candidates (CAN), 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). Refunds of contributions to individuals are withheld with them.  Source: api.open.fec.gov/v1/schedules/schedule_b/ — the official FEC public-disclosure API. Live queries cover every itemized row; the cached fallback subset carries a $1,000+ ingestion floor (filters small-vendor / payroll noise).  Publication-lag caveat: disbursements only surface when the spending committee FILES its report — monthly filers lag ~20 days, quarterly filers up to ~50 days after the spend. Short since/until windows on recent dates will miss rows whose reports haven't been filed yet.  Killer query patterns:   - What does candidate X's campaign spend money on? Pass     spender_committee_id (their principal campaign committee from     get_fec_candidate_profile). Sort by amount DESC for big spends.   - Which campaigns pay consulting firm Y? Pass recipient_name='Y'.   - Ad-spending patterns: disbursement_purpose_category='ADVERTISING'     + cycle=2026 + sort_by=disbursement_amount DESC.   - Money moving between committees: disbursement_purpose_category=     'TRANSFERS' — recipient_committee_id on each row names the     receiving committee.  Filter combinations note: server-side indexes support one equality filter (spender_committee_id / candidate_id / disbursement_purpose_category / recipient_state) combined with date or amount sort + cycle. Other filters (recipient_name substring, entity_type, exclude_memos) are applied client-side after a wider pre-fetch.  Purpose categories (disbursement_purpose_category): ADVERTISING, CONSULTING, CONTRIBUTIONS, FUNDRAISING, PAYROLL (labeled 'SALARIES' on some rows), TRANSFERS, TRAVEL, ADMINISTRATIVE, MATERIALS, EVENTS, LOANS, REFUNDS, POLLING, OTHER.  Memo rows: FEC tags certain aggregate / subtotal rows with memoed_subtotal=true. These DUPLICATE dollars already counted on other rows — KeyVex DEFAULTS to exclude_memos=true to show real money movement; pass exclude_memos=false to include the raw memo rows (e.g. for matching FEC's own row counts).

## Query parameters

- `sub_id` string
- `spender_committee_id` string
- `recipient_name` string
- `candidate_id` string
- `recipient_state` string
- `disbursement_purpose_category` string
- `entity_type` 'COM' | 'CCM' | 'PAC' | 'PTY' | 'ORG'
- `min_amount` number
- `max_amount` number
- `since` string
- `until` string
- `cycle` integer
- `exclude_memos` boolean
- `sort_by` 'disbursement_date' | 'disbursement_amount'
- `sort_order` 'asc' | 'desc'
- `limit` integer

## Response `200`

JSON envelope: { results: [...], count, has_more }.

## Other responses

- `400`: Invalid parameter.
- `401`: Missing or invalid API key.
- `402`: This tool requires a higher plan (upgrade_required). Retrying will not help.
- `429`: Tier rate/quota limit reached (rate_limited). Retry-After points at the reset.

---

[API](https://skmtc.dev/keyvex/apis/keyvex-api.md) · [All operations](https://skmtc.dev/keyvex/apis/keyvex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/keyvex/apis/keyvex-api/revisions/01c0210c19cd?raw)
