Discover/Civic Stream API
live

Civic Stream APIcivicstream.tv

Access live government stream listings from civicstream.tv via one API endpoint. Get titles, URLs, thumbnails, and live status for state and local feeds.

This API takes change requests — .
Endpoint health
verified 2h ago
get_schedule
1/1 passing latest checkself-healing
Endpoints
1
Updated
2h ago

What is the Civic Stream API?

The Civic Stream API exposes 1 endpoint, get_schedule, that returns the current directory of live government streams from civicstream.tv. Each response includes stream titles, direct URLs, thumbnail images, and live status, along with pagination metadata covering total stream count and page count. Coverage spans state legislatures, city councils, and national government feeds.

This call costs1 credit / call— charged only on success
Try it
Page number for pagination. Each page contains up to 12 streams.
api.parse.bot/scraper/cb40d70b-5124-4669-8d40-06054c5e2ead/<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/cb40d70b-5124-4669-8d40-06054c5e2ead/get_schedule?page=1' \
  -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 civicstream-tv-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: CivicStream SDK — browse live government streams."""
from parse_apis.civicstream_tv_api import CivicStream, NotFoundError

client = CivicStream()

# List all currently live streams, capped at 10 total items.
for stream in client.streams.list(limit=10):
    print(f"{stream.title} [{stream.status}] — {stream.url}")

# Grab the first stream for a quick summary.
try:
    first = client.streams.list(limit=1).first()
except NotFoundError as e:
    print(f"Schedule not found: {e}")
    first = None

if first is not None:
    print(f"\nFeatured: {first.title}")
    print(f"  Thumbnail: {first.thumbnail}")

print("\nexercised: streams.list")
All endpoints · 1 totalmissing one? ·

Returns the current live government streams listed on Civic Stream. Results are paginated at 12 streams per page. Each stream includes its title, URL, thumbnail image, live status, and the actual embedded video/playback URL (HLS m3u8 or YouTube). Fetches each stream's detail page to extract the playback source, so response time scales with the number of streams on the page (up to 12 sub-requests). The total number of pages and streams is included in the response.

Input
ParamTypeDescription
pageintegerPage number for pagination. Each page contains up to 12 streams.
Response
{
  "type": "object",
  "fields": {
    "page": "current page number",
    "streams": "array of live stream objects with title, url, thumbnail, status, and stream_url (the embedded video/playback URL)",
    "total_pages": "total number of pages available",
    "total_streams": "total number of live streams in the directory",
    "streams_on_page": "number of streams returned on this page"
  },
  "sample": {
    "data": {
      "page": 1,
      "streams": [
        {
          "url": "https://civicstream.tv/tennessee-senate/",
          "title": "Tennessee Senate",
          "status": "LIVE",
          "thumbnail": "https://civicstream.tv/wp-content/uploads/uncategorized/tennessee.webp"
        },
        {
          "url": "https://civicstream.tv/alaska-senate/",
          "title": "Alaska Senate",
          "status": "LIVE",
          "thumbnail": "https://civicstream.tv/wp-content/uploads/uncategorized/alaska.webp"
        }
      ],
      "total_pages": 5,
      "total_streams": 58,
      "streams_on_page": 12
    },
    "status": "success"
  }
}

About the Civic Stream API

What the API Returns

The get_schedule endpoint returns a paginated list of currently live government streams from Civic Stream's directory. The response includes an array of stream objects, each with four fields: title (the name of the stream or proceeding), url (a direct link to the stream), thumbnail (a preview image URL), and status (the stream's live state). Alongside the stream array, the response surfaces page, streams_on_page, total_pages, and total_streams to support full pagination traversal.

Pagination

Results are paginated at 12 streams per page. The page input parameter (integer, optional) controls which page is returned. Using total_pages and total_streams from any response, you can determine exactly how many additional requests are needed to retrieve the full live directory. If no page parameter is supplied, the first page is returned by default.

Coverage and Scope

The directory draws from civicstream.tv's live feed index, which aggregates proceedings from state-level legislatures, municipal city councils, and national government bodies. The API reflects what is currently live in that directory at request time, making it most useful for real-time monitoring applications rather than historical archive lookups.

Reliability & maintenanceVerified

The Civic Stream API is a managed, monitored endpoint for civicstream.tv — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when civicstream.tv 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 civicstream.tv 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
  • Display a live government proceedings widget on a civic engagement website using stream titles and URLs.
  • Monitor how many government bodies are currently broadcasting by polling total_streams.
  • Build a thumbnail grid of active legislative sessions using the thumbnail field.
  • Alert users when specific state or city council streams go live by checking status.
  • Aggregate government stream URLs for redistribution to a custom video player interface.
  • Track directory size over time by logging total_streams values across scheduled API calls.
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 civicstream.tv have an official developer API?+
Civicstream.tv does not publish a documented public developer API. This Parse API provides structured programmatic access to the live stream directory that the site does not expose natively.
What does `get_schedule` actually return for each stream?+
Each stream object in the streams array contains four fields: title (the proceeding name), url (the direct stream link), thumbnail (a preview image URL), and status (the live state of that stream). Pagination metadata — page, streams_on_page, total_pages, and total_streams — is returned at the top level of every response.
Does the API return historical or archived streams?+
No. get_schedule reflects streams that are currently listed as live in the Civic Stream directory. There is no archived or past-broadcast data exposed. You can fork this API on Parse and revise it to add an endpoint targeting any archive or on-demand content the site surfaces.
Can I filter streams by state, jurisdiction, or government body type?+
The get_schedule endpoint does not currently support filtering by state, jurisdiction, or body type — the only input parameter is page for pagination. You can fork this API on Parse and revise it to add filtering logic against those fields once stream titles are retrieved.
How fresh is the stream data returned by the API?+
The response reflects the live directory state at the moment the request is made. Because government streams can start or end at any time, for real-time use cases you should poll get_schedule at intervals appropriate to your application rather than caching results for extended periods.
Page content last updated . Spec covers 1 endpoint from civicstream.tv.
Related APIs in Government PublicSee all →
sg001-harmony.sliq.net API
Check the upcoming livestream schedule for Colorado General Assembly sessions and committee meetings directly from their Harmony video system. Find event details like dates, times, and session information to plan when to watch legislative proceedings live.
c-span.org API
Find C-SPAN TV schedules by channel and date, and look up detailed information about specific events and programs. Plan your viewing by browsing what's on air and discovering full details about any broadcast that interests you.
flsenate.gov API
Watch the Florida Senate's daily livestream schedule to find out when legislative sessions and committee meetings are being broadcast. Plan your viewing by checking the current day's scheduled video broadcasts and their times.
peaceisactive.com API
Access live streams of state legislature proceedings from all 50 US states in one place. Find real-time government feeds for any state to watch legislative sessions and stay informed on live political activity.
house.texas.gov API
Watch live legislative events from the Texas House of Representatives by accessing the broadcast schedule for committee hearings and other proceedings. Plan your viewing by retrieving detailed information about upcoming livestreams and their scheduled times.
audiovisual.ec.europa.eu API
Access live and upcoming European Broadcasting Service programs with complete schedule details, including livestream links and full program metadata for any date you choose. Plan your viewing or build applications that integrate EBS broadcast information seamlessly into your services.
senate.texas.gov API
Watch live Texas Senate broadcasts by retrieving current schedules, program details, and direct links to stream pages all in one place. Stay informed about legislative sessions and hearings as they happen by accessing up-to-date broadcast information.
malegislature.gov API
Check the live stream schedule for Massachusetts legislative sessions on any date to find when the General Court is broadcasting. Plan your viewing of state senate and house proceedings directly from the official legislature website.