Russia-Related U.S. Lobbying Disclosures

The dataset consists of U.S. Senate lobbying disclosure filings related to Russia, collected from the LDA Senate API. It includes filings where Russia, Kremlin, or Putin were mentioned in the lobbying issue descriptions, or where Russia was indicated as the country of the client, affiliated organization, or foreign entity. The data covers LD-1 (registrations), LD-2 (quarterly activity reports), and their amendments

DESCRIPTION

Last updated: April 3, 2026 

Coverage period: June 1999 – March 2026 

Available formats: CSV, Parquet, JSON

The dataset enables analysis of Russia-related lobbying activity in the U.S. Congress and executive branch, including identification of foreign-connected clients, tracking of specific legislative issues lobbied, and mapping of registrant-client relationships over time.

The unit of observation is a single filing. Each record includes filing metadata, registrant and client information, reported income and expenses, a list of lobbying activities with issue descriptions and government entities contacted, and disclosures of foreign entities and affiliated organizations.

The dataset is available in Parquet format and CSV (encoding: UTF-8, delimiter: ";"). It contains 6,771 observations across 59 attributes.

Variables

Filing info

  • url — Filing URL on the LDA Senate website

  • filing_uuid — Unique filing identifier

  • filing_type — Filing type code. The filing system went through three reporting period structures: annual (1999–2007, semi-annual Mid-Year/Year-End), and quarterly (2008–present, Q1–Q4). Possible values:

    • RR Registration, RA Registration Amendment

    • MM Mid-Year Report, MMY Mid-Year Report (No Activity), MT Mid-Year Termination, MTY Mid-Year Termination (No Activity), MA Mid-Year Amendment, MAY Mid-Year Amendment (No Activity), M@ Mid-Year Termination Amendment

    • YY Year-End Report, YYY Year-End Report (No Activity), YT Year-End Termination, YTY Year-End Termination (No Activity), YA Year-End Amendment, YAY Year-End Amendment (No Activity), Y@ Year-End Termination Amendment

    • Q1Q4 Quarterly Reports, Q1YQ4Y Quarterly Reports (No Activity), 1T4T Quarterly Terminations, 1A4A Quarterly Amendments, 1@4@ Quarterly Termination Amendments; all have corresponding (No Activity) variants suffixed with Y

  • filing_type_display — Filing type label

  • filing_year — Filing year

  • filing_period — Reporting period; semi-annual 2000–2007, quarterly from 2008

  • filing_period_display — Reporting period label

  • filing_document_url — URL of the original filing document

  • filing_document_content_type — Format of the original filing document: application/pdf or text/html

  • posted_by_name — Name of the person who submitted the filing

  • dt_posted — Date the filing was posted

  • termination_date — Termination date (if applicable)

  • income — Good faith estimate of lobbying-related income from the client, rounded to the nearest $10,000; blank if under $5,000

  • expenses — Good faith estimate of lobbying expenses, rounded to the nearest $10,000; blank if under $5,000

  • expenses_method — Method used to calculate expenses (LDA definitions or Internal Revenue Code)

  • expenses_method_display — Expenses method label

  • lobbying_activities — List of lobbying activity dicts; for each issue area, includes specific bills or executive actions lobbied, lobbyists active that quarter, and government entities contacted

Registrant info

A registrant is a lobbying firm or an organization employing in-house lobbyists.

  • registrant_id — Registrant identifier

  • registrant_url — Registrant URL on the LDA website

  • registrant_house_registrant_id — 9-digit number assigned by the Legislative Resource Center, unique to each registrant-client relationship

  • registrant_name — Registrant's full legal name and any trade name

  • registrant_description — Description of the registrant's business

  • registrant_address_1 through registrant_address_4 — Registrant address fields

  • registrant_different_address — Boolean flag indicating whether the registrant's principal place of business differs from their mailing address; null for older filings

  • registrant_city, registrant_state, registrant_zip — Registrant location

  • registrant_country, registrant_country_display — Registrant country

  • registrant_country_full — Full country name (renamed from registrant_country in the original API)

  • registrant_ppb_country_full — Principal place of business country, if different from address (renamed from registrant_ppb_country in the original API)

  • registrant_contact_name — Registrant contact person

  • registrant_contact_telephone — Registrant contact telephone

  • registrant_dt_updated — Date the registrant record was last updated

Client info

  • client_id — Client identifier

  • client_url — Client URL on the LDA website

  • client_client_id — Client's own ID in the LDA system

  • client_name — Client name

  • client_general_description — General description of the client's business

  • client_client_government_entity — Boolean flag indicating whether the client is a government entity

  • client_client_self_select — Boolean flag indicating whether the client self-selected as a lobbying entity; mostly null

  • client_state, client_state_display — Client state

  • client_country, client_country_display — Client country

  • client_ppb_state, client_ppb_state_display — Client principal place of business state

  • client_ppb_country, client_ppb_country_display — Client principal place of business country

  • client_effective_date — Date the client relationship became effective

Foreign entities and affiliated organizations

  • foreign_entities — List of foreign entities that hold at least 20% equitable ownership in the client, or directly finance or control its lobbying activities; includes name, address, contribution amount, and ownership percentage

  • affiliated_organizations — List of organizations (other than the client) that contribute more than $5,000 toward lobbying activities in a quarter and actively participate in planning or supervising those activities

How to use LDA Scraper

The Honest Leadership and Open Government Act of 2007 (HLOGA) requires the Clerk of the House of Representatives and the Secretary of the Senate to make all documents filed under the LDA (LD-1, LD-2, LD-203) available to the public over the Internet. All of them are available on the LDA website.

1. Get REST API credentials

To get the REST API credentials, you need to register here.

2. Choose the filtering parameters

The detailed API documentation is provided here and offers a human-browsable API. The API allows you to download the following types of data:

Lobbying disclosure documents:

Reference dictionaries (for decoding codes and IDs):

Each endpoint supports filtering. Follow the links above to browse available filter parameters and their possible values.

3. Scrape the data using LDAScraper

To automate the fetching and processing of LDA data, you can use LDAScraper. Below are installation and usage instructions.

LDAScraper
pip install git+https://github.com/Ru-Pro/lda_scraper.git
cd lda-scraper
pip install pandas requests pyarrow

Import the scraper and provide the API key obtained from the LDA website:

LDAScraper
from lda_scraper import LDAScraper
api_key = "your_api_key_here"

As an example, let's fetch all filings related to Russia. We select the filings endpoint and define filter parameters with the possible values that will return all relevant filings:

LDAScraper
# For LD-1 (registrations) and LD-2 (quarterly activity reports) filings, including amendments
baseurl = 'https://lda.senate.gov/api/v1/filings/'
 
# The keys of the parameters are the fields in the database,
# and the values are lists of keywords to search for in those fields.
parameters = {
'client_ppb_country': ['RU'],
'affiliated_organization_country': ['RU'],
'foreign_entity_country': ['RU'],
'client_country': ['RU'],
'filing_specific_lobbying_issues': ['russian', # any of these keywords in the lobbying issues field
'russia',
'kremlin',
'putin']
}
 
scraper = LDAScraper(
baseurl=baseurl,
api_key=api_key,
parameters=parameters
)
 
scraper.scrape_all() # fetch from API saved as JSONL files

Parsing all the JSONL files into a single DataFrame, filling missing values.

LDAScraper
scraper.parse_all()
 
# After parsing, the data is in scraper.disclosers_df
scraper.disclosers_df.head()

Saving the parsed DataFrame to CSV, JSONL or parquet files in processed_data_folder.

LDAScraper
scraper.save_csv()
scraper.save_json()
scraper.save_parquet()
Subscribe to our newsletter to stay up to date with the Russia Program’s latest work
CONTACT US
 INSTITUTE FOR EUROPEAN, RUSSIAN AND EURASIAN STUDIES 1957 E St NW Washington, DC 20052

1957 E St., NW, Suite 412,
Washington, DC 20052

russiaprogram@gwu.edu
+1 (202) 9946340

CONTACT US
 INSTITUTE FOR EUROPEAN, RUSSIAN AND EURASIAN STUDIES 1957 E St NW Washington, DC 20052

1957 E St., NW, Suite 412,
Washington, DC 20052

russiaprogram@gwu.edu
+1 (202) 9946340