# Congress.gov Bills Tracker API: Sponsors, Actions & CBO (`lathewright/congress-bills-tracker`) Actor

Returns US federal bills from the official Congress.gov API (your free key): sponsors, policy area, latest action, cosponsors, laws enacted, CBO estimates and optional CRS summaries. Filter by congress, chamber, type, update date and title words, or look up bills by number.

- **URL**: https://apify.com/lathewright/congress-bills-tracker.md
- **Developed by:** [lathewright LLC](https://apify.com/lathewright) (community)
- **Categories:** News, Business, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 bill founds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Congress.gov Bills Tracker API: Sponsors, Actions & CBO

Track US federal legislation through the official Congress.gov API with your own free key, for government-affairs teams, newsrooms, compliance staff and AI agents. It costs $0.003 per bill and $0.002 per CRS summary, so 100 bills with summaries cost $0.50.

Follow US federal legislation through the Library of Congress's official **Congress.gov API** with your own free key. List the newest bills and resolutions of any Congress by chamber, type and update date, filter them by words in the title, and get each bill with sponsors, policy area, latest action, cosponsor, action, amendment and committee counts, enacted law numbers, CBO cost estimates and (optionally) the latest CRS summary. Look up specific bills by number. Built for policy monitoring, government-affairs agents, newsrooms and compliance teams.

Built and maintained by **Lathewright**. Lathewright is operated by AI systems under human ownership. A person reviews and approves everything we publish, send and sell. Pay only for what you get: **$0.003 per bill**, **$0.002 per summary**.

### What you can do with it

- **Daily legislative feed**: run with `updatedSince` = yesterday and `titleKeywords` such as `privacy`, `crypto`, `tariff` and push new or changed bills to Slack, email or a tracker.
- **Portfolio of bills**: `billLookup` for the ten bills you follow, scheduled hourly, to catch committee actions, floor votes and enactment.
- **Research**: who sponsors what, by state and party; which bills became law; what the CBO estimated.
- **Agent tool**: "what is the latest action on H.R. 1 in the 119th Congress?" is one call.

### Example tasks

Paste any of these into the Input tab, or send the same JSON through the API. Prices are the per-result prices listed under Pricing.

#### 1. House bills with 'privacy' in the title, updated this month

```json
{
  "congressApiKey": "YOUR_CONGRESS_API_KEY",
  "mode": "recentBills",
  "congress": 119,
  "billType": "hr",
  "titleKeywords": ["privacy"],
  "updatedSince": "2026-10-01",
  "maxBills": 20
}
```

What comes back: One row per bill with `billId`, `title`, `policyArea`, `sponsors`, `introducedDate`, `latestAction`, `becameLaw` and `url`. Up to 20 rows, at most $0.06.

#### 2. Look up two bills by number, with summaries

```json
{
  "congressApiKey": "YOUR_CONGRESS_API_KEY",
  "mode": "billLookup",
  "bills": ["119/hr/1", "118/s/4361"],
  "includeSummary": true
}
```

What comes back: The two bills with sponsors, counts and the latest CRS `summary` when one exists. $0.003 per bill plus $0.002 per summary.

#### 3. Latest Senate bills, list view only

```json
{
  "congressApiKey": "YOUR_CONGRESS_API_KEY",
  "mode": "recentBills",
  "billType": "s",
  "includeDetails": false,
  "maxBills": 10
}
```

What comes back: A lighter row per bill without the detail lookups.

### Input

| Field | Type | Notes |
|---|---|---|
| `congressApiKey` | secret | Free key from api.congress.gov/sign-up (5,000 requests per hour); `DEMO_KEY` for up to 10 test calls a day |
| `mode` | select | `recentBills` or `billLookup` |
| `congress` | integer | 119 = 2025-2026; empty = all |
| `billType` | select | `hr`, `s`, `hjres`, `sjres`, `hconres`, `sconres`, `hres`, `sres`, `all` |
| `updatedSince`, `updatedUntil` | YYYY-MM-DD | Update-date window (UTC) |
| `titleKeywords` | array | Any-match in the title, applied to up to 5,000 scanned bills |
| `bills` | array | `congress/type/number` for `billLookup` |
| `includeDetails` | boolean | Sponsors, policy area, counts, laws, CBO estimates (one extra request per bill) |
| `includeSummary` | boolean | Latest CRS summary text (one more request per bill) |
| `maxBills` | integer | Cap per run |

```json
{ "congressApiKey": "<your key>", "mode": "recentBills", "congress": 119, "billType": "all", "updatedSince": "2026-10-18", "titleKeywords": ["privacy", "artificial intelligence"], "includeDetails": true, "maxBills": 100 }
```

```json
{ "congressApiKey": "<your key>", "mode": "billLookup", "bills": ["119/hr/1", "118/s/4361"], "includeSummary": true }
```

### Output

```json
{
  "type": "bill",
  "billId": "119-hr-9716",
  "congress": 119,
  "billType": "hr",
  "number": "9716",
  "title": "PRIVACY Act",
  "originChamber": "House",
  "introducedDate": "2026-07-15",
  "updateDate": "2026-10-18",
  "latestAction": { "date": "2026-07-15", "text": "Referred to the House Committee on Energy and Commerce." },
  "policyArea": "Crime and Law Enforcement",
  "sponsors": [{ "name": "Rep. Self, Keith [R-TX-3]", "party": "R", "state": "TX", "district": 3, "bioguideId": "S001224" }],
  "cosponsorCount": 7,
  "actionCount": 4,
  "amendmentCount": 0,
  "committeeCount": 1,
  "textVersionCount": 1,
  "summaryCount": 1,
  "laws": [],
  "becameLaw": false,
  "cboCostEstimates": [],
  "summary": "This bill ... (when includeSummary is on)",
  "url": "https://www.congress.gov/bill/119th-congress/house-bill/9716",
  "apiUrl": "https://api.congress.gov/v3/bill/119/hr/9716",
  "source": "api.congress.gov v3"
}
```

Unparseable or unknown bill references become `type: "error"` rows at the reduced rate.

### Pricing

| Event | Price | Notes |
|---|---|---|
| Bill found (`bill`) | $0.003 | Primary event, with details when requested. 100 bills = $0.30 |
| Summary added (`bill-summary`) | $0.002 | Per bill that has a CRS summary, when `includeSummary` is on |
| Failed lookup (`lookup-error`) | $0.0005 | Bad reference or not found |

Plus Apify's standard start fee ($0.00005 per run). No proxies, no browser. Set a **maximum cost per run** and the Actor stops cleanly at the limit.

### How to use it

- **Apify Console**: paste your key, fill in the form, press Start, download JSON, CSV or Excel from the Output tab.
- **API**: `POST https://api.apify.com/v2/acts/lathewright~congress-bills-tracker/run-sync-get-dataset-items?token=<token>` with the input JSON as the body.
- **n8n, Make, Zapier**: use the Apify node/module, pick this Actor, paste the input JSON, schedule it daily with yesterday's date in `updatedSince`.

### Use from an AI agent (MCP)

Add this Actor as a tool in Claude, Cursor, VS Code or any MCP client with `https://mcp.apify.com/?tools=lathewright/congress-bills-tracker`. The Actor description is the tool description, and the input fields above are the tool parameters. Example prompts: "Which House bills mentioning privacy were updated this week?", "Status and sponsors of S. 4361 in the 118th Congress".

### Data source, robots.txt and fair use

- **Congress.gov API v3** (`api.congress.gov/v3/bill...`), run by the Library of Congress. Checked 19 October 2026: the host serves no robots.txt (403 for the file); access is governed by the API's terms, which require a free api.data.gov key (sent as the `X-Api-Key` header, never logged) and allow 5,000 requests per hour per key. The Actor spaces requests 250 ms apart and uses at most one list request per 250 bills plus one request per bill for details and one for summaries.
- Data are public legislative records; sponsor and cosponsor names are those of Members of Congress acting in their public office.
- `DEMO_KEY` (api.data.gov's shared demo key) is limited to 10 requests per day on this API and is only meant for trying the Actor.

### FAQ

**Can I search bill text?** The API has no full-text search; `titleKeywords` filters titles of recently updated bills. Pair with Congress.gov's text endpoints (counted in `textVersionCount`) for full text.

**Which Congress is current?** The 119th (2025-2026). Numbers increase every two years.

**Are votes and members included?** Not in this Actor; it focuses on bills. Actions counts and latest actions capture floor and committee activity.

# Actor input Schema

## `congressApiKey` (type: `string`):

Free key from api.congress.gov/sign-up (issued instantly by api.data.gov; 5,000 requests per hour). `DEMO_KEY` allows only 10 requests per day on this API, for testing.

## `mode` (type: `string`):

`recentBills` lists bills by update date (newest first). `billLookup` fetches the bills in `bills`.

## `congress` (type: `integer`):

E.g. 119 for 2025-2026. Empty = all congresses.

## `billType` (type: `string`):

hr (House bill), s (Senate bill), hjres, sjres, hconres, sconres, hres, sres, or all.

## `updatedSince` (type: `string`):

Only bills updated on or after this date (UTC). Schedule daily with yesterday's date for an alert feed.

## `updatedUntil` (type: `string`):

Upper bound on the update date.

## `titleKeywords` (type: `array`):

Keep bills whose title contains any of these words (case-insensitive). The API has no search; up to 5,000 recently updated bills are scanned per run.

## `bills` (type: `array`):

`congress/type/number`, e.g. `119/hr/1`, `118/s/4361`.

## `includeDetails` (type: `boolean`):

Fetch each bill's detail record: sponsors, policy area, counts, laws, CBO estimates (one extra API request per bill).

## `includeSummary` (type: `boolean`):

Add the latest CRS summary text (one more request per bill that has one; billed as `bill-summary`).

## `maxBills` (type: `integer`):

Cap per run. Each bill is one billable event.

## `compactOutput` (type: `boolean`):

Return only the key fields (smaller, cheaper for AI agents to read).

## Actor input object example

```json
{
  "mode": "recentBills",
  "congress": 119,
  "includeDetails": true,
  "includeSummary": false,
  "maxBills": 10,
  "compactOutput": false
}
```

# Actor output Schema

## `results` (type: `string`):

One JSON object per bill or resolution (or per failed lookup).

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("lathewright/congress-bills-tracker").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("lathewright/congress-bills-tracker").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call lathewright/congress-bills-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lathewright/congress-bills-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/HOPob25fxuzzfAchS/builds/xHfk5Bx9hABnDue9d/openapi.json
