---
title: "Returns LD-203 semiannual contribution reports — what registered lobbyists and lobbying firms themselves contribute: FECA campaign contributions, honorary expenses, event/meeting costs, and presidential-library / inaugural-committee donations, each item naming the HONOREE (the covered official who benefited)"
method: GET
path: "/v1/lobbyist-contributions"
---

# Returns LD-203 semiannual contribution reports — what registered lobbyists and lobbying firms themselves contribute: FECA campaign contributions, honorary expenses, event/meeting costs, and presidential-library / inaugural-committee donations, each item naming the HONOREE (the covered official who benefited)

`GET /v1/lobbyist-contributions`

## Request

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

Returns LD-203 semiannual contribution reports — what registered lobbyists and lobbying firms themselves contribute: FECA campaign contributions, honorary expenses, event/meeting costs, and presidential-library / inaugural-committee donations, each item naming the HONOREE (the covered official who benefited). This is the reverse angle of get_lobbying_filings: filings show who pays lobbyists; LD-203 shows where the lobbyists' own money goes. Coverage: 2008→present (~40K filings/year; roughly half are 'no contributions' certifications, excluded by default — set include_empty=true to see them).  Record shape: one record per filing — filer (lobbyist name or registrant firm), filing_year + period (mid_year | year_end), nested contribution_items[] (contribution_type, contributor_name, payee_name, honoree_name, amount, date), flattened honoree_names[] / payee_names[] / contribution_types[], and contributions_total_usd (simple sum of item amounts).  Filters: honoree_name is the political join — substring against any item's honoree (e.g., 'schumer'). registrant_name matches the firm; lobbyist_name the individual filer; payee_name the receiving committee. contribution_type exact values: 'feca' (campaign money), 'honorary', 'meeting', 'presidential_library', 'inaugural_committee'.  Cross-source: pair with get_fec_contributions (the FEC's view of the same FECA money, itemized ≥$200), get_lobbying_filings (the same registrant's client work), get_member_profile (resolve the honoree to party/state/committees).  Pure-publisher posture: filings as posted to the Senate LDA system; contributions_total_usd is arithmetic, not a score.

## Query parameters

- `filing_uuid` string
- `registrant_name` string
- `lobbyist_name` string
- `honoree_name` string
- `payee_name` string
- `contribution_type` string
- `filing_year` integer
- `filer_type` 'lobbyist' | 'registrant'
- `include_empty` boolean
- `since` string
- `until` string
- `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)
