KeyVex
Campaign finance & influence

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.

EndpointGET /v1/fec-disbursements
SourceFEC Schedule B (api.open.fec.gov)
Authx-api-key — a free key works

What 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_idFEC sub_id (globally unique row ID). Direct doc lookup, fastest.
spender_committee_idFEC committee ID doing the spending (e.g., 'C00580100'). Use get_fec_candidate_profile to find the principal committee for a candidate.
recipient_nameCase-insensitive substring against the payee's filed name (vendor, consulting firm, committee, or individual). Substring filter (client-side on the cached path).
candidate_idFEC 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_state2-letter US state code of the recipient (e.g., 'CA', 'TX').
disbursement_purpose_categoryFEC's normalized purpose bucket (e.g., 'ADVERTISING', 'CONSULTING', 'CONTRIBUTIONS', 'FUNDRAISING', 'TRANSFERS', 'TRAVEL', 'PAYROLL', 'OTHER').
entity_typeRecipient entity type code: IND (individual), COM (committee), CCM (candidate committee), PAC, PTY (party), CAN (candidate), ORG (organization — most vendors), UNK (unknown).
min_amountInclusive lower bound on disbursement_amount in dollars. KeyVex's cached subset holds $1,000+ rows; live queries cover every itemized row.
max_amountInclusive upper bound on disbursement_amount.
sinceInclusive lower bound on disbursement_date (YYYY-MM-DD).
untilInclusive upper bound on disbursement_date (YYYY-MM-DD).
cycleElection cycle year (2-year transaction period). Common values: 2026, 2024, 2022.
exclude_memosWhen 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_bySort key. Default: disbursement_date.
sort_orderDefault: desc (most recent / largest first).
limitMaximum 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

Related datasets

Query FEC Disbursements (Schedule B) from your AI

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 →
← All 60+ datasets