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)
Source Description Update Frequency
US Senate LDA Lobbying Disclosure Act filings Quarterly

Corporate lobbying data has 15+ years of historical filings available for long-horizon backtesting and historical analysis.

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.

Field Description Example
clientName Company being represented Apple Inc.
registrantName Lobbying firm hired Lobbying Firm LLC
income Income reported by registrant (USD) 50000
expenses Expenses reported by registrant (USD) 75000
issueCodes Policy areas lobbied on [“TAX”, “TRD”, “COM”]
governmentEntities Government bodies engaged [“Senate”, “House”]
quarter Filing quarter Q3
filingYear Filing year 2025
Code Policy Area
TAX Taxation/Internal Revenue Code
TRD Trade (Domestic and Foreign)
COM Communications/Broadcasting/Radio/TV
CPT Computer Industry
ENV Environmental/Superfund
HCR Health Issues
DEF Defense
FIN Financial Institutions/Investments/Securities
IMM Immigration
TEC Telecommunications

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")