wiseye APIwiseye.org ↗
Retrieve WisconsinEye daily event schedules via API. Get Capitol floor sessions, committee hearings, and agency meetings with status and stream URLs.
What is the wiseye API?
The WisconsinEye API exposes one endpoint — get_schedule — that returns up to 50 events per page for any calendar day of Wisconsin government coverage. Each event record includes 8 response fields: a stable event_id, title, date, UTC start time, live/scheduled/completed status, institution, a canonical URL, and a player URL for direct playback access.
curl -X GET 'https://api.parse.bot/scraper/57c6225a-259c-46fe-90a4-d15be737e7b8/get_schedule?date=20261015' \ -H 'X-API-Key: $PARSE_API_KEY'
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 wiseye-org-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: WisconsinEye Schedule API — browse today's events."""
from parse_apis.wiseye_org_api import WisconsinEye, InvalidInput
client = WisconsinEye()
# List today's events, capping total items fetched.
for event in client.events.list(limit=5):
print(event.title, event.status, event.institution)
# Fetch events for a specific past date; drill into the first one.
try:
event = client.events.list(date="20261015", limit=1).first()
except InvalidInput:
print("Invalid date format — use YYYYMMDD")
event = None
if event is not None:
print(event.title)
print(" starts:", event.start_time_utc)
print(" duration:", event.duration_minutes, "min")
if event.video_file:
print(" video:", event.video_file)
print("exercised: events.list")
Returns the WisconsinEye events for one calendar day (US Central time), ordered by start time, as a page selected by offset and limit. Each item is one event: a stable event_id, title, local date, start_time_utc (UTC, Z suffix), status (scheduled, live or completed), an institution bucket derived from the site's categories and title (senate, assembly, committee, joint or legislature; 'house' never occurs for a state legislature), the event page url, and media references. Completed events whose recording has been published carry player_url, an HLS stream_url (.m3u8) and a direct .mp4 video_file plus duration_minutes from the recording; live events carry player_url and the HLS stream_url; scheduled events and completed events without a published recording carry null media. location is {name} when the site states one, otherwise null; description is plain text or null. Events already published by the site are read from its post feed, events still only announced on the two-week schedule page are returned as scheduled, so a day more than roughly two weeks ahead is normally empty. An empty day is a valid success with items [] and total 0. Cost is a few page reads plus one playback lookup per completed/live item on the page, so a page of 50 archived events is the most expensive call. Omitting date means today in US Central time; offset defaults to 0 and limit to 50 (limit is capped at 50); has_more is true when offset + limit is below total_available.
| Param | Type | Description |
|---|---|---|
| date | string | Calendar day in YYYYMMDD form (US Central). Omitted = today. Any other form is rejected as invalid input. |
| limit | integer | Maximum events per page; values above 50 are capped to 50. |
| offset | integer | Zero-based index of the first event to return within the day's list. The next page starts at offset + limit. |
{
"type": "object",
"fields": {
"date": "requested day as YYYYMMDD",
"items": "array of events: event_id, title, date (YYYY-MM-DD), start_time_utc, status (scheduled|live|completed), institution, url, player_url, stream_url (HLS .m3u8), video_file (.mp4), location ({name} or null), description, duration_minutes",
"limit": "limit applied (after capping)",
"total": "number of items on this page",
"offset": "offset applied",
"has_more": "true when another page exists at offset + limit",
"total_available": "number of events the site lists for the day"
},
"sample": {
"data": {
"date": "20261016",
"items": [
{
"url": "https://wiseye.org/2026/10/16/wolf-advisory-committee-meeting/",
"date": "2026-10-16",
"title": "Wolf Advisory Committee Meeting",
"status": "completed",
"event_id": "33214",
"location": null,
"player_url": "https://player.invintus.com/?clientID=2789595964&eventID=2026101053",
"stream_url": "https://api.v3.invintus.com/StreamURI/hls/2789595964/2026101053/media.m3u8",
"video_file": "https://f005.backblazeb2.com/file/invintus-client-media/2789595964/954f00f8c1936ab630729a3c22d389e9e737312f.mp4",
"description": "On October 16, 2026 the DNR Wolf Advisory Committee will held meeting. The focus of this meeting will be to review and provide committee feedback on the department's proposed approach to DNR rule number NH-10-26(E) on prorating wolf depredation claims in the event funding is insufficient in a given fiscal year.",
"institution": "committee",
"start_time_utc": "2026-10-16T15:00:00Z",
"duration_minutes": 126
}
],
"limit": 1,
"total": 1,
"offset": 1,
"has_more": true,
"total_available": 3
},
"status": "success"
}
}About the wiseye API
What get_schedule Returns
The get_schedule endpoint returns a paginated list of WisconsinEye events for a single calendar day in US Central time. Pass a date parameter in YYYYMMDD format to target a specific day; omit it to retrieve today's schedule. Each event in the items array carries an event_id (stable across requests), title, date in YYYY-MM-DD form, start_time_utc with a Z suffix, and a status field that reflects whether the event is scheduled, live, or completed. Events are ordered by start time.
Coverage and Event Types
WisconsinEye covers Wisconsin state government proceedings: Capitol floor sessions, committee hearings, state agency meetings, news conferences, and related programs. The institution field on each item identifies the body holding the event. Two URL fields are included per event: url for the canonical event page and player_url for direct playback, making it straightforward to link out or embed stream references.
Pagination
The endpoint paginates using offset and limit. The limit input is capped server-side at 50; values above that are reduced automatically. The response echoes back the limit and offset applied, and includes total_available (total events the site lists for the day), total (items on this page), and a has_more boolean. To fetch subsequent pages, increment offset by the applied limit until has_more is false.
The wiseye API is a managed, monitored endpoint for wiseye.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when wiseye.org 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 wiseye.org 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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Embed a live Wisconsin state legislature schedule widget that shows today's floor sessions and committee hearings.
- Monitor the
statusfield to trigger alerts when a tracked event transitions tolive. - Build a Wisconsin government transparency dashboard aggregating events by
institutionacross multiple days. - Archive daily WisconsinEye schedules to a database using
dateparameter iteration andhas_morepagination. - Surface direct stream links using the
player_urlfield for automated broadcast or media monitoring workflows. - Cross-reference
start_time_utcfields with calendar tools to surface Wisconsin government events in time-zone-aware applications.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 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.
Does WisconsinEye have an official developer API?+
What does the `status` field in get_schedule actually distinguish?+
status field returns one of three string values: scheduled for upcoming events, live for events currently in progress, and completed for events that have ended. This lets you filter or poll for active streams without checking the event's start_time_utc independently.Can I request schedules for multiple days in a single call?+
get_schedule endpoint accepts one date value per request and returns events for that single calendar day. To retrieve schedules across a date range, issue one request per day and paginate each using offset and has_more. You can fork this API on Parse and revise it to add a multi-day range endpoint.Does the API return video metadata such as duration, resolution, or recorded stream URLs for completed events?+
url and player_url per event but does not return video duration, resolution, clip segments, or direct media file links. You can fork this API on Parse and revise it to add an endpoint that fetches those details for a given event_id.What happens if I pass a date in a format other than YYYYMMDD?+
date value not in strict YYYYMMDD form is rejected as invalid input. The parameter only accepts that exact eight-digit format; dashes, slashes, or other separators are not supported.