LegiScan Bill Scraper - 50 States & Congress, Status, Sponsors
Pricing
from $18.00 / 1,000 bills
LegiScan Bill Scraper - 50 States & Congress, Status, Sponsors
Scrape LegiScan bills for all 50 states, DC and US Congress: keyword search, a state's whole session or bill URLs. Each row: status and date, last action, sponsors with party, history, roll-call votes, subjects, committee, state text links. Monitor mode, RSS feeds. No API key, no login.
Pricing
from $18.00 / 1,000 bills
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does LegiScan Bill Scraper do?
LegiScan Bill Scraper pulls legislation from LegiScan for all 50 states, Washington D.C. and the US Congress. Give it keywords, a state, bill numbers or a LegiScan RSS feed, and it returns one row per bill read from the bill's LegiScan page: status and date, last action, sponsors with party, the full action history, roll-call votes, subjects, the committee it is waiting in, and links to the bill text on the legislature's own site. Government-affairs teams, lobbyists, compliance teams, journalists and researchers use it to track bills by topic without opening 50 state websites.
Also known as: LegiScan scraper, state legislation tracker, bill tracking API, legislative monitoring tool.
- 🔎 Keyword search through LegiScan's own full-text engine, nationally or state by state (
AND,OR,NOTand quotes work) - 🗂️ Browse a whole session: every current bill of a state, filtered by status (introduced, engrossed, enrolled, passed, vetoed, scheduled), chamber and bill type
- 📄 Bill lookups: paste LegiScan URLs or ids like
CA AB1 2025 - 📡 RSS feeds: turn any LegiScan committee or sponsor feed into bill rows
- 🔁 Monitor mode: a scheduled run returns only bills that are new or have a new action or status, with the previous values next to the new ones
- 👥 Sponsor details add-on: role (Primary / Cosponsor / Joint), district, capitol phone and profile links per sponsor
- 🔑 No LegiScan account, no API key, no cookies
- 🔌 Export as JSON, CSV or Excel, or connect through the Apify API, webhooks, Make, Zapier, n8n or MCP
What data can you get from LegiScan?
🏛️ State, session and bill number (billKey) | 📌 Title and description | 🚦 Status, status date, progress % |
| ⏱️ Last action and its date | 📅 Introduced date | 🏢 Committee it is pending in |
| 👤 Sponsors: name, party, office, LegiScan id | ⭐ Primary sponsor | ⚖️ Partisanship line (e.g. Bipartisan Bill) |
| 📜 Full action history (date, chamber, action) | 🗳️ Roll-call votes: yea, nay, not voting, absent, result | 🏷️ Subjects |
| 📚 Code sections the bill changes | 🔗 Same-as / similar bills | 📝 Latest text version and format |
| 🌐 Legislature's bill page and text link | 🔄 Change type + previous status/action (monitoring) | ☎️ Sponsor role, district, phone (add-on) |
How to scrape LegiScan with LegiScan Bill Scraper
- Create a free Apify account - the free plan includes monthly credit.
- Open LegiScan Bill Scraper and choose what to collect: keywords, states, bill URLs or RSS feeds.
- Narrow it down with the filters (status, last-action date, match %) and set Max bills.
- Click Start. Bills appear in the dataset as each bill page is read.
- Download the results as JSON, CSV or Excel, or schedule the run with Only new or changed bills on.
⬇️ Input
| Parameter | Type | Description |
|---|---|---|
keywords | list | Full-text search terms, e.g. "artificial intelligence", "data privacy". One search per keyword per state. Prefilled. |
states | list | ALL (all states + Congress), US (Congress), DC or two-letter state codes. With keywords: where to search. Without keywords: browse each state's whole current session. Prefilled ALL. |
bills | list | LegiScan bill URLs (any tab) or ids like CA AB1 2025, US HB10435 2025. |
feedUrls | list | LegiScan RSS feed URLs (https://legiscan.com/gaits/feed/<id>.rss). |
status | select | Any, Introduced, Engrossed, Enrolled, Passed, Vetoed, Failed, Scheduled (browse only). Default Any. |
chamber | select | Browse only: both, House / Assembly, Senate. |
billType | select | Browse only: all, bills, resolutions, other. |
sortBy | select | Default (best match for searches, latest action when browsing), latest action, bill number, status. |
lastActionWithinDays | integer | Keep bills with an action in the last N days. 0 = any. |
lastActionFrom | date | Keep bills whose last action is on or after YYYY-MM-DD. |
minMatch | integer | Searches only: minimum LegiScan match %. |
excludeKeywords | list | Drop bills whose title contains any of these words. |
includeSponsorDetails | boolean | Add each sponsor's role, district, phone and profile links (add-on). Default off. |
monitorMode | boolean | Only bills that are new or changed since earlier runs delivered them. Default off. |
monitorStoreName | string | Name of the memory store, to keep separate watchlists. Default legiscan-bill-monitor. |
maxResults | integer | Most bills per run, all searches together. Default 10, prefill 5, 0 = no limit. |
maxResultsPerSearch | integer | Most bills from any one search, listing or feed. 0 = no limit. |
compact | boolean | Core fields only, for AI and MCP pipelines. |
useUnblocker | boolean | Read LegiScan pages through Apify's Unblocker (needed: LegiScan checks every page visitor). Default on. |
maxConcurrency | integer | Most bill pages loading at once. Default 4. |
proxyConfiguration | proxy | Optional: your own proxy URLs, tried before the Unblocker. |
Input JSON
{"keywords": ["artificial intelligence"],"states": ["CA", "NY", "TX"],"status": "any","lastActionWithinDays": 30,"includeSponsorDetails": false,"monitorMode": true,"maxResults": 200}
Search with keywords, browse with states only
With keywords, each keyword is searched in each state you pick (or nationally with ALL). Leave keywords empty and pick states to get every bill of their current session instead - for example {"states": ["NJ"], "status": "passed"} returns New Jersey's passed bills, latest action first. Chamber and bill-type filters work in this browse mode.
Use a date window on scheduled runs
lastActionWithinDays (or lastActionFrom) is checked on LegiScan's result list before any bill page is read, and searches with a date window are read newest-first, so a weekly run with lastActionWithinDays: 7 stops at the first bill older than a week.
Bills from earlier sessions
LegiScan shows the current session of each legislature to signed-out visitors; pages from earlier sessions answer with LegiScan's sign-in form. Those bills are listed in the run summary as "shown to signed-in LegiScan users only" and are not charged.
⬆️ Output
One row per bill. A real row from a test run (lists shortened):
{"billKey": "MD-SB597-2026","state": "MD","billNumber": "SB597","session": "2026 Regular Session","title": "Higher Education - Maryland Artificial Intelligence Partnership","status": "Passed","statusCode": 4,"statusDate": "2026-05-26","lastActionDate": "2026-05-26","lastAction": "Approved by the Governor - Chapter 633","dateIntroduced": "2026-02-05","sponsorship": "Moderate Partisan Bill (Democrat 7-1)","primarySponsor": "Katie Hester","sponsors": [{ "name": "Katie Hester", "title": "Sen.", "office": "Senator", "party": "Democrat", "peopleId": 20956 }],"subjects": ["Administrative Agencies", "Artificial Intelligence", "Budget and Management, Department of"],"votes": [{ "date": "2026-04-13", "chamber": "Senate", "motion": "Third Reading Passed", "yea": 46, "nay": 0, "notVoting": 1, "absent": 0, "passed": true }],"history": [{ "date": "2026-05-26", "chamber": "Senate", "action": "Approved by the Governor - Chapter 633" }],"legiscanUrl": "https://legiscan.com/MD/bill/SB597/2026","stateUrl": "https://mgaleg.maryland.gov/mgawebsite/Legislation/Details/SB0597?ys=2026RS","billTextUrl": "https://mgaleg.maryland.gov/2026RS/Chapters_noln/CH_633_sb0597e.pdf","changeType": "new","searchKeyword": "artificial intelligence","matchPercent": 100}
Fields and how often they are filled
Measured on 33 real LegiScan bill pages from 18 jurisdictions (26 from an "artificial intelligence" national search, 7 from California, Alabama, New Jersey and Congress lookups). A field below 100% is empty because LegiScan has nothing to show for that bill, not because it was missed.
| Field | Meaning | Filled |
|---|---|---|
billKey, state, billNumber, billType, session, sessionYear | Which bill | 100% |
title, description | LegiScan's title and summary | 100% |
status, statusCode, statusDate, progressPercent | Introduced / Engrossed / Enrolled / Passed / Vetoed / Failed (codes 1-6) | 100% |
lastActionDate, lastAction, dateIntroduced | Latest action; earliest date in the history | 100% |
history | Every action with date and chamber | 100% |
sponsors, primarySponsor, sponsorNames, sponsorship | Sponsors with party and office (some bills list none yet) | 97% |
stateUrl, billTextUrl, stateSources | The legislature's own pages and text files | 100% |
legiscanTextUrl, latestTextVersion, latestTextFormat | Latest text on LegiScan (e.g. Chaptered, PDF) | 100% |
pendingCommittee, pendingCommitteeUrl | Committee the bill waits in (bills still in committee) | 48% |
votes, voteCount | Roll calls: yea, nay, not voting, absent, total, result, link | 52% have votes |
subjects | LegiScan subjects (only some states publish them) | 39% |
codeCitations | Code chapter, article, section and citation type the bill changes | 45% |
relatedBills | Same-as / similar bills in the other chamber | 27% |
statusNote, statusBanner | e.g. "died in committee", "Completed Legislative Action" | 18% / 45% |
changeType, previousStatus, previousLastActionDate, previousLastAction | new / updated / unchanged against earlier runs | every row / updated rows |
source, searchKeyword, searchState, feedUrl, matchPercent, position | Where the row came from | per source |
sponsors[].role, district, phone, contactUrl, stateProfileUrl, ballotpediaUrl, voteSmartUrl, followTheMoneyUrl | Sponsor details add-on | 100% of 27 sponsors on 3 bills |
LegiScan's internal numeric bill id is not shown on its public pages, so rows carry billKey (e.g. CA-AB1-2025) as the stable id instead.
How can I use LegiScan data?
- 🏛️ Government affairs and lobbying: watch every bill on your issues across states and see the day it moves.
- 🏭 Regulatory compliance: catch new obligations (AI, privacy, cannabis, insurance) while they are still in committee.
- 📰 Journalism: find which states passed similar bills and who sponsored them.
- 🎓 Policy research: build datasets of sponsors, votes and outcomes by state and session.
- 🤝 Advocacy: list the sponsors and committee members to contact for a bill (with the sponsor add-on).
- 🤖 AI pipelines: feed compact bill rows and text links into summarizers or alert bots.
How much does it cost to scrape LegiScan?
Pay per result, no start fee:
| Event | Price | When |
|---|---|---|
| Bill | $0.018 per bill ($18 per 1,000) | every bill row |
| Sponsor details | $0.016 per bill | bills whose Sponsors tab was added (add-on on) |
| Run | Cost |
|---|---|
| 5 bills (the prefilled demo) | $0.09 |
| 100 bills | $1.80 |
| 100 bills with sponsor details | $3.40 |
| 1,000 bills | $18.00 |
Signed-in-only, missing and unreachable bills are not charged, and neither are unchanged bills in monitor mode.
Integrations, API, scheduling & MCP
Schedule the actor in Apify Console (Schedules) with Only new or changed bills on to get a daily or weekly digest, and send it on with webhooks or the Make, Zapier, n8n, Google Sheets and Slack integrations. Developers can start runs and read datasets through the Apify API with the Python or JavaScript client, and AI agents can call it through Apify's MCP server.
More government and legal data scrapers
- SEC EDGAR Funding & Exec-Change Monitor - Form D raises and executive changes as they are filed
- US Business Entity Scraper - Secretary of State company records, agents and filings
- UK Public Contract Award Leads - Contracts Finder awards and suppliers
- Förderkatalog German Federal Grants - federal R&D funding records
- New York State Bar Attorney Scraper - attorney licence lookups
- SEC Investment Adviser Scraper - RIA firms and Form ADV data
See all actors on our profile.
Limits & empty runs
- Speed: every LegiScan page passes a visitor check through Apify's Unblocker, which takes about 20-90 seconds per page. The actor loads 4 pages at a time and spaces them out, because LegiScan answers bursts with its sign-in page. In tests the prefilled run (one search page and 5 bills) took about 2 minutes; plan on roughly 4-6 bills a minute for big runs.
- Sessions: current sessions only (LegiScan's rule for signed-out visitors).
- Size: a search page holds 50 bills; LegiScan reported about 708 current bills for "artificial intelligence" nationally and about 5,100 bills in California's 2025-2026 session.
- Empty runs: a search with no matches finishes with 0 rows and costs nothing; if LegiScan pages cannot be reached at all, the run fails with the reason in its status and the
RUN_SUMMARYrecord. - Run summary: the
RUN_SUMMARYrecord lists, per search, LegiScan's own total, pages read, bills delivered, duplicates, unchanged bills, filtered bills, and bills not found, signed-in only or unreachable.
❓ FAQ
How much does LegiScan Bill Scraper cost?
$0.018 per bill, plus $0.016 per bill when you add sponsor details. There is no start fee, and the free Apify plan's monthly credit covers a few hundred bills.
Do I need a LegiScan API key or account for LegiScan Bill Scraper?
No. It reads LegiScan's public bill pages, so there is no key, login or cookie to supply.
Which legislatures does LegiScan Bill Scraper cover?
All 50 states, Washington D.C. and the US Congress - the same jurisdictions LegiScan covers - for their current sessions.
How do I track bills on a topic with LegiScan Bill Scraper?
Enter your keywords, pick ALL or your states, turn on Only new or changed bills and schedule the run. Each run returns new bills and bills with a new action or status, with previousStatus and previousLastAction filled for the changed ones.
Can LegiScan Bill Scraper get the bill text?
Each row links to the latest text on the legislature's site (billTextUrl, usually a PDF or HTML file), to LegiScan's text page, and to every text version the legislature published (stateSources).
Can LegiScan Bill Scraper read LegiScan RSS feeds?
Yes. Paste a feed URL from a committee, sponsor or dashboard page into LegiScan RSS feeds; every bill in the feed becomes a full row.
Can I use LegiScan Bill Scraper with the Apify API?
Yes. Start runs and fetch results with the Apify API or its Python and JavaScript clients; see the API tab of this actor.
Can AI agents use LegiScan Bill Scraper through MCP?
Yes, through Apify's MCP server. Turn on Compact rows for shorter rows.
Why did LegiScan Bill Scraper return fewer bills than I asked for?
Your filters may have removed them, LegiScan may hold fewer current bills for the search, or some bills were from an earlier session (signed-in only). The RUN_SUMMARY record shows the count for each reason.
Why did LegiScan Bill Scraper return no results?
The search matched nothing in current sessions, every match was filtered out, or (in monitor mode) nothing changed since the last run. None of these is charged.
Your feedback
Missing a field or a filter? Open an issue in the Issues tab and we will look at it.