Openfec Search Disbursements
openfec_search_disbursementsSearch itemized committee spending (Schedule B) or get aggregate breakdowns by purpose or recipient. All modes require a committee_id. Use to answer "what is this committee spending money on?" or "who is receiving payments from this committee?"
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Query mode. "itemized" returns individual disbursement records (keyset pagination). "by_purpose" aggregates by purpose category. "by_recipient" aggregates by recipient name. "by_recipient_id" aggregates by recipient committee ID (committee-to-committee transfers). | itemized |
| page | No | Page number (1-indexed) for aggregate modes. Explicit page is rejected in itemized mode, which paginates with cursor. Defaults to 1 for aggregates. | |
| sort | No | Sort field. A "-" prefix sorts descending: use "-disbursement_amount" for the biggest payments first, since the ascending form leads with the most negative rows (refunds and voided payments). Itemized only; OpenFEC sorts by "-disbursement_date" when omitted. | |
| cycle | No | Two-year election cycle (e.g., 2024). Even years only. Itemized mode defaults to the current cycle when omitted — Schedule B spans all history, and an all-history scan of an active committee times out upstream. Pass an explicit cycle to search an earlier period. | |
| cursor | No | Opaque pagination cursor from a previous response of this tool. Itemized mode only (keyset pagination). Valid only for an otherwise-identical call — changing any other argument, including sort, rejects the cursor; omit it to start over. | |
| max_date | No | Latest disbursement date (YYYY-MM-DD). Itemized only. | |
| min_date | No | Earliest disbursement date (YYYY-MM-DD). Itemized only. | |
| per_page | No | Results per page. Itemized mode sends at most 30 upstream, keeping the response under a 100,000-byte budget; a page bounded below your request reports truncated and cap, and next_cursor continues it. | |
| max_amount | No | Maximum amount in dollars. Itemized only. | |
| min_amount | No | Minimum amount in dollars. Itemized only. | |
| committee_id | Yes | Spending committee ID (e.g., C00703975). Get IDs from openfec_search_committees results. Required for all modes. | |
| recipient_city | No | Recipient city. Itemized only. | |
| recipient_name | No | Full-text payee name search. Itemized only. | |
| recipient_state | No | Recipient state. Itemized only. | |
| recipient_committee_id | No | Recipient committee ID (for committee-to-committee transfers). Itemized only. | |
| disbursement_description | No | Full-text description search (e.g., "media buy", "consulting"). Itemized only. | |
| disbursement_purpose_category | No | Purpose category code. Itemized only. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cap | No | The per_page this call applied in place of the one requested — the page-size ceiling for this tool and scope. Present only when truncated is true. | |
| mode | No | Query mode as the server resolved it. Row shapes differ by mode — itemized rows are individual payments, aggregate rows are buckets with a total — so read this rather than inferring the shape from the fields present. | |
| count | No | Total matching disbursements (itemized mode). Check count_is_approximate before quoting it as a figure. | |
| error | No | Present when the call failed. Absent on success. | |
| shown | No | Rows in this page. Present only when truncated is true. | |
| notice | No | Guidance when the response needs context: how to broaden a search that matched nothing, which requested position ran out when disbursements did match, that the total is an estimate, or that the page was bounded below the per_page requested and how to continue. | |
| results | No | Disbursement result set; itemized records or aggregate buckets depending on mode. | |
| committee | No | The committee every row in this response belongs to, carried once instead of repeated in each row. Present only when the query was scoped to a single committee_id; otherwise each row keeps its own committee object. | |
| truncated | No | True when this page holds fewer rows than the per_page requested because a full page would exceed the 100,000-byte response budget, and more rows remain. Absent on a complete page, including a naturally short last page. | |
| pagination | No | Page-based pagination info (aggregate modes only). | |
| totalCount | No | Total matching disbursements or aggregate rows. | |
| next_cursor | No | Pagination cursor for the next page of itemized results. Null when no more pages. | |
| search_criteria | No | Echo of the search filters this call applied, as the server parsed them, minus paging arguments. Always present — compare it against what you sent to confirm every filter was honoured. | |
| count_is_approximate | No | True when OpenFEC reports count as an estimate rather than a tally, which it does on its highest-volume queries. Absent means the count is a tally. |