Lobbying Disclosures
Filing-level data from the Senate Lobbying Disclosure Act (LDA) database, normalized into the same bearer-authenticated, cursor-paginated shape as the rest of the Archivist.
Authentication
This endpoint uses the same bearer-token contract as the rest of the Archivist. Pass your key in the Authorization header — send `Authorization: Bearer $ARCHIVIST_KEY` on every request and you’re in. No cookies, no sessions, no CSRF surface.
curl 'https://api.archivist.dev/lobbying-disclosures?filing_year=2025' \
-H "Authorization: Bearer $ARCHIVIST_KEY" \
-H "Accept: application/json"const res = await fetch(
'https://api.archivist.dev/lobbying-disclosures?filing_year=2025',
{
headers: {
Authorization: `Bearer ${process.env.ARCHIVIST_KEY}`,
Accept: 'application/json',
},
},
);
if (!res.ok) throw new Error(`Archivist ${res.status}`);
const { items, nextCursor } = await res.json();For full key-handling guidance and the 401 / 403 / 429 status table, see Errors & limits on the authentication page.
Endpoint
Filter by registrant_name, client_name, or filing_year and page through results with cursor and limit.
Filing-level mirror of the Senate LDA database — registration, client, quarter, lobbyists, issues, and contacted agencies.
Request
The endpoint accepts the following query parameters.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| registrant_name | query | string | optional | Case-insensitive substring match on the registrant (the lobbying firm or organization). |
| registrant_id | query | string | optional | Exact-match registrant Senate LDA id, e.g. 30210-000. |
| client_name | query | string | optional | Case-insensitive substring match on the client of record. |
| client_id | query | string | optional | Exact-match client Senate LDA id, e.g. 31400-000. |
| lobbyist_name | query | string | optional | Case-insensitive substring match on an individual lobbyist. |
| filing_year | query | integer | optional | Four-digit filing year — the year the report covers (e.g. 2025). |
| filing_period | query | string | optional | Reporting quarter — Q1, Q2, Q3, Q4, or AMENDMENT for a mid-quarter amendment filing. |
| issue_area | query | string | optional | Filter by LDA issue area code — e.g. "TAX" (taxation), "DEF" (defense), "HCR" (health). |
| agency_acted_on | query | string | optional | Filter by the contacted executive branch agency (e.g. "EPA", "DOD"). |
| cursor | query | string | optional | Opaque pagination cursor returned in the previous response. |
| limit | query | integer | optional | Page size, 1–100. Defaults to 25. |
Run it — curl
# 2025 Q2 filings by the registrant "Capstone Partners"
curl 'https://api.archivist.dev/lobbying-disclosures?registrant_name=Capstone&filing_year=2025&filing_period=Q2' \
-H "Authorization: Bearer $ARCHIVIST_KEY"Run it — JavaScript
Plain fetch — no SDK, no runtime dependency. The key reads from env at server startup.
const res = await fetch(
'https://api.archivist.dev/lobbying-disclosures?registrant_name=Capstone&filing_year=2025&filing_period=Q2',
{ headers: { Authorization: `Bearer ${process.env.ARCHIVIST_KEY}` } },
);
const { items, nextCursor } = await res.json();
for (const f of items) {
console.log(`${f.registrant_name} → ${f.client_name} — $${f.amount.toLocaleString()} (${f.filing_period})`);
}Response
Successful responses are 200 OK with the shape below. Errors come back as { "error": "..." } — see the error reference for the full status table.
| Field | Type | Required | Description |
|---|---|---|---|
| items | LobbyingDisclosureItem[] | required | Page of filings, newest filing_date first — amendments land interleaved with their quarter. |
| items[].filing_id | string | required | Senate LDA filing id, e.g. 30210-002-2025-Q1 — joins registrant + client + period. |
| items[].registrant_id | string | required | Senate LDA registrant id. Stable across filings by the same firm. |
| items[].registrant_name | string | required | Display name of the lobbying firm or organization that filed. |
| items[].client_id | string | required | Senate LDA client id — the entity paying for the lobbying activity. |
| items[].client_name | string | required | Client of record as it appears on the filing. |
| items[].filing_period | "Q1" | "Q2" | "Q3" | "Q4" | "AMENDMENT" | required | Reporting quarter — Q1–Q4 for scheduled filings, AMENDMENT for a mid-quarter update. |
| items[].filing_year | integer | required | Filing year the report covers (e.g. 2025). |
| items[].filing_date | string | required | ISO 8601 date the Senate received the filing. |
| items[].posted_date | string | required | ISO 8601 date the filing became publicly searchable in the LDA database. |
| items[].amount | number | required | Income or expense total reported on the filing, in nominal USD — see type to disambiguate. |
| items[].amount.mandatory_discretionary | "income" | "expense" | required | Whether the registrant reported on an income or expense basis for this period. |
| items[].lobbyists | Lobbyist[] | required | Individual lobbyists who covered the engagement during this period. |
| items[].lobbyists[].name | string | required | Lobbyist display name. |
| items[].lobbyists[].bioguide_id | string | null | optional | Library of Congress Bioguide id when the lobbyist is a former member. |
| items[].issues | LobbyingIssue[] | required | Issue areas and specific lobbying activity described in the filing. |
| items[].issues[].code | string | required | LDA issue area code — "TAX", "DEF", "HCR", etc. |
| items[].issues[].specific_issues | string | required | Free-text description of the specific lobbying activity. |
| items[].agencies | string[] | required | Executive agencies contacted during this period (House/Senate lobbying). |
| items[].source_url | string | required | Canonical Senate LDA disclosure URL for the filing. |
| nextCursor | string | null | required | Pass into the next page; null on the last page. |
{
"items": [
{
"filing_id": "30210-002-2025-Q2",
"registrant_id": "30210-002",
"registrant_name": "Capstone Partners, LLP",
"client_id": "31400-000",
"client_name": "Helios Energy Council",
"filing_period": "Q2",
"filing_year": 2025,
"filing_date": "2025-07-22",
"posted_date": "2025-07-23",
"amount": 320000,
"amount.mandatory_discretionary": "income",
"lobbyists": [
{ "name": "Maya Iverson", "bioguide_id": null },
{ "name": "Tom Yarrow", "bioguide_id": "Y000123" }
],
"issues": [
{
"code": "ENG",
"specific_issues": "Monitored renewable tax credit implementation; engaged with Treasury and DOE staff."
}
],
"agencies": ["Department of Energy", "Department of the Treasury"],
"source_url": "https://lda.senate.gov/filings/public/30210-002-2025-Q2/"
}
],
"nextCursor": "eyJmaWxpbmdfZGF0ZSI6IjIwMjUtMDctMjIifQ=="
}- The list endpoint is cursor-paginated and stable as new filings land at the top — re-paginating with the same cursor returns the same items.
- A filing whose period is AMENDMENT is a mid-quarter update; treat it as superseding the original Q1–Q4 filing for the same registrant + client pair.
- issues[].code is the Senate LDA issue-area taxonomy; see senate.gov for the full list of codes.
- amount is reported on an income basis by lobbyist-led firms and on an expense basis by self-employed lobbyists — always read amount.mandatory_discretionary before comparing.