Discover/Ms API
live

Ms APIlegislature.ms.gov ↗

Retrieve daily committee meeting schedules for the Mississippi House and Senate via a single normalized API endpoint with UTC times and pagination.

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

What is the Ms API?

The Mississippi Legislature Schedule API exposes 1 endpoint — get_schedule — that returns all committee meetings for both the Mississippi House of Representatives and State Senate on a given calendar day. Each meeting record includes 7 response fields: a stable event_id, committee name as title, date, start_time_utc in ISO 8601, status, meeting room as location, and paging metadata to walk multi-meeting days.

This call costs2 credits / call— charged only on success
Try it
Calendar day in YYYYMMDD form. Omitted = today in US Central Time. Any other format is rejected.
Maximum items per page; values above 200 are clamped to 200.
Zero-based index of the first item to return within the day's list. Next page is offset + limit while has_more is true.
→ api.parse.bot/scraper/9e6573e1-ee8a-4af0-a174-93e8b4d43d2d/<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/9e6573e1-ee8a-4af0-a174-93e8b4d43d2d/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 legislature-ms-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: Mississippi Legislature Schedule — list today's committee meetings."""
from parse_apis.legislature_ms_gov_api import MsLegislature, DateFormatInvalid

client = MsLegislature()

# List today's meetings (date omitted = today in US Central Time), capped.
for meeting in client.meetings.list(limit=10):
    room = meeting.location.name
    print(f"{meeting.title} ({meeting.institution}) — {room}, {meeting.start_time_utc}")

# Fetch a specific day's schedule and drill into the first meeting.
try:
    first_meeting = client.meetings.list(date="20261015", limit=1).first()
except DateFormatInvalid:
    print("Bad date format — use YYYYMMDD")
    first_meeting = None

if first_meeting is not None:
    print(f"Event:       {first_meeting.title}")
    print(f"Status:      {first_meeting.status}")
    print(f"Institution: {first_meeting.institution}")
    print(f"Location:    {first_meeting.location.name}")
    if first_meeting.description:
        print(f"Notes:       {first_meeting.description}")

print("exercised: meetings.list / DateFormatInvalid")
All endpoints · 1 totalmissing one? ·

Returns the committee meetings scheduled in both chambers of the Mississippi Legislature for one calendar day, merged and sorted by start time. Each item is one meeting row from the chamber's published committee schedule: the committee name as title, the meeting room as location, agenda notes (hearing subject, joint-meeting note, end time) as description, and start_time_utc converted from Central Time (America/Chicago) to UTC. event_id is a stable hash of chamber, date, listed time, room and title, so it does not change between polls. Status is 'scheduled' until the listed start time has passed, then 'completed'. The Legislature streams only via YouTube, so player_url, stream_url and video_file are always null and duration_minutes is always null. A meeting whose listed time is not a clock time (TBA, WNM, BC, AA, AR) is placed at 00:00 Central and the raw time code is prepended to description. date defaults to the current day in Central Time; the published schedules only cover upcoming meetings and the most recent days, so past dates return an empty list. offset/limit page through the day's items (offset defaults to 0, limit to 50, capped at 200); total is the count on the returned page and total_available the count for the whole day. An empty day is a normal success with items: [] and total 0. Two upstream page fetches per call.

Input
ParamTypeDescription
datestringCalendar day in YYYYMMDD form. Omitted = today in US Central Time. Any other format is rejected.
limitintegerMaximum items per page; values above 200 are clamped to 200.
offsetintegerZero-based index of the first item to return within the day's list. Next page is offset + limit while has_more is true.
Response
{
  "type": "object",
  "fields": {
    "date": "requested day, YYYYMMDD",
    "items": "array of meetings: event_id (stable hash), title (committee name), date (YYYY-MM-DD), start_time_utc (ISO 8601 with Z), status (scheduled|completed), institution (house|senate), url (chamber schedule page), player_url/stream_url/video_file (always null), location.name (room or chamber), description (agenda notes or null), duration_minutes (always null)",
    "limit": "effective limit after clamping",
    "total": "number of items on this page",
    "offset": "echoed offset",
    "has_more": "boolean, true when offset + limit < total_available",
    "total_available": "number of meetings for the whole day"
  },
  "sample": {
    "data": {
      "date": "20261104",
      "items": [
        {
          "url": "https://billstatus.ls.state.ms.us/htms/h_sched.htm",
          "date": "2026-11-04",
          "title": "Drug Policy",
          "status": "scheduled",
          "event_id": "1e0e06a53aa3f02e",
          "location": {
            "name": "Room 113"
          },
          "player_url": null,
          "stream_url": null,
          "video_file": null,
          "description": "Hearing on Kratom",
          "institution": "house",
          "start_time_utc": "2026-11-04T19:00:00Z",
          "duration_minutes": null
        }
      ],
      "limit": 50,
      "total": 1,
      "offset": 0,
      "has_more": false,
      "total_available": 1
    },
    "status": "success"
  }
}

About the Ms API

What the API returns

The get_schedule endpoint merges and sorts committee meetings from both chambers of the Mississippi Legislature into a single list for a requested calendar day. Each item in the items array represents one scheduled meeting and carries a stable event_id hash (useful for deduplication), the committee name as title, the room or location as location, a date field in YYYY-MM-DD format, and start_time_utc in ISO 8601 with a Z suffix so times are unambiguous across time zones. A status field indicates the current state of each meeting.

Input parameters and date handling

The primary input is date, accepted only in YYYYMMDD form — any other format is rejected with an error. When date is omitted, the endpoint defaults to the current day in US Central Time, matching the timezone the Legislature operates in. Paging is controlled with limit (capped at 200) and offset (zero-based). To walk past the first page, increment offset by limit while the has_more field is true; total_available tells you the full count of meetings for that day regardless of page size.

Paging and response metadata

Every response echoes back date, limit, offset, total (items on the current page), total_available (all meetings for the day), and has_more. This makes it straightforward to build a complete daily schedule by iterating pages: fetch until has_more is false. The limit field in the response reflects the effective value after server-side clamping, so callers always know exactly how many items to expect per page.

Reliability & maintenanceVerified

The Ms API is a managed, monitored endpoint for legislature.ms.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when legislature.ms.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 legislature.ms.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
  • Build a daily digest of Mississippi legislative committee meetings filtered by chamber or room location.
  • Alert legislative staffers or lobbyists when new meetings are added to a specific day's schedule.
  • Aggregate start_time_utc values to detect scheduling conflicts or overlapping committee hearings.
  • Power a public-facing calendar widget showing upcoming Mississippi Senate and House committee activity.
  • Track historical meeting frequency by committee using title and date across multiple days.
  • Monitor status changes on scheduled meetings to detect postponements or cancellations.
  • Feed a research dashboard comparing the volume of committee activity across legislative session days.
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 the Mississippi Legislature website have an official developer API?+
The Mississippi Legislature website at legislature.ms.gov does not publish an official developer API or documented data feed for public programmatic access.
What does the `get_schedule` endpoint return for a day with no meetings scheduled?+
The endpoint still returns a valid response with total_available set to 0, an empty items array, and has_more as false. The date field will echo back the requested day in YYYYMMDD format.
Does the API cover bill text, voting records, or legislator profiles?+
Not currently. The API covers only the daily committee meeting schedule — committee names, meeting rooms, start times, and meeting status for both chambers. You can fork this API on Parse and revise it to add endpoints for bills, votes, or legislator data.
Is meeting data available for dates outside the active legislative session?+
The API reflects whatever the Legislature's published schedule contains for a given day. During recess periods when no meetings are posted, total_available will be 0. Historical dates before schedule data was published may similarly return empty results. You can fork the API on Parse and revise it to surface session calendar metadata if you need to distinguish session days from recess days.
How precise are the `start_time_utc` values?+
Times are returned in ISO 8601 format with a Z suffix, representing UTC. They reflect the start times as published in the Legislature's official committee schedule, which is maintained in US Central Time and converted. Minute-level precision depends on what the source schedule publishes — some meetings may list only an hour.
Page content last updated . Spec covers 1 endpoint from legislature.ms.gov.
Related APIs in Government PublicSee all →