LegiScan Bill Scraper - 50 States & Congress, Status, Sponsors avatar

LegiScan Bill Scraper - 50 States & Congress, Status, Sponsors

Pricing

from $18.00 / 1,000 bills

Go to Apify Store
LegiScan Bill Scraper - 50 States & Congress, Status, Sponsors

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

Scrapers Delight

Maintained by Community

Actor 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, NOT and 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

  1. Create a free Apify account - the free plan includes monthly credit.
  2. Open LegiScan Bill Scraper and choose what to collect: keywords, states, bill URLs or RSS feeds.
  3. Narrow it down with the filters (status, last-action date, match %) and set Max bills.
  4. Click Start. Bills appear in the dataset as each bill page is read.
  5. Download the results as JSON, CSV or Excel, or schedule the run with Only new or changed bills on.

⬇️ Input

ParameterTypeDescription
keywordslistFull-text search terms, e.g. "artificial intelligence", "data privacy". One search per keyword per state. Prefilled.
stateslistALL (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.
billslistLegiScan bill URLs (any tab) or ids like CA AB1 2025, US HB10435 2025.
feedUrlslistLegiScan RSS feed URLs (https://legiscan.com/gaits/feed/<id>.rss).
statusselectAny, Introduced, Engrossed, Enrolled, Passed, Vetoed, Failed, Scheduled (browse only). Default Any.
chamberselectBrowse only: both, House / Assembly, Senate.
billTypeselectBrowse only: all, bills, resolutions, other.
sortByselectDefault (best match for searches, latest action when browsing), latest action, bill number, status.
lastActionWithinDaysintegerKeep bills with an action in the last N days. 0 = any.
lastActionFromdateKeep bills whose last action is on or after YYYY-MM-DD.
minMatchintegerSearches only: minimum LegiScan match %.
excludeKeywordslistDrop bills whose title contains any of these words.
includeSponsorDetailsbooleanAdd each sponsor's role, district, phone and profile links (add-on). Default off.
monitorModebooleanOnly bills that are new or changed since earlier runs delivered them. Default off.
monitorStoreNamestringName of the memory store, to keep separate watchlists. Default legiscan-bill-monitor.
maxResultsintegerMost bills per run, all searches together. Default 10, prefill 5, 0 = no limit.
maxResultsPerSearchintegerMost bills from any one search, listing or feed. 0 = no limit.
compactbooleanCore fields only, for AI and MCP pipelines.
useUnblockerbooleanRead LegiScan pages through Apify's Unblocker (needed: LegiScan checks every page visitor). Default on.
maxConcurrencyintegerMost bill pages loading at once. Default 4.
proxyConfigurationproxyOptional: 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.

FieldMeaningFilled
billKey, state, billNumber, billType, session, sessionYearWhich bill100%
title, descriptionLegiScan's title and summary100%
status, statusCode, statusDate, progressPercentIntroduced / Engrossed / Enrolled / Passed / Vetoed / Failed (codes 1-6)100%
lastActionDate, lastAction, dateIntroducedLatest action; earliest date in the history100%
historyEvery action with date and chamber100%
sponsors, primarySponsor, sponsorNames, sponsorshipSponsors with party and office (some bills list none yet)97%
stateUrl, billTextUrl, stateSourcesThe legislature's own pages and text files100%
legiscanTextUrl, latestTextVersion, latestTextFormatLatest text on LegiScan (e.g. Chaptered, PDF)100%
pendingCommittee, pendingCommitteeUrlCommittee the bill waits in (bills still in committee)48%
votes, voteCountRoll calls: yea, nay, not voting, absent, total, result, link52% have votes
subjectsLegiScan subjects (only some states publish them)39%
codeCitationsCode chapter, article, section and citation type the bill changes45%
relatedBillsSame-as / similar bills in the other chamber27%
statusNote, statusBannere.g. "died in committee", "Completed Legislative Action"18% / 45%
changeType, previousStatus, previousLastActionDate, previousLastActionnew / updated / unchanged against earlier runsevery row / updated rows
source, searchKeyword, searchState, feedUrl, matchPercent, positionWhere the row came fromper source
sponsors[].role, district, phone, contactUrl, stateProfileUrl, ballotpediaUrl, voteSmartUrl, followTheMoneyUrlSponsor details add-on100% 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:

EventPriceWhen
Bill$0.018 per bill ($18 per 1,000)every bill row
Sponsor details$0.016 per billbills whose Sponsors tab was added (add-on on)
RunCost
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.

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_SUMMARY record.
  • Run summary: the RUN_SUMMARY record 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.