v1 · Senate LDA mirror
/docs/lobbying-disclosures

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.

GEThttps://api.archivist.dev/lobbying-disclosures

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.

GET /lobbying-disclosures···
curl 'https://api.archivist.dev/lobbying-disclosures?filing_year=2025' \
  -H "Authorization: Bearer $ARCHIVIST_KEY" \
  -H "Accept: application/json"
node-fetch.js···
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.

Endpoint · Lobbying disclosures
Lobbying disclosures

Filing-level mirror of the Senate LDA database — registration, client, quarter, lobbyists, issues, and contacted agencies.

GEThttps://api.archivist.dev/lobbying-disclosures

Request

The endpoint accepts the following query parameters.

Request parameters
NameInTypeRequiredDescription
registrant_namequerystringoptionalCase-insensitive substring match on the registrant (the lobbying firm or organization).
registrant_idquerystringoptionalExact-match registrant Senate LDA id, e.g. 30210-000.
client_namequerystringoptionalCase-insensitive substring match on the client of record.
client_idquerystringoptionalExact-match client Senate LDA id, e.g. 31400-000.
lobbyist_namequerystringoptionalCase-insensitive substring match on an individual lobbyist.
filing_yearqueryintegeroptionalFour-digit filing year — the year the report covers (e.g. 2025).
filing_periodquerystringoptionalReporting quarter — Q1, Q2, Q3, Q4, or AMENDMENT for a mid-quarter amendment filing.
issue_areaquerystringoptionalFilter by LDA issue area code — e.g. "TAX" (taxation), "DEF" (defense), "HCR" (health).
agency_acted_onquerystringoptionalFilter by the contacted executive branch agency (e.g. "EPA", "DOD").
cursorquerystringoptionalOpaque pagination cursor returned in the previous response.
limitqueryintegeroptionalPage size, 1–100. Defaults to 25.

Run it — curl

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.

lobbying-disclosures.js···
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.

Response schema
FieldTypeRequiredDescription
itemsLobbyingDisclosureItem[]
required
Page of filings, newest filing_date first — amendments land interleaved with their quarter.
items[].filing_idstring
required
Senate LDA filing id, e.g. 30210-002-2025-Q1 — joins registrant + client + period.
items[].registrant_idstring
required
Senate LDA registrant id. Stable across filings by the same firm.
items[].registrant_namestring
required
Display name of the lobbying firm or organization that filed.
items[].client_idstring
required
Senate LDA client id — the entity paying for the lobbying activity.
items[].client_namestring
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_yearinteger
required
Filing year the report covers (e.g. 2025).
items[].filing_datestring
required
ISO 8601 date the Senate received the filing.
items[].posted_datestring
required
ISO 8601 date the filing became publicly searchable in the LDA database.
items[].amountnumber
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[].lobbyistsLobbyist[]
required
Individual lobbyists who covered the engagement during this period.
items[].lobbyists[].namestring
required
Lobbyist display name.
items[].lobbyists[].bioguide_idstring | nulloptionalLibrary of Congress Bioguide id when the lobbyist is a former member.
items[].issuesLobbyingIssue[]
required
Issue areas and specific lobbying activity described in the filing.
items[].issues[].codestring
required
LDA issue area code — "TAX", "DEF", "HCR", etc.
items[].issues[].specific_issuesstring
required
Free-text description of the specific lobbying activity.
items[].agenciesstring[]
required
Executive agencies contacted during this period (House/Senate lobbying).
items[].source_urlstring
required
Canonical Senate LDA disclosure URL for the filing.
nextCursorstring | null
required
Pass into the next page; null on the last page.
response···
{
  "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=="
}
Notes
  • 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.