OpenStates Legislation Crawler - 50-State Bill Tracker
Pricing
Pay per event
OpenStates Legislation Crawler - 50-State Bill Tracker
Track state legislation across all 50 US states via the Open States API. Filter by state, session, subject, keyword, or date. Outputs bill metadata, sponsor details, vote records, and legislative actions -- ideal for AI policy monitoring, compliance tracking, and government intelligence.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract state legislation records from the Open States API v3 covering all 50 US states, Washington DC, and Puerto Rico. Filter bills by jurisdiction, session, subject, keyword, or date range. Outputs bill metadata, primary sponsors, legislative action history, vote records, and bill text version links -- ideal for AI policy monitoring, regulatory compliance tracking, and government intelligence workflows.
Features
- Track legislation across all 50 US states + DC + PR via the Open States API v3
- Filter by state, legislative session, subject tag, bill type, full-text keyword, or last-updated date
- Extract sponsor names and classifications (primary/co-sponsor), with primary sponsor highlighted
- Get full legislative action history per bill: date, chamber, and description of each action
- Include vote records with yes/no/absent counts per chamber vote
- Include bill text version links (introduced, amended, enrolled) as formatted URL strings
- Delta mode:
updatedSincefield enables daily polling workflows (only new/changed bills) - Pay-per-event pricing at roughly $0.001 per record
Authentication
This actor requires a free Open States API key. Register at https://openstates.org/accounts/signup/ using a GitHub, Google, Twitter, or Facebook account. After registration, visit your profile page to copy your API key.
Provide the key via the apiKey input field, or store it as the OPENSTATES_API_KEY actor environment variable for scheduled runs.
Who Uses Open States Data and Why
- Policy monitoring teams -- track AI, healthcare, climate, or other subject-tagged bills across all states in real time
- Lobbying and government affairs teams -- monitor bills by session, sponsor, or subject that affect your industry
- Compliance and legal teams -- receive alerts when bills in your regulatory space advance through committee or pass
- Political researchers and journalists -- analyze legislative trends, sponsor patterns, and voting records across jurisdictions
- Civic tech developers -- power constituent alert systems, legislative calendars, and policy comparison tools
How It Works
- You provide your Open States API key plus at least one filter: a state name, a keyword, or a subject tag.
- The crawler queries
v3.openstates.org/billswith page-based pagination (20 bills per page, max ~30 requests/minute on the free tier). - Each bill is transformed into a clean output record: flat strings for classification/subjects, pipe-delimited strings for actions/votes/versions.
Input Parameters
| Field | Description | Default |
|---|---|---|
apiKey | Your Open States API key (required) | -- |
jurisdiction | State name or abbreviation (e.g. California, ca) | California |
session | Legislative session (e.g. 2025-2026) | all |
subject | Subject tag filter, comma-separated (e.g. artificial intelligence) | -- |
query | Full-text keyword search | -- |
classification | Bill type: bill, resolution, etc. | all |
updatedSince | Delta mode: only bills updated on/after this date (YYYY-MM-DD) | -- |
sortOrder | Sort order for results | updated_desc |
includeVotes | Include legislator vote records per bill | false |
includeVersions | Include bill text version links | true |
maxItems | Maximum number of bills to return (0 = unlimited) | 15 |
Output Fields
Each output record contains:
| Field | Description |
|---|---|
bill_id | Open States internal OCD bill identifier |
jurisdiction | State or territory name |
state_abbr | Two-letter state abbreviation (CA, TX, etc.) |
session | Legislative session identifier |
chamber | Chamber of origination (upper/lower) |
bill_number | Official bill ID (e.g. SB 205, HB 123) |
title | Full official bill title |
classification | Bill type(s) as comma-separated string |
subjects | Subject tags as comma-separated string |
primary_sponsor | Name of the primary bill sponsor |
sponsors | All sponsors as name:classification strings |
actions | Legislative actions as date|chamber|description strings |
votes_summary | Vote records as date|chamber|result|yes:N|no:N|absent:N strings |
versions | Bill text links as note|date|url strings |
source_urls | Source URLs for the bill record |
openstates_url | Direct link to the bill on OpenStates.org |
first_action_date | Date of first legislative action |
latest_action_date | Date of most recent action |
latest_action_description | Description of most recent action |
latest_passage_date | Date the bill last passed |
created_at | Record creation timestamp in Open States |
updated_at | Record last-modified timestamp in Open States |
Rate Limits and Performance
The Open States free tier allows approximately 30 requests per minute. This actor uses a conservative 2.2-second delay between API calls. At 20 bills per page, this yields roughly 540 bills per minute. For large state-wide pulls (thousands of bills), consider using updatedSince for delta polling rather than pulling full history repeatedly.
Example Use Cases
Monitor AI-related bills across all states:
Set subject to artificial intelligence and leave jurisdiction empty.
Track California bills updated this week:
Set jurisdiction to California and updatedSince to the start of the current week.
Pull all bills from the current Texas session:
Set jurisdiction to Texas and session to 2025.
Set up daily polling for a specific subject:
Schedule daily runs with updatedSince set to yesterday's date using a dynamic date expression.