# Congress.gov Scraper — Bills, Laws & Members (`ponderable_hydrometer/congress-gov-scraper`) Actor

Scrape US Congress data — bills, enacted laws and members with titles, actions, sponsors and dates. Bring your own free api.data.gov key.

- **URL**: https://apify.com/ponderable\_hydrometer/congress-gov-scraper.md
- **Developed by:** [Ponderable Hydrometer](https://apify.com/ponderable_hydrometer) (community)
- **Categories:** Developer tools, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

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

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Congress.gov Scraper — US Bills, Laws & Members

**The authoritative source for US federal legislation, wrapped as a clean paginated actor.** Three modes — **bills**, enacted **laws**, and **members** of Congress — from the official Congress.gov API. Filter by congress, bill/law type and sort, with optional per-bill enrichment (sponsor, policy area, cosponsor/action counts).

For legislative trackers, civic-data tools, and lead-gen (member contact data).

### What you get

**Bills / laws** — `kind`, `congress`, `type`, `number`, `title`, `originChamber`, `latestActionDate`, `latestActionText`, `laws[]`, `updateDate`, `url`. With `includeBillDetail`: also `introducedDate`, `policyArea`, `sponsorName`/`sponsorParty`/`sponsorState`/`sponsorBioguideId`, `cosponsorsCount`, `actionsCount`, `committeesCount`, `constitutionalAuthorityStatementText`.

**Members** — `kind`, `bioguideId`, `name`, `partyName`, `state`, `district`, `chamber`, `termStartYear`, `termEndYear`, `imageUrl`, `updateDate`, `url`.

### Output sample (bill with detail)

```json
{
  "kind": "bill",
  "congress": 118,
  "type": "HR",
  "number": "1",
  "title": "Lower Energy Costs Act",
  "originChamber": "House",
  "latestActionDate": "2023-03-30",
  "latestActionText": "Received in the Senate.",
  "laws": [],
  "updateDate": "2026-06-01",
  "url": "https://api.congress.gov/v3/bill/118/hr/1?format=json",
  "introducedDate": "2023-03-14",
  "policyArea": "Energy",
  "sponsorName": "Rep. Scalise, Steve",
  "sponsorParty": "R",
  "sponsorState": "LA",
  "sponsorBioguideId": "S001176",
  "cosponsorsCount": 20,
  "actionsCount": 41,
  "committeesCount": 8,
  "constitutionalAuthorityStatementText": "..."
}
```

### Input

| Field | Type | Description |
|-------|------|-------------|
| `mode` | string | `bills`, `laws`, or `members`. |
| `congress` | integer | Congress number (e.g. 118). Required for `laws`. |
| `billType` | string | `hr`, `s`, `hjres`, … (bills mode). |
| `lawType` | string | `pub` or `priv` (laws mode). |
| `sort` | string | `updateDate+desc` / `updateDate+asc` (bills mode). |
| `includeBillDetail` | boolean | Enrich each bill with sponsor, policy area, counts (one extra request per bill). |
| `apiKey` | string (secret) | Your free api.data.gov key (DEMO\_KEY fallback). |
| `maxResults` | integer | Cap on rows (default 100). |

### Example input

```json
{
  "mode": "bills",
  "congress": 118,
  "billType": "hr",
  "sort": "updateDate+desc",
  "apiKey": "YOUR_KEY",
  "maxResults": 200
}
```

More: public laws `{"mode":"laws","congress":117,"lawType":"pub","apiKey":"YOUR_KEY"}`; members `{"mode":"members","apiKey":"YOUR_KEY","maxResults":200}`.

### Bring your own key (free, required for real runs)

This actor uses the official Congress.gov API, which needs an **api.data.gov** key — free and instant at <https://api.data.gov/signup/>. Put it in the `apiKey` input (stored as a secret).

If you leave `apiKey` empty, the actor falls back to **`DEMO_KEY`**, which is heavily rate-limited by api.data.gov and only suitable for a quick test — not production runs. A bad key returns 403 and the actor exits cleanly.

### Why this actor

- **Authoritative source** — the official Congress.gov API, not a third-party mirror.
- **Three modes, full paging** — bills / laws / members with limit-offset paging over whole result sets, not just page one.
- **Optional enrichment** — per-bill sponsor, policy area and counts when you need them.

### Pricing

Pay per result — **$4 per 1,000 results** (one result = one bill, law or member). No subscription; you pay only for what you get. (The Congress.gov API key is free and separate.)

### Notes & limits

- The list endpoints have no free-text search param; filter by congress, type, sort and paging.
- Public data; you are responsible for compliant use. Not affiliated with the Library of Congress.

### Related actors

- **CourtListener Scraper** — US case law and court opinions.
- **eCFR Scraper** — US Code of Federal Regulations section text.
- **SEC EDGAR Scraper** — US public-company filings and full-text search.

# Actor input Schema

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

What to fetch: bills, enacted laws, or members of Congress.

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

Congress number, e.g. 118 (2023-24), 117. Required for laws; optional filter for bills.

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

Restrict bills to a type. Requires a congress number too.

## `lawType` (type: `string`):

For laws mode: public or private laws.

## `sort` (type: `string`):

Bills sort order.

## `includeBillDetail` (type: `boolean`):

For each bill, also fetch its detail record (sponsor, policy area, cosponsor/action counts). One extra request per bill — slower and uses more API quota.

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

Bring your own FREE api.data.gov key (get one instantly at https://api.data.gov/signup/). If left empty, the actor falls back to DEMO\_KEY, which is heavily rate-limited and only suitable for testing. Kept secret.

## `maxResults` (type: `integer`):

Cap on number of rows returned.

## Actor input object example

```json
{
  "mode": "bills",
  "congress": 118,
  "billType": "",
  "lawType": "",
  "sort": "updateDate+desc",
  "includeBillDetail": false,
  "maxResults": 100
}
```

# 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 = {
    "congress": 118
};

// Run the Actor and wait for it to finish
const run = await client.actor("ponderable_hydrometer/congress-gov-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 = { "congress": 118 }

# Run the Actor and wait for it to finish
run = client.actor("ponderable_hydrometer/congress-gov-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 '{
  "congress": 118
}' |
apify call ponderable_hydrometer/congress-gov-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Drh3FbhrGu166pQVe/builds/7cz95xcwZ9khyNLNh/openapi.json
