ParseForge Scrapers

Congress.gov Members Scraper

parseforge/congress-gov-members-scraper

Lead generationOther

Scrapes member profiles from Congress.gov. Returns each member as a flat row with name, party, chamber, state, district, and official URLs. Filter by state, district, congress number, or current status.

Run this scraper See the API call
Total users
1
Monthly active
0
Total runs
95
Bookmarked
0
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

Congress.gov Members Scraper

Scrape member profiles from Congress.gov by state, district, or congress number, up to a million per run. Every record returns the member's name, party, chamber, state, district, and official URLs. Export to CSV, JSON, Excel, or XML.

Congress.gov publishes the official biographies and contact details for every sitting and historical member of the U.S. House and Senate, but browsing them one by one takes hours. This Actor reads the member directory directly, letting you pull a clean list filtered by state, district, or congress number. No screen scraping, no manual copy-paste, a structured dataset you can hand off to your team.

Who uses it What they scrape Congress.gov for
Political researchers Build a complete roster of members for a specific congress or state.
Journalists Pull contact details and party affiliations for a state delegation ahead of a vote.
Advocacy groups Generate a targeted list of legislators by district for a grassroots campaign.
Data analysts Create a historical dataset of member tenure and party shifts across congresses.

What it does

This Actor collects member profiles from Congress.gov and returns each one as a flat row with name, party, chamber, state, district, and official URLs.

  • πŸ—ΊοΈ Filter by state: pull every member from a single state delegation with the two-letter state code.
  • πŸ›οΈ Filter by congress: limit results to members who served in a specific congress, like the 118th or 119th.
  • πŸ“ Filter by district: target a single House district by number, alone or combined with a state code.
  • ⏱️ Current member toggle: check one box to return only currently serving members, skipping historical records.
  • πŸ”‘ API key support: bring your own free congress.gov API key for higher rate limits and faster runs.

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

What you can do with Congress.gov data

πŸ—³οΈ Build a state delegation list.

A campaign staffer sets the state code to TX and the current-member toggle to true, then exports a CSV of every sitting Texas representative and senator with their party and official website.

πŸ“œ Reconstruct a historical congress.

A political science PhD student sets the congress number to 105 and pulls every member who served in that session to analyze committee assignments and party ratios.

πŸ“° Find contact details for a news story.

A reporter sets the state code to OH and the district to 4, gets the member's official URL and party in one row, and uses it to request a comment before deadline.

πŸ“Š Track party representation over time.

A data analyst runs the Actor for congresses 110 through 118, concatenates the CSVs, and charts the shift in party control by state.

Why choose this scraper

What you get
Official source data Every field comes directly from Congress.gov, the authoritative Library of Congress site.
Fixed flat schema One row per member, same columns every run, ready for a spreadsheet or database.
No browser needed Runs headless on the Apify platform, so you can schedule it and forget it.
Bulk export Download as CSV, JSON, Excel, or XML, or pipe the results straight to an API.

How it compares

This Actor focuses exclusively on member profiles from Congress.gov, while the competitors below either bundle members with bills and votes or cover a broader set of political data sources.

Feature ParseForge Congress.gov Scraper Congress.gov Intelligence
Member profiles only (no bills or votes) Yes, dedicated member scraper Not listed Not listed
Filter by state code Yes Not listed Yes
Filter by district number Yes Not listed Not listed
Filter by congress number Yes Not listed Yes
Current member only toggle Yes Not listed Not listed
Runs without an API key Yes Not listed Not listed

Configure the run

Drive the Actor with a state code, congress number, district number, and a current-member toggle, alone or together, and filters run as each member is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
 "maxItems": 10
}

A larger pull:

{
 "maxItems": 200
}

Pricing

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

Results collected Approximate cost
100 results $2.10
1,000 results $21.00
10,000 results $210.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 Congress.gov Members 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 Congress.gov 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/congress-gov-members-scraper"

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

Troubleshooting

Why am I getting no results?

Check that your state code is a valid two-letter abbreviation and that your congress number is correct. If you set both a state code and a district, confirm that district exists in that state. Try removing one filter at a time to see which one is too restrictive.

The run is slow or timing out.

Add your free congress.gov API key in the optional field. The key raises the rate limit significantly. Also lower the 'Maximum members' count if you are pulling a very large set.

I set a district but got a senator in the results.

The district filter applies only to House members. Senators are returned for the state regardless of the district value. Filter the chamber column in your output to remove Senate rows if you only want House members.

The 'Currently Serving Only' toggle is not working as expected.

Make sure you did not also set a past congress number. A congress number from years ago combined with the current-member toggle will return zero results because no one from that old congress is still serving in that same seat.

My API key is valid but the Actor says it is unauthorized.

Confirm the key was copied without extra spaces. A new key from api.congress.gov can take a few minutes to activate. Wait a moment and retry.

FAQ

Question Answer
Do I need a congress.gov API key? No, the Actor works without one. Adding your free API key from api.congress.gov raises the rate limit and speeds up large runs.
What is a congress number? Each two-year session of the U.S. Congress gets a number. The 118th Congress ran from 2023 to 2025, and the 119th runs from 2025 to 2027. Leave the field empty to pull members from all available congresses.
Can I get only current members? Yes. Check the 'Currently Serving Only' box and the Actor will skip former members and return only those in office right now.
Does this return senators, representatives, or both? Both. The Actor returns every member of the U.S. House and Senate that matches your filters. The chamber field tells you which one each row belongs to.
Can I filter by party? The input schema does not include a party filter, but the party field is returned in every row. Pull a larger set and filter by party in your spreadsheet or database.
What does the district filter do? It limits results to a single House district number. Senators do not have districts, so a district filter combined with a state code will return only the House member for that district.
How many members can I scrape in one run? You set the maximum with the 'Maximum members' field, up to one million. The Actor stops when it hits that number or runs out of matching members.
Can I schedule this to run automatically? Yes. Apify's scheduler lets you run the Actor daily, weekly, or on a cron expression, so your member list stays current without manual work.
What export formats are supported? CSV, JSON, Excel, and XML. Pick the one your workflow needs, or use the Apify API to push results directly to another system.
Is this the same data as the Congress.gov website? Yes. Every field comes from the official Congress.gov member directory, maintained by the Library of Congress.

Related actors

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 Library of Congress. 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.

Input

FieldTypeWhat it doesDefault
maxItems integer How many members to collect per run. 10
congress integer e.g. 118, 119. Leave empty for all. not set
stateCode string (50 options) Two-letter state code (e.g. CA, NY) not set
district integer Specific district number not set
currentMember boolean Only members currently serving false
apiKey string Get a free key at https://api.congress.gov. not set

Pricing

from $19.00 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.019 to $0.021

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~congress-gov-members-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run Congress.gov Members Scraper on Apify All scrapers