c-span.org APIwww.c-span.org ↗
Retrieve C-SPAN TV schedules by channel and date, plus event details, program metadata, and closed-caption transcripts via 4 structured endpoints.
curl -X GET 'https://api.parse.bot/scraper/9b895281-7eac-4c75-93bf-643fd4a78be4/get_schedule?date=2026-06-01&channel=1' \ -H 'X-API-Key: $PARSE_API_KEY'
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, and links to detail pages. Times are converted from Eastern Time to UTC.
| Param | Type | Description |
|---|---|---|
| date | string | Date in ISO format YYYY-MM-DD (e.g. 2026-06-01). When omitted, defaults to the current UTC date. |
| channel | string | Channel number. Accepts exactly one of: 1 (C-SPAN), 2 (C-SPAN2), 3 (C-SPAN3), 5 (C-SPAN Radio), 6 (Today's Events). |
{
"type": "object",
"fields": {
"date": "string, the schedule date in YYYY-MM-DD format",
"items": "array of schedule entries with time, start_time_utc, date, title, url, type, event_id, program_id, duration, duration_minutes, status, description",
"total": "integer, number of items in the schedule",
"channel": "string, the channel number requested"
},
"sample": {
"data": {
"date": "2026-06-01",
"items": [
{
"url": "https://www.c-span.org/event/washington-journal/06-01-2026/443464",
"date": "2026-06-01",
"time": "7:00am",
"type": "event",
"title": "Washington Journal:Washington Journal",
"status": "completed",
"duration": "3 hours, 2 minutes",
"event_id": "443464",
"program_id": null,
"description": "Washington Examiner reporter Ramsey Touchberry previews the week ahead in Congress...",
"start_time_utc": "2026-06-01T11:00:00Z",
"duration_minutes": 182
}
],
"total": 62,
"channel": "1"
},
"status": "success"
}
}About the c-span.org API
The C-SPAN API provides 4 endpoints for accessing television schedules, event metadata, program details, and closed-caption transcripts from C-SPAN's broadcast channels. The get_schedule endpoint returns a full day's programming for any of six C-SPAN channels — including UTC start times, durations, and live/scheduled/completed status — while get_transcript delivers time-stamped speaker segments for individual programs.
Schedule and Channel Coverage
The get_schedule endpoint accepts a date parameter in YYYY-MM-DD format and a channel parameter supporting C-SPAN (1), C-SPAN2 (2), C-SPAN3 (3), C-SPAN Radio (5), and additional channels. When date is omitted it defaults to the current UTC date. Each item in the returned items array includes start_time_utc, duration_minutes, title, url, type (either 'event' or 'program'), and both event_id and program_id identifiers for downstream lookups.
Event and Program Detail
get_event takes a numeric event_id and returns the full event record: location (with fullName, name, and type), series, category, format, a sponsors array, and a programs array listing every constituent program with its own id, videoDuration, and canonicalUrlPath. get_program takes a numeric program_id and returns granular program metadata including a tags array, a views count, an airings array where each airing carries begin and end in UTC ISO-8601 and a boolean live flag, and a back-reference event_id.
Transcripts
get_transcript accepts a program_id and first checks availability via the has_transcript boolean. When a transcript exists, the response includes a transcript array of segments, each containing offset, seconds_offset, speaker, text, begin_time, and end_time. The available_types object maps type codes such as 'cc' (closed captions) to display names, and transcript_type identifies which type was returned. Programs without transcripts return has_transcript: false with no segment array.
Identifiers and Cross-Linking
Schedule items carry both event_id and program_id fields, but the type field ('event' or 'program') tells you which ID is actionable for the detail endpoints. An event can contain multiple programs, so iterating get_event's programs array and calling get_program per entry lets you build a complete picture of a multi-segment broadcast.
- Build a daily C-SPAN broadcast guide that shows live, scheduled, and completed status for each channel.
- Index C-SPAN closed-caption transcripts for full-text search of Congressional hearings and public affairs coverage.
- Track which sponsors appear across C-SPAN events using the
sponsorsarray fromget_event. - Monitor airing schedules for a specific program by watching its
airingsarray for newbegin/endUTC windows. - Correlate C-SPAN events with legislative activity by joining
locationandseriesmetadata fromget_eventwith external congressional data. - Build speaker-level timelines of a hearing by extracting the
speakerandseconds_offsetfields fromget_transcriptsegments. - Archive program metadata — including
views,tags, andcategory— for longitudinal analysis of C-SPAN broadcast topics.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 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.
Does C-SPAN have an official developer API?+
How do I know whether a schedule item should be looked up with get_event or get_program?+
get_schedule response includes a type field set to either 'event' or 'program'. Use event_id with get_event for items typed as 'event', and program_id with get_program for items typed as 'program'. Both IDs are always present in the schedule item, but only the matching one is valid for the detail endpoint.Are transcripts available for every C-SPAN program?+
get_transcript endpoint returns a has_transcript boolean indicating availability before exposing any segments. Programs that lack closed-caption data return has_transcript: false with no transcript array or total_segments field. Coverage varies by program type and broadcast date.Does the API cover C-SPAN video-on-demand or clip search?+
get_schedule, event and program metadata via get_event and get_program, and transcripts via get_transcript. Video-on-demand catalog browsing or keyword search across the full C-SPAN video library is not included. You can fork this API on Parse and revise it to add an endpoint targeting the video library.How far back or forward do schedules go?+
get_schedule endpoint accepts any date in YYYY-MM-DD format, but available data depends on what C-SPAN publishes. Historical dates may return completed-status items while future dates return scheduled-status items. Very distant future or past dates may return an empty items array if no schedule data is published for that date.