Texas APIsenate.texas.gov ↗
Retrieve Texas Senate live video schedules, program titles, stream URLs, times, and locations via two structured API endpoints.
What is the Texas API?
This API exposes 2 endpoints that return current live broadcast listings from the Texas Senate website, including program titles, scheduled dates and times, locations, and direct stream page URLs. The get_schedule endpoint additionally normalizes each item into a LiveMediaScheduleItem format with a UTC-converted start time and an inferred live/upcoming status, making it straightforward to integrate into dashboards or notification systems that track legislative sessions and hearings.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/0012df6b-3bfc-40f7-8026-22c15cb1ccd3/get_live_broadcasts' \ -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 senate-texas-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: Texas Senate live broadcasts — list current schedule."""
from parse_apis.senate_texas_gov_api import TexasSenate, ParseError
client = TexasSenate()
# Fetch all currently scheduled live broadcasts (capped for safety).
try:
for broadcast in client.broadcasts.list(limit=10):
print(f"{broadcast.program} — {broadcast.date} {broadcast.time}")
print(f" Location: {broadcast.location}")
if broadcast.stream_url:
print(f" Watch: {broadcast.stream_url}")
except ParseError as e:
print(f"Could not retrieve broadcasts: {e.code}")
# Normalized schedule view with UTC timestamps and status.
item = client.schedule_items.list(limit=5).first()
if item is not None:
print(f"{item.title} — {item.status}")
print(f" Start (UTC): {item.start_time_utc}")
print(f" Location: {item.location.name}")
if item.url:
print(f" Stream: {item.url}")
print("exercised: broadcasts.list / schedule_items.list")
Returns all live broadcasts currently listed on the Texas Senate live video page. Each entry includes the program title, scheduled date and time, location, any notes, and the direct URL to the livestream player page. The page refreshes every 2 minutes on the site; results reflect the current schedule at request time. When no broadcasts are scheduled, the broadcasts array will be empty.
No input parameters required.
{
"type": "object",
"fields": {
"broadcasts": "array of broadcast objects, each with program, date, time, location, notes, and stream_url"
},
"sample": {
"data": {
"broadcasts": [
{
"date": "Tuesday, 08/11/2026",
"time": "9:00 AM",
"notes": "",
"program": "Senate Committee on Natural Resources",
"location": "Capitol Extension, E1.012",
"stream_url": "https://www.senate.texas.gov/videoplayer.php?vid=22698&lang=en"
}
]
},
"status": "success"
}
}About the Texas API
What the API Returns
Both endpoints pull current broadcast data from the Texas Senate live video page, which refreshes every two minutes on the source site. get_live_broadcasts returns an array of broadcast objects with the fields program, date, time, location, notes, and stream_url. This is the raw, minimal representation useful when you want direct access to the broadcast listing without any transformation.
Normalized Schedule Format
get_schedule returns the same underlying listings in a LiveMediaScheduleItem format that includes additional derived fields. start_time_utc is computed from the Central time values listed on the source page, which removes the burden of timezone conversion from your application. The location field is returned as a nested object rather than a plain string, and each item carries an inferred status field — either live or upcoming — based on whether the broadcast is currently in progress. The description field surfaces any notes attached to the broadcast.
Coverage and Freshness
Both endpoints reflect the broadcast schedule as it currently appears on the Texas Senate live video page. There are no input parameters on either endpoint — no date range filters, no committee filters, no pagination. The data covers only what is currently scheduled or airing; past sessions and archived video content are not returned. The source page updates roughly every two minutes, so results are near-real-time for active legislative days.
Integration Notes
The stream_url field in both endpoints points to the direct livestream player page for each broadcast, which can be embedded or linked directly. Because there are no query parameters, polling get_schedule on an interval is the intended pattern for monitoring schedule changes or detecting when a broadcast transitions to live status.
The Texas API is a managed, monitored endpoint for senate.texas.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when senate.texas.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.texas.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.
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?+
- Monitor Texas Senate committee hearings going live by polling the
statusfield fromget_schedule - Display a widget on a civic engagement site showing current Senate broadcasts with
program,date, andstream_url - Send Slack or email alerts when a specific committee or program name appears in the
titlefield - Log broadcast schedules over time to analyze which committees hold hearings most frequently
- Aggregate Texas legislative broadcast data alongside other state legislature video feeds for multi-state civic tools
- Provide direct stream links in a mobile legislative tracker app using the
urlfield fromget_schedule - Convert broadcast times to viewer-local timezones using the
start_time_utcfield fromget_schedule
| 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 the Texas Senate have an official developer API?+
What is the difference between `get_live_broadcasts` and `get_schedule`?+
get_live_broadcasts returns raw broadcast objects with flat fields: program, date, time, location, notes, and stream_url. get_schedule returns the same data normalized into LiveMediaScheduleItem objects that add start_time_utc (UTC-converted from Central time), a nested location object, an inferred status field (live or upcoming), and a description field. Use get_schedule when you need timezone-aware times or status inference without writing that logic yourself.