Discover/C-SPAN API
live

C-SPAN APIc-span.org

Access C-SPAN TV schedules, event details, program transcripts, and live stream URLs across all three channels via a single REST API.

This API takes change requests — .
Endpoint health
verified 3d ago
get_schedule
get_event
get_program
get_transcript
get_details
6/6 passing latest checkself-healing
Endpoints
6
Updated
8d ago

What is the C-SPAN API?

The C-SPAN API provides 6 endpoints covering TV schedules, event and program metadata, closed-caption transcripts, and live stream discovery across C-SPAN 1, 2, and 3. The get_schedule endpoint returns a full day's programming for a given channel and date, including UTC start times, durations, video stream URLs, categories, and series names. Transcript data from get_transcript includes time-coded segments with speaker attribution down to the second.

Try it
Date in ISO format YYYY-MM-DD (e.g. 2026-06-01). When omitted, defaults to the current UTC date.
Channel number. Accepts exactly one of: 1 (C-SPAN), 2 (C-SPAN2), 3 (C-SPAN3), 5 (C-SPAN Radio), 6 (Today's Events).
api.parse.bot/scraper/9b895281-7eac-4c75-93bf-643fd4a78be4/<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/9b895281-7eac-4c75-93bf-643fd4a78be4/get_schedule?date=2026-07-16&channel=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 c-span-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: C-SPAN Schedule & Event Details API — bounded, re-runnable."""
from parse_apis.C_SPAN_Schedule___Event_Details_API import CSpan, Channel, NotFound

client = CSpan()

# Browse today's C-SPAN schedule (channel 1), capped at 5 items.
for entry in client.schedule_entries.list(channel=Channel.CSPAN, limit=5):
    print(entry.title, entry.time, entry.status)

# Drill into the first event from the schedule.
entry = client.schedule_entries.list(channel=Channel.CSPAN, limit=3).first()
if entry and entry.event_id:
    # Fetch full event details by ID.
    try:
        event = client.events.get(id=entry.event_id)
        print(event.title, event.category, event.description[:100])
    except NotFound as exc:
        print(f"Event not found: {exc}")

# Fetch a program and refresh it via the unified details endpoint.
program = client.programs.get(id="680198")
print(program.title, program.series_title, program.video_duration)

refreshed = program.refresh()
print(refreshed.title, refreshed.video_duration)

# Read the program's transcript sub-resource.
transcript = program.transcript.get()
print(transcript.has_transcript, transcript.total_segments, transcript.disclaimer)

# Check what's currently live on all default channels.
for stream in client.live_streams.list(limit=3):
    print(stream.title, stream.channel, stream.start_time_utc)

print("exercised: schedule_entries.list / events.get / programs.get / program.refresh / program.transcript.get / live_streams.list")
All endpoints · 6 totalmissing one? ·

Get the TV schedule for a given C-SPAN channel and date. Returns a list of scheduled events and programs with their UTC start times, titles, descriptions, durations, live/scheduled/completed status, m3u8 video stream URLs for live and completed items, category, format, series title, location, thumbnail URLs, and links to detail pages. Each item's date and start_time_utc reflect the actual scheduled air date (extracted from the page's day section headers), not just the requested date. Enriches each item with metadata from the C-SPAN API when available. Items that start earlier than their scheduled slot are flagged with is_early=true; in that case start_time_utc is the actual (earlier) start from the API and original_start_date is the originally scheduled time from the schedule page.

Input
ParamTypeDescription
datestringDate in ISO format YYYY-MM-DD (e.g. 2026-06-01). When omitted, defaults to the current UTC date.
channelstringChannel number. Accepts exactly one of: 1 (C-SPAN), 2 (C-SPAN2), 3 (C-SPAN3), 5 (C-SPAN Radio), 6 (Today's Events).
Response
{
  "type": "object",
  "fields": {
    "date": "string, the requested schedule date in YYYY-MM-DD format",
    "items": "array of schedule entries with time, start_time_utc, date (YYYY-MM-DD actual air date for this item), title, url, type, event_id, program_id, duration, duration_minutes, status, description, video_file, category, format, series_title, location, thumbnail (string URL to the item's thumbnail image or null if unavailable), is_early (boolean, true if the actual start time from the API is earlier than the scheduled time on the page), original_start_date (string UTC ISO timestamp from the schedule page when is_early is true, null otherwise)",
    "total": "integer, number of items in the schedule",
    "channel": "string, the channel number requested"
  },
  "sample": {
    "data": {
      "date": "2026-06-03",
      "items": [
        {
          "url": "https://www.c-span.org/event/senate-committee/treasury-secretary-scott-bessent-testifies-on-president-trumps-2027-budget/443700",
          "date": "2026-06-03",
          "time": "10:36am",
          "type": "event",
          "title": "The Hearing Room:Secretary Bessent Testifies on Oversight of Treasury Department",
          "format": "Senate Committee",
          "status": "completed",
          "category": "Senate Committee",
          "duration": "1 hour, 24 minutes",
          "event_id": "443700",
          "is_early": true,
          "location": {
            "id": 1299,
            "name": "Washington",
            "type": "city",
            "fullName": "Washington, District of Columbia, United States"
          },
          "program_id": null,
          "video_file": "https://m3u8-l.c-spanvideo.org/event/event.443700.tsc.m3u8",
          "description": "Secretary Scott Bessent testifies before the Senate Finance Committee on oversight of the Treasury Department.",
          "series_title": null,
          "start_time_utc": "2026-06-03T14:00:00Z",
          "duration_minutes": 84,
          "original_start_date": "2026-06-03T14:36:00Z"
        }
      ],
      "total": 57,
      "channel": "1"
    },
    "status": "success"
  }
}

About the C-SPAN API

Schedule and Live Stream Access

The get_schedule endpoint accepts a channel parameter and an ISO-format date (e.g. 2024-07-04), defaulting to today's UTC date when omitted. Each item in the returned items array includes a title, description, UTC start time, duration, status, category, format, series, location, and a video stream URL. The total field gives the count of scheduled entries. To find what is currently airing, get_live checks channels 1, 2, and 3 simultaneously (or a single channel when specified) and returns m3u8 HLS stream URLs, start times, durations in minutes, and enriched metadata for any identified events.

Event and Program Detail

get_event takes a numeric event_id (available from get_schedule items where type is 'event') and returns the full event record: series object with name and ID, location with full name and type, a programs array of constituent programs each with their own airings, and a sponsors array. get_program does the same for a program_id, adding fields like tags, views, a format object, and the direct m3u8 stream URL. The get_details endpoint accepts either ID type and returns a unified response with a type field ('event' or 'program') so callers can handle both without branching on the input parameter.

Transcripts

get_transcript accepts either a program_id or an event_id; when given an event ID, it returns the transcript for the first program in that event. The transcript array contains segments with offset, seconds_offset, seconds_end_offset, speaker, text, begin_time, and end_time. The has_transcript boolean indicates availability, and total_segments gives segment count. A disclaimer field carries any accuracy notice attached to the transcript. The video_file field provides the associated m3u8 stream URL when available, and available_types maps type codes to display names for transcript format selection.

Reliability & maintenanceVerified

The C-SPAN API is a managed, monitored endpoint for c-span.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when c-span.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 c-span.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.

Last verified
3d ago
Latest check
6/6 endpoints 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 C-SPAN schedule viewer that displays today's programming grid across all three channels with airing times and descriptions.
  • Archive congressional hearing transcripts by fetching time-coded, speaker-attributed segments via get_transcript using event IDs.
  • Monitor live political broadcasts by polling get_live for active m3u8 HLS stream URLs and metadata.
  • Construct a searchable event database using series, category, format, location, and sponsor fields from get_event.
  • Cross-reference C-SPAN program view counts with airing history to track audience engagement patterns.
  • Notify users when a specific series or category appears on the schedule by filtering get_schedule results on the series and category fields.
  • Sync transcript segments with video playback using seconds_offset and seconds_end_offset fields from get_transcript.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does C-SPAN have an official public developer API?+
C-SPAN does not publish a general-purpose public developer API. This Parse API provides structured access to schedule, event, program, transcript, and live stream data from C-SPAN's website.
What does get_transcript return and how is it time-coded?+
get_transcript returns an array of transcript segments, each with a text string, a speaker name, an offset string, and numeric seconds_offset and seconds_end_offset values. These fields map each segment to a position in the associated video stream. The video_file field provides the m3u8 stream URL when one is available, and has_transcript indicates whether any transcript exists for the requested program.
Does the schedule data cover C-SPAN Radio or C-SPAN.org web exclusives?+
The get_schedule and get_live endpoints cover C-SPAN TV channels 1, 2, and 3. C-SPAN Radio programming and web-only streams are not currently returned. You can fork this API on Parse and revise it to add an endpoint targeting those sources.
Can I retrieve historical schedules for past dates?+
The get_schedule endpoint accepts any ISO-format date string in the date parameter, so past dates can be queried. However, video stream URLs and live status fields in the results are only meaningful for current and upcoming airings; past items may have null or inactive stream URLs.
Is there a way to search for events or programs by keyword or speaker name?+
The current API does not expose a keyword or speaker search endpoint. get_schedule, get_event, and get_program all require a known date, event ID, or program ID to retrieve data. You can fork this API on Parse and revise it to add a search endpoint that filters by title, speaker, or category.
Page content last updated . Spec covers 6 endpoints from c-span.org.
Related APIs in Government PublicSee all →
nts.live API
Access data from nts.live.
zdf.de API
Search and browse German TV content, live streams, and episode details from ZDF Mediathek, or discover what's currently airing and trending on their homepage. Explore shows by category, find specific programs by name, and check the full TV schedule all in one place.
app.channelcrawler.com API
Search and discover YouTube channels across a database of 22M+ channels to find creators, communities, and content in your areas of interest. Get detailed channel information including stats and metadata to research creators and understand their audience.
twitch.tv API
Search for Twitch streamers and channels, view their profiles and streaming details, and discover live streams organized by category. Find the content and creators you want to watch all in one place.
matchroompool.com API
Access professional pool event schedules, player profiles, rankings, and real-time match updates from Matchroom Pool. Retrieve news articles and detailed tournament information across World Nineball Tour events.
espa.gr API
Discover and browse EU funding programs available in Greece, view detailed information about each initiative, and stay updated with the latest news from the ESPA portal. Search across the database and explore program planning details to find opportunities relevant to your interests.
cbssports.com API
Access comprehensive CBS Sports data including live game schedules, scores, game details, expert picks and analyst performance rankings, and team social feeds — all from a single API.
nhl.com API
Access data from nhl.com.