# Lobbying Disclosure Scraper (US Senate) (`scrapemint/lobbying-disclosure-scraper`) Actor

Who lobbies whom, on what, for how much: official US Senate lobbying disclosure filings by client, lobbying firm, lobbyist or issue, with reported income/expenses, issue areas and named lobbyists including former government positions. Monitor mode for new filings. No API key needed.

- **URL**: https://apify.com/scrapemint/lobbying-disclosure-scraper.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** Business, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Lobbying Disclosure Scraper (US Senate)

Who lobbies whom, on what, and for how much - the official US Senate Lobbying Disclosure Act filings as structured data. Search by client company, lobbying firm, individual lobbyist, or the issue being lobbied, and get every filing with the reported money. No API key needed, no login, no browser.

### What you get

One row per filing:

- **client** (who hired the lobbyists) with state and description
- **registrant** (the lobbying firm or in-house team)
- **reported income or expenses in USD** - the actual disclosed spend
- issue areas and the filing's own description of **what was lobbied** (bill numbers included)
- **named lobbyists, with their former government positions** - the revolving-door data (ex-committee counsel, former agency officials)
- filing type, period, posted date, and links to the official filing and document

### Ways to search

Combine any of these:

```json
{
    "clientName": "openai",
    "issueText": "artificial intelligence",
    "filingYear": 2026
}
````

- **clientName / registrantName / lobbyistName** - partial, case-insensitive matches
- **issueText** - full-text search across what filings say they lobbied on ("stablecoin", "tariffs", "drug pricing", "Section 230")
- **filingYear** - one year, or 0 for everything back to 1999

### Monitor mode

Turn on **newOnly** and schedule it: get alerted when a competitor starts lobbying, a new firm registers for a client, or a new filing lands on your issue. Runs where nothing new arrived cost nothing.

### Who uses this

- **Government-affairs and policy teams**: track competitors' lobbying spend, issues and hired firms.
- **Journalists and researchers**: the influence beat, structured - spend by issue, revolving-door staffing, bill-level detail.
- **Business developers at lobbying and law firms**: spot companies that just started spending, or clients changing firms.
- **Law and policy schools**: real filing data for research and teaching.

Pairs with our Federal Register Monitor (the rules being lobbied about), Government Contract Winner Leads (who wins afterward) and Court Records Scraper.

### Pricing

A small fee per filing row. Searches that match nothing are free note rows, and the first 2 rows of every run are free.

### Notes

- Source: the Senate LDA REST API, the official public record. Quarterly activity reports (LD-2) carry the money; registrations (LD-1) announce new engagements.
- Income is what a firm was paid by the client; expenses are what an organization spent lobbying in-house. `amountUsd` carries whichever the filing reports.
- The anonymous rate limit is modest, so large pulls are paced automatically. For bulk work, add a free API key from lda.senate.gov in the input and the actor speeds up.

# Actor input Schema

## `clientName` (type: `string`):

Company or organization that hired the lobbyists ("google", "pfizer"). Partial match, case-insensitive.

## `registrantName` (type: `string`):

The registrant - the lobbying firm or in-house team that filed ("brownstein", "akin gump"). Partial match.

## `lobbyistName` (type: `string`):

An individual lobbyist's name. Partial match.

## `issueText` (type: `string`):

Full-text search across what the filings say they lobbied on ("artificial intelligence", "stablecoin", "tariffs", "drug pricing").

## `filingYear` (type: `integer`):

Limit to one filing year. 0 = all years (filings go back to 1999).

## `newOnly` (type: `boolean`):

Remember filings already returned and emit only ones not seen before. Run on a schedule to get alerted when a company starts lobbying or a new filing lands on your issue - quiet runs cost nothing.

## `maxRows` (type: `integer`):

Stop after this many filings, newest first.

## `apiKey` (type: `string`):

Optional free API key from lda.senate.gov to raise the rate limit for large pulls. Without it the actor paces itself to the anonymous limit, which is fine for most runs.

## Actor input object example

```json
{
  "issueText": "artificial intelligence",
  "filingYear": 2026,
  "newOnly": false,
  "maxRows": 25
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "issueText": "artificial intelligence",
    "filingYear": 2026,
    "maxRows": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/lobbying-disclosure-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "issueText": "artificial intelligence",
    "filingYear": 2026,
    "maxRows": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/lobbying-disclosure-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "issueText": "artificial intelligence",
  "filingYear": 2026,
  "maxRows": 25
}' |
apify call scrapemint/lobbying-disclosure-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapemint/lobbying-disclosure-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Lobbying Disclosure Scraper (US Senate)",
        "description": "Who lobbies whom, on what, for how much: official US Senate lobbying disclosure filings by client, lobbying firm, lobbyist or issue, with reported income/expenses, issue areas and named lobbyists including former government positions. Monitor mode for new filings. No API key needed.",
        "version": "0.1",
        "x-build-id": "nT1wXCBUp8L7a3hVQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapemint~lobbying-disclosure-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapemint-lobbying-disclosure-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapemint~lobbying-disclosure-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapemint-lobbying-disclosure-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapemint~lobbying-disclosure-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapemint-lobbying-disclosure-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "clientName": {
                        "title": "Client name",
                        "type": "string",
                        "description": "Company or organization that hired the lobbyists (\"google\", \"pfizer\"). Partial match, case-insensitive."
                    },
                    "registrantName": {
                        "title": "Lobbying firm name",
                        "type": "string",
                        "description": "The registrant - the lobbying firm or in-house team that filed (\"brownstein\", \"akin gump\"). Partial match."
                    },
                    "lobbyistName": {
                        "title": "Lobbyist name",
                        "type": "string",
                        "description": "An individual lobbyist's name. Partial match."
                    },
                    "issueText": {
                        "title": "Issue contains",
                        "type": "string",
                        "description": "Full-text search across what the filings say they lobbied on (\"artificial intelligence\", \"stablecoin\", \"tariffs\", \"drug pricing\")."
                    },
                    "filingYear": {
                        "title": "Filing year",
                        "minimum": 0,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Limit to one filing year. 0 = all years (filings go back to 1999).",
                        "default": 2026
                    },
                    "newOnly": {
                        "title": "Monitor mode: new filings only",
                        "type": "boolean",
                        "description": "Remember filings already returned and emit only ones not seen before. Run on a schedule to get alerted when a company starts lobbying or a new filing lands on your issue - quiet runs cost nothing.",
                        "default": false
                    },
                    "maxRows": {
                        "title": "Max filings",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Stop after this many filings, newest first.",
                        "default": 100
                    },
                    "apiKey": {
                        "title": "LDA API key (optional)",
                        "type": "string",
                        "description": "Optional free API key from lda.senate.gov to raise the rate limit for large pulls. Without it the actor paces itself to the anonymous limit, which is fine for most runs."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
