Discover/Mo API
live

Mo APIsenate.mo.gov ↗

Get Missouri Senate committee hearing schedules via API. Returns hearing title, date, UTC start time, and status for any day listed on senate.mo.gov.

Endpoint health
verified 2h ago
get_schedule
1/1 passing latest checkself-healing
Endpoints
1
Updated
2h ago

What is the Mo API?

The Missouri Senate Hearing Schedule API exposes 1 endpoint — get_schedule — that returns committee hearing events published on senate.mo.gov, with 8 fields per hearing including title, date, UTC start time, and status. Query by a specific date or omit the date parameter to retrieve every hearing currently listed on the schedule page. Results are paginated using limit and offset controls.

This call costs1 credit / call— charged only on success
Try it
Day to return hearings for, as YYYYMMDD. Omitted = every hearing currently listed on the schedule page.
Maximum items per page, clamped to 200.
Zero-based index of the first item to return; the next page starts at offset + limit.
→ api.parse.bot/scraper/dc9a4e32-a7d4-45d8-a54b-fafe4fd860fd/<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/dc9a4e32-a7d4-45d8-a54b-fafe4fd860fd/get_schedule?date=20261016' \
  -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 senate-mo-gov-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.

"""Walkthrough: Missouri Senate hearing schedule — bounded, re-runnable."""
from parse_apis.senate_mo_gov_api import MissouriSenate, InputFormatInvalid

client = MissouriSenate()

# List all hearings currently on the schedule page, capped at 10 items.
for hearing in client.hearings.list(limit=10):
    location_name = hearing.location.name if hearing.location else "TBD"
    print(f"{hearing.title} | {hearing.date} {hearing.start_time_utc} | {location_name}")

# Fetch hearings for a specific day using a date filter.
try:
    first = client.hearings.list(date="20250415", limit=1).first()
except InputFormatInvalid:
    first = None
    print("Invalid date format supplied")

if first is not None:
    print(f"{first.title} — status: {first.status}, institution: {first.institution}")
    if first.description:
        print(f"  {first.description[:120]}")

print("exercised: hearings.list / hearings.list(date=)")
All endpoints · 1 totalmissing one? ·

Returns Senate committee hearings from the Missouri Senate Hearing Schedule page as one event per hearing, in one round trip. Each item carries the committee/hearing title, the hearing date (YYYY-MM-DD), start_time_utc converted from the Senate's Central time (America/Chicago) to UTC with a Z suffix, status (scheduled when the start is in the future, completed once it has passed), institution (always senate), the hearing's link, location name (the room, when stated) and a description with the remaining announced text (bills, chair, notes). The site publishes no video or stream for committee hearings, so player_url, stream_url, video_file and duration_minutes are always null, and event_id is null because the page carries no stable identifier. When date is supplied only hearings on that day are returned and data.date echoes it; when omitted all hearings currently listed are returned and data.date is today's date in Central time. Pagination is offset/limit over the filtered list: total is the number of items on this page, total_available the number matching, has_more true when offset + limit < total_available. Outside the legislative session the page states that no hearings are scheduled and the result is a valid empty page (items [], total 0, has_more false). A hearing announced without a clock time (e.g. 'upon adjournment') is anchored at 00:00 Central on its day. The in-session layout of the page was not observable during the build (the Senate was out of session); the hearing block parser is a best-effort reading of that layout and returns an extraction error rather than an empty success if hearings are listed but none can be parsed.

Input
ParamTypeDescription
datestringDay to return hearings for, as YYYYMMDD. Omitted = every hearing currently listed on the schedule page.
limitintegerMaximum items per page, clamped to 200.
offsetintegerZero-based index of the first item to return; the next page starts at offset + limit.
Response
{
  "type": "object",
  "fields": {
    "date": "requested (or today's Central-time) day as YYYYMMDD",
    "items": "array of hearing events: event_id (null), title, date (YYYY-MM-DD), start_time_utc (ISO 8601, Z), status (scheduled|completed), institution (senate), url, player_url/stream_url/video_file (null), location ({name} or null), description (string or null), duration_minutes (null)",
    "limit": "effective limit after clamping",
    "total": "number of items on this page",
    "offset": "echoed offset",
    "has_more": "true when another page exists at offset + limit",
    "total_available": "number of hearings matching the request across all pages"
  },
  "sample": {
    "data": {
      "date": "20261016",
      "items": [],
      "limit": 50,
      "total": 0,
      "offset": 0,
      "has_more": false,
      "total_available": 0
    },
    "status": "success"
  }
}

About the Mo API

What the API Returns

The get_schedule endpoint returns Missouri Senate committee hearings as a structured list. Each hearing object includes a title (the committee or hearing name), a date in YYYY-MM-DD format, a start_time_utc field in ISO 8601 format converted from the Senate's Central time zone (America/Chicago), and a status field that indicates whether the hearing is scheduled or completed. The event_id field is present in each item but returns null for this source.

Filtering and Pagination

Pass a date parameter as YYYYMMDD to narrow results to a specific day. Omitting date returns all hearings currently visible on the schedule page. Results are paginated: limit caps the number of items returned per request (maximum 200), and offset sets the zero-based starting index. The response always echoes back limit, offset, total (items on the current page), total_available (total matching hearings across all pages), and a has_more boolean so you can determine whether a subsequent page exists.

Timezone Handling

All hearing times are normalized to UTC in the start_time_utc field, regardless of how times appear on the source page. The conversion uses the America/Chicago timezone, accounting for Central Standard and Central Daylight time transitions automatically. This means downstream consumers do not need to handle CST/CDT offsets themselves.

Coverage Scope

The API covers the Missouri Senate's published hearing schedule. It does not include Missouri House of Representatives hearings, full session calendars, or legislative bill text. The data reflects what is currently posted on the Senate Hearing Schedule page, so hearings added or removed from that page will be reflected in subsequent requests.

Reliability & maintenanceVerified

The Mo API is a managed, monitored endpoint for senate.mo.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when senate.mo.gov 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 senate.mo.gov 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
2h ago
Latest check
1/1 endpoint 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
  • Alert lobbyists and advocates when a specific committee posts a new hearing date
  • Build a legislative calendar app that displays Missouri Senate hearings with UTC-normalized start times
  • Track status changes from scheduled to completed to log which hearings have concluded
  • Aggregate multi-day hearing schedules by looping over date parameters and storing results
  • Power a public-facing widget showing today's Missouri Senate committee activity
  • Feed hearing title and date fields into a notification system for policy researchers
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does senate.mo.gov offer an official developer API for its hearing schedule?+
No. The Missouri Senate website does not publish an official developer API or data feed for its hearing schedule. This Parse API provides structured programmatic access to that data.
What does the `get_schedule` endpoint return when no `date` parameter is provided?+
Omitting the date parameter returns all hearings currently listed on the Missouri Senate Hearing Schedule page, not just today's hearings. You can then use limit and offset to page through the full result set, and check has_more to know if additional pages exist.
Does the API cover Missouri House of Representatives committee hearings?+
Not currently. The API covers Missouri Senate committee hearings from senate.mo.gov only. House hearings are published on a separate site. You can fork this API on Parse and revise it to add an endpoint targeting the House schedule.
How fresh is the hearing data, and can hearings be cancelled or rescheduled?+
The data reflects what is currently published on the Senate Hearing Schedule page at the time of the request. Hearings that are cancelled, postponed, or added after a prior request will appear correctly on subsequent calls. There is no change-history or diff endpoint; each call returns the current published state.
Does the API return hearing room location, agenda documents, or bill numbers?+
Not currently. Each hearing item returns title, date, start_time_utc, status, and event_id — location, agenda documents, and associated bill numbers are not included in the response. You can fork this API on Parse and revise it to add those fields if the source page exposes them.
Page content last updated . Spec covers 1 endpoint from senate.mo.gov.
Related APIs in Government PublicSee all →