Skip to content

Corporate Lobbying Dataset

Track corporate lobbying activity from US Senate Lobbying Disclosure Act (LDA) filings. See which companies spend on lobbying, which firms represent them, what policy issues they target, and which government entities they engage.

The Corporate Lobbying dataset provides:

  • Filing Details: Date, filing year, quarter, and unique filing identifier
  • Registrant Information: Lobbying firm name and client company
  • Financial Data: Income and expenses reported per filing
  • Issue Codes: Policy areas lobbied on (e.g., TAX, TRD, COM)
  • Government Entities: Bodies engaged (e.g., Senate, House)
SourceDescriptionUpdate Frequency
US Senate LDALobbying Disclosure Act filingsQuarterly
from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
df = fb.corporate_lobbying.ticker("AAPL", as_dataframe=True)
print(df)

For complete code examples in Python, JavaScript, C++, Rust, and cURL, see the API Reference.

FieldDescriptionExample
clientNameCompany being representedApple Inc.
registrantNameLobbying firm hiredLobbying Firm LLC
incomeIncome reported by registrant (USD)50000
expensesExpenses reported by registrant (USD)75000
issueCodesPolicy areas lobbied on[“TAX”, “TRD”, “COM”]
governmentEntitiesGovernment bodies engaged[“Senate”, “House”]
quarterFiling quarterQ3
filingYearFiling year2025
CodePolicy Area
TAXTaxation/Internal Revenue Code
TRDTrade (Domestic and Foreign)
COMCommunications/Broadcasting/Radio/TV
CPTComputer Industry
ENVEnvironmental/Superfund
HCRHealth Issues
DEFDefense
FINFinancial Institutions/Investments/Securities
IMMImmigration
TECTelecommunications

Scan a list of tickers to find companies with the highest lobbying spend:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
def scan_lobbying_spend(symbols):
"""Find companies with the highest lobbying spend"""
results = []
for symbol in symbols:
try:
df = fb.corporate_lobbying.ticker(symbol, as_dataframe=True)
total_spend = df["income"].sum() + df["expenses"].sum()
results.append({
"symbol": symbol,
"filings": len(df),
"total_spend": total_spend
})
except Exception:
continue
return sorted(results, key=lambda x: x["total_spend"], reverse=True)
tech_symbols = ["AAPL", "MSFT", "GOOGL", "AMZN", "META"]
spenders = scan_lobbying_spend(tech_symbols)
for s in spenders:
print(f"{s['symbol']}: {s['filings']} filings, ${s['total_spend']:,.0f} total spend")

Track how a company’s lobbying spend changes quarter over quarter:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
def quarterly_lobbying_trend(symbol):
"""Analyze lobbying spend by quarter"""
df = fb.corporate_lobbying.ticker(symbol, as_dataframe=True)
df["period"] = df["filingYear"].astype(str) + "-" + df["quarter"]
df["total_spend"] = df["income"] + df["expenses"]
quarterly = df.groupby("period").agg(
filings=("total_spend", "count"),
total_spend=("total_spend", "sum"),
registrants=("registrantName", "nunique")
).sort_index()
return quarterly
trend = quarterly_lobbying_trend("AAPL")
for period, row in trend.iterrows():
print(f"{period}: ${row['total_spend']:,.0f} across {row['registrants']} firms "
f"({row['filings']} filings)")

Discover which policy areas a company focuses its lobbying efforts on:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
def analyze_issue_codes(symbol):
"""Break down lobbying by policy area"""
df = fb.corporate_lobbying.ticker(symbol, as_dataframe=True)
# Explode issueCodes list into individual rows
exploded = df.explode("issueCodes")
issue_counts = exploded.groupby("issueCodes").agg(
filings=("issueCodes", "count"),
total_income=("income", "sum")
).sort_values("filings", ascending=False)
return issue_counts
issues = analyze_issue_codes("AAPL")
for code, row in issues.iterrows():
print(f"{code}: {row['filings']} filings, ${row['total_income']:,.0f} income")