GovTrack US Congress Scraper avatar

GovTrack US Congress Scraper

Pricing

from $29.93 / 1,000 results

Go to Apify Store
GovTrack US Congress Scraper

GovTrack US Congress Scraper

Scrapes GovTrack for lawmaker roles, bills, and roll-call votes. Returns flat rows with all public fields. Filter by congress and chamber.

Pricing

from $29.93 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

5 days ago

Last modified

Share

ParseForge

GovTrack US Congress Scraper

Scrape US Congress data from GovTrack: lawmakers, bills, and roll-call votes, up to a million records per run. Each record comes in a flat, consistent schema with all public fields. No API key or registration. Export to CSV, JSON, Excel, or XML.

GovTrack's official API was discontinued, and the raw site is built for humans, not data pipelines. This Actor reads the public GovTrack pages directly and returns structured rows for lawmaker roles, legislation, and roll-call votes, filtered by congress number and chamber. It is the fastest way to get congressional data into your spreadsheet or database.

Who uses itWhat they scrape GovTrack for
Policy analystsTracking which bills are moving in a specific congress
JournalistsGetting contact details and voting records for lawmakers
Academic researchersBuilding datasets of roll-call votes for quantitative analysis
Advocacy groupsMonitoring legislation relevant to their cause

What it does

This Actor collects lawmaker roles, bills, or roll-call votes from GovTrack and returns each record as a flat row with all public fields.

  • ๐Ÿ›๏ธ Three entity types: lawmaker roles, bills, and roll-call votes, each with its own fixed schema.
  • ๐Ÿ”ข Congress filter: limit results to a specific congress number, from the 1st to the 200th.
  • ๐Ÿ  Chamber filter: choose House, Senate, or both for roles and votes.
  • โฑ๏ธ Current-only toggle: for roles, return only currently sitting lawmakers.
  • ๐Ÿ“Š Flat output: every record is a single row, ready for CSV, JSON, Excel, or XML.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with GovTrack data

๐Ÿ“ˆ Track legislation by congress.

A policy analyst sets entity to bill and congress to 118 to get every bill introduced in the current session, then filters by chamber to focus on Senate activity.

๐Ÿ—ณ๏ธ Analyze roll-call votes.

A political scientist scrapes all roll-call votes for the 117th Congress and joins them with lawmaker roles to study party discipline.

๐Ÿ“‡ Build a lawmaker directory.

A journalist selects roles with currentOnly true to get a clean list of sitting members, including official contact details for outreach.

๐Ÿ›๏ธ Monitor chamber-specific activity.

An advocacy group filters votes by chamber to track how House members vote on a particular issue, then exports the data for a report.

Why choose this scraper

What you get
No API keyGovTrack's API is discontinued; this Actor reads the public site directly.
Up to 1M recordsPaid users can pull up to a million records per run; free users get a 10-record preview.
Consistent schemaEvery entity type returns a flat, predictable row, so you can merge datasets without cleaning.
Export anywhereDownload as CSV, JSON, Excel, or XML, or push to Apify storage.

How it compares

This Actor scrapes GovTrack directly, while the Congress.gov Scraper uses the official Congress.gov API; both return similar congressional data but with different sources and coverage.

FeatureParseForgeGovTrack US Congress ScraperCongress.gov Scraper
Lawmaker roles with contact detailsYesYesYes
Bill metadataYesYesYes
Roll-call vote recordsYesYesNot listed
Filter by congress numberYesNot listedNot listed
Filter by chamberYesNot listedNot listed
Current-only lawmakersYesNot listedNot listed
Committee dataNot listedNot listedYes

Configure the run

Drive the Actor by selecting an entity type, then optionally filter by congress number, chamber, and current status. Filters run as each record is read, so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
"entity": "role",
"maxItems": 10
}

A larger pull:

{
"entity": "role",
"maxItems": 200
}

Pricing

Pay-per-result: $0.0399 per result collected. You pay only for the results written to your dataset.

Results collectedApproximate cost
100 results$3.99
1,000 results$39.90
10,000 results$399.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the GovTrack US Congress Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to GovTrack through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/govtrack-congress-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check your filters. If you set congress to a number that does not exist or chamber to a value that has no records for the selected entity, you will get an empty dataset. Try clearing filters and running again.

Why did I only get 10 records?

Free users are limited to 10 records per run as a preview. Upgrade to a paid plan to increase maxItems up to 1,000,000.

Why is currentOnly ignored for bills?

The currentOnly filter only applies to lawmaker roles. Bills and votes do not have a current status, so the filter is ignored for those entity types.

Why does the run fail with a timeout?

Large requests can take time. Increase the Actor's timeout in the run settings, or reduce maxItems to a smaller number.

Can I get data from before the 1st Congress?

No. The congress input has a minimum of 1, which corresponds to the 1st United States Congress (1789-1791).

FAQ

QuestionAnswer
Does this Actor use the GovTrack API?No. GovTrack's API was discontinued, so this Actor scrapes the public GovTrack website directly. You do not need an API key or registration.
What is the difference between the three entity types?Role returns lawmaker roles with contact details and party affiliation. Bill returns legislation metadata like title, sponsor, and status. Vote returns roll-call vote records with totals and individual positions.
Can I filter by a specific congress?Yes. Set the congress input to any number from 1 to 200. Leave it empty to get all congresses.
How do I get only current lawmakers?Set currentOnly to true when entity is role. This returns only currently sitting members. The filter is ignored for bills and votes.
What is the maximum number of records I can get?Free users are limited to 10 records per run as a preview. Paid users can set maxItems up to 1,000,000.
Can I filter by chamber?Yes. Set chamber to house or senate. This applies to roles and votes. Leave it empty for all chambers.
What output formats are supported?You can export the dataset as CSV, JSON, Excel, or XML from the Apify platform.
Is the data live?Yes. Each run scrapes the current GovTrack pages, so you get the latest public information.
Can I schedule this Actor to run regularly?Yes. Use Apify's scheduler to run it daily, weekly, or on a custom cron schedule.
Does this Actor handle pagination?Yes. It automatically follows pagination on GovTrack to collect all matching records up to your maxItems limit.

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Civic Impulse, LLC. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.