lda_search_filings
Search U.S. Senate LDA filings by client, registrant, lobbyist, year, or issue to reveal lobbying payments and targeted federal agencies.
Instructions
Search US Senate LDA (Lobbying Disclosure Act) filings — who is paid how much to lobby which federal agency on which issue (lda.senate.gov/api/v1/filings, KEYLESS — anonymous access works; optional free LDA_API_KEY only raises the rate limit). Filters (all optional): registrantName (the lobbying firm/in-house filer), clientName, lobbyistName, filingYear (4-digit), filingType (e.g. 'Q1'/'RR'/'YE'), agency (NOTE: /filings/ has NO server-side agency filter — the LDA API silently ignores it, so it is reported in _meta.filtersDropped and NOT applied; government entities are nested per activity in lobbyingActivities[].governmentEntities), issue, page (1-based), pageSize (1..25). Returns { filings:[{ filingUuid, filingType, filingYear, filingPeriod, incomeUsd, expensesUsd, registrant, client, lobbyingActivities:[{issueCode, description, governmentEntities:[names]}], documentUrl, postedDate, terminationDate }] } + honest _meta. HONESTY: totalAvailable is the API's REAL total match count (corpus ~1.95M filings) — NOT the rows on this page; pagination is page-based. incomeUsd/expensesUsd parsed from null-or-decimal-string — null (not reported) → null, NEVER 0 (genuine 0 stays 0); a filing reports EITHER income OR expenses, so the other is typically null. Missing lobbying_activities/government_entities → empty arrays. Genuine no-match → honest empty; 400 → invalid_input; 429 → rate_limited THROWS (Retry-After honored); 5xx/timeout THROWS; 200 non-JSON/non-array results/non-number count → schema_drift. Token rides ONLY in the Authorization: Token header.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number (default 1). Page with the next page number from _meta.notes / when _meta.pagination.hasMore. | |
| issue | No | Filter by the specific lobbying issues text (maps to filing_specific_lobbying_issues), e.g. 'appropriations'. | |
| agency | No | NOTE: /filings/ has NO server-side government-entity filter — the LDA API silently ignores this field (reported in _meta.filtersDropped, never as a narrowed total). Government entities are nested per activity in lobbyingActivities[].governmentEntities; narrow by registrantName/clientName/issue and inspect those nested entities. Retained for discoverability. | |
| pageSize | No | Filings per page, 1..25 (the LDA API caps at 25), default 25. | |
| clientName | No | Filter by the client name (who the lobbying is FOR), e.g. 'Google'. Substring match, upstream-validated. | |
| filingType | No | Filter by the filing type short code (e.g. 'Q1' Q1 report, 'RR' registration, 'YE' year-end). A bad code ⇒ upstream HTTP 400 ⇒ invalid_input (surfaced). | |
| filingYear | No | Filter by filing year, a 4-digit year (e.g. '2024'). Validated ^\d{4}$. | |
| lobbyistName | No | Filter by an individual lobbyist's name. Substring match, upstream-validated. | |
| registrantName | No | Filter by the registrant (the lobbying firm / in-house filer) name, e.g. 'Akin Gump'. Substring match, upstream-validated. |