Discover/LegiScan API
live

LegiScan APIlegiscan.com

Search US state and federal bills, retrieve structured bill metadata, and fetch full bill text across all 50 states via the LegiScan API.

Endpoint health
verified 5d ago
get_bill_details
search_bills
get_bill_text
3/3 passing latest checkself-healing
Endpoints
3
Updated
22d ago

What is the LegiScan API?

The LegiScan API exposes 3 endpoints covering US legislative data across all 50 states — search bills by keyword and state with search_bills, pull structured metadata with get_bill_details, and retrieve full legal text with get_bill_text. Each bill result includes state, bill number, status, last action, and direct URLs for detail and text pages, giving developers a direct path from keyword search to the full text of any bill.

Try it
Page number for pagination (0-based)
Filter by session year (e.g., 2025). Omitting returns current session results.
Search keyword for full text search of bills
Two-letter US state code (e.g., CA, NY, TX) or ALL for national search
api.parse.bot/scraper/c4d58c4e-fbfb-4514-9812-71912e9a0c3d/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/c4d58c4e-fbfb-4514-9812-71912e9a0c3d/search_bills?page=0&year=2025&query=minimum+wage&state=CA' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace legiscan-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""LegiScan API — search bills, get details, read full text."""
from parse_apis.legiscan_api import LegiScan, BillNotFound

client = LegiScan()

# Search for housing-related bills in California
for bill in client.bills.search(query="housing", state="CA", limit=5):
    print(bill.bill_number, bill.status, bill.title)

# Drill into one bill for detail and text
bill = client.bills.search(query="minimum wage", state="NY", limit=1).first()
if bill:
    detail = bill.details(year="2025")
    print(detail.title, detail.summary)

    text = bill.text(year="2025")
    print(text.url, text.content[:200])

# Typed error handling
try:
    bad = client.bills.search(query="nonexistent xyz qqq", state="ALL", limit=1).first()
    if bad:
        bad.details(year="2025")
except BillNotFound as exc:
    print(f"Bill not found: {exc.bill_number} in {exc.state}")

print("exercised: bills.search / bill.details / bill.text / BillNotFound")
All endpoints · 3 totalmissing one? ·

Full-text search over US legislative bills, filterable by state and session year. Returns paginated bill summaries including state, bill number, status, title, last action date, and links to detail and text pages. Pagination is 0-based. An empty result set is valid when no bills match the query.

Input
ParamTypeDescription
pageintegerPage number for pagination (0-based)
yearstringFilter by session year (e.g., 2025). Omitting returns current session results.
querystringSearch keyword for full text search of bills
statestringTwo-letter US state code (e.g., CA, NY, TX) or ALL for national search
Response
{
  "type": "object",
  "fields": {
    "bills": "array of bill summary objects each containing state, bill_number, status, title, last_action, detail_url, text_url"
  }
}

About the LegiScan API

Bill Search

The search_bills endpoint accepts a query keyword, a two-letter state code (or ALL for a national search), an optional year to pin results to a specific legislative session, and a 0-based page integer for pagination. Each result in the returned bills array includes state, bill_number, status, title, last_action, detail_url, and text_url. Omitting year returns results from the current session.

Bill Details and Text

get_bill_details requires state, bill_number, and year to identify a bill uniquely. It returns the bill's page url, a title string that encodes the state, bill number, and session, and a summary describing the bill's purpose. This is useful for quickly understanding what a bill does before pulling its full text.

get_bill_text retrieves the complete legal text of a bill as a content string. You can either pass a url directly from search_bills results or supply state, bill_number, and year as individual parameters — both input patterns resolve to the same output.

Coverage and Scope

LegiScan tracks legislation across all US states. The state parameter across all endpoints accepts standard two-letter US state codes, and the year parameter maps to legislative session years. Session scope varies by state since legislative calendars differ; omitting year defaults to the current active session for the selected state.

Reliability & maintenanceVerified

The LegiScan API is a managed, monitored endpoint for legiscan.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when legiscan.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official legiscan.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
5d ago
Latest check
3/3 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor bills mentioning a specific topic (e.g., 'climate' or 'housing') across all states using search_bills with state=ALL
  • Build a bill-tracking dashboard that shows status and last_action fields for a curated list of bills
  • Extract and index full bill text via get_bill_text for legal research or compliance analysis
  • Compare how different states are legislating the same issue by searching the same keyword across multiple state values
  • Automate alerts when new bills matching a keyword appear by periodically querying search_bills and checking last_action
  • Populate a legislative news feed with bill title and summary fields from get_bill_details
  • Retrieve historical session bills by passing a specific year to narrow results to a past legislative session
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does LegiScan have an official developer API?+
Yes. LegiScan offers an official API at https://legiscan.com/legiscan, which provides access to legislative data with API key authentication. The Parse API covers bill search, bill details, and bill text without requiring you to manage a LegiScan API key directly.
What does `search_bills` return and how do I scope it to a single state?+
Each item in the bills array includes state, bill_number, status, title, last_action, detail_url, and text_url. Pass a two-letter state code like CA or TX to the state parameter to restrict results. Use state=ALL to search nationally. The year parameter narrows results to a specific legislative session; omitting it returns the current session.
Does the API expose sponsor information or voting records?+
Not currently. The three endpoints cover bill search metadata, a bill summary, and full bill text. Sponsor names, co-sponsor lists, and roll-call voting records are not included in the current response fields. You can fork this API on Parse and revise it to add an endpoint that retrieves sponsor and vote data from LegiScan bill pages.
How does pagination work in `search_bills`?+
The page parameter is 0-based, so the first page of results is page=0. If you omit it, you get the first page by default. There is no explicit total-count field in the response, so you determine if additional pages exist by checking whether the returned bills array is non-empty.
Can I retrieve bill amendment history or previous versions through `get_bill_text`?+
The get_bill_text endpoint returns the text content found at the provided URL, which typically corresponds to the version linked from search results. Versioned amendment history and prior drafts are not surfaced as discrete response fields. You can fork this API on Parse and revise it to target specific version URLs if LegiScan exposes them on the bill detail page.
Page content last updated . Spec covers 3 endpoints from legiscan.com.
Related APIs in Government PublicSee all →
capitol.texas.gov API
Search and monitor Texas Legislature bills, track their progress through legislative stages, and retrieve detailed action histories. Look up legislator contact information, district details, committee assignments, and full committee membership rosters.
indiacode.nic.in API
Search and retrieve Indian legislation from indiacode.nic.in. Browse Central and State Acts, look up individual sections, and extract fully structured act content by keyword or handle ID.
cdep.ro API
Access legislative initiatives from the Romanian Chamber of Deputies, including searching the complete list of proposed bills and retrieving detailed information about specific initiatives. Track parliamentary legislative activity even when the official site experiences downtime, thanks to reliable retry mechanisms.
citizenscount.org API
Access candidate profiles, election results, bill details, and policy topics from Citizens Count. Find elected officials by town, retrieve voter education guides, and search across candidates, legislation, and news — all from one structured API.
eur-lex.europa.eu API
Access and explore the complete collection of European Union laws, regulations, and Official Journal publications through a comprehensive database that lets you search documents, retrieve full texts, summaries, and metadata, and track legislative procedures and national implementations. Find exactly what you need with detailed search capabilities and get detailed information about how EU laws are transposed into national legislation.
legifrance.gouv.fr API
Search and retrieve official French legal documents, laws, and unclaimed estate notices from the Journal Officiel (JORF), including the ability to browse the latest published issues. Find specific legal texts and succession notices to stay informed about French legislation and inheritance announcements.
bailii.org API
Search and retrieve court judgments and case law from British and Irish courts across multiple jurisdictions, with filtering by date range and location. Access complete case details including full judgment text and metadata to research legal precedents and decisions.
canlii.org API
Access Canadian legal information from CanLII.org. Discover jurisdictions and databases, search case law and legislation across all provinces and territories, and retrieve full document text and metadata.