TVmaze API: Get TV schedule
Gets the TV broadcasts scheduled in a country for a date from TVmaze. It can also add local and worldwide streaming releases. Airtimes are shown in the service's timezone, or in UTC when the service has none.
Unofficial. Not affiliated with or endorsed by TVmaze.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Date optional
date Schedule date, for example 2026-09-29. Defaults to today.
2026-09-29
- Country optional
country Country name or two-letter code, such as United States or US.
United Kingdom
Default
United States.- Max Results optional
max_results Maximum number of episodes, for example 200.
25
Whole number from 1 to 500. Default
200.- Include Streaming optional
include_streaming Include local and worldwide streaming releases, for example true.
false
True or false. Default
true.
Input as JSON
{ "date": "2026-09-29", "country": "United Kingdom", "max_results": 25, "include_streaming": false}Output
{ "episodes": [ { "genres": [], "runtime": "60 min", "show_id": 10594, "show_name": "Squawk Box Europe", "episode_id": 3724393, "air_datetime": "2026-09-29T04:00:00+01:00", "episode_link": "https://www.tvmaze.com/episodes/3724393/squawk-box-europe-2026-09-28-episode-193" , "episode_title": "Episode 193", "season_number": 2026, "episode_number": 193, "runtime_minutes": 60, "network_or_streaming_service": "CNBC Europe" }, { "genres": [], "runtime": "75 min", "show_id": 51281, "show_name": "Morning Live", "episode_id": 3769232, "air_datetime": "2026-09-29T09:30:00+01:00", "episode_link": "https://www.tvmaze.com/episodes/3769232/morning-live-8x85-episode-85" , "episode_title": "Episode 85", "season_number": 8, "episode_number": 85, "runtime_minutes": 75, "network_or_streaming_service": "BBC One" }, { "genres": [], "runtime": "60 min", "show_id": 8611, "show_name": "Loose Women", "episode_id": 3774921, "air_datetime": "2026-09-29T12:30:00+01:00", "episode_link": "https://www.tvmaze.com/episodes/3774921/loose-women-30x112-episode-112" , "episode_title": "Episode 112", "season_number": 30, "episode_number": 112, "runtime_minutes": 60, "network_or_streaming_service": "ITV1" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"tvmaze.com/get_tv_schedule","input":{"date":"2026-09-29","country":"United Kingdom","max_results":25,"include_streaming":false}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "tvmaze.com/get_tv_schedule" , "input": { "date": "2026-09-29", "country": "United Kingdom", "max_results": 25, "include_streaming": False }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "tvmaze.com/get_tv_schedule" , "input": { "date": "2026-09-29", "country": "United Kingdom", "max_results": 25, "include_streaming": false } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run tvmaze.com/get_tv_schedule# with {"date":"2026-09-29","country":"United Kingdom","max_results":25,"include_streaming":false}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "properties": { "date": { "type": "string", "examples": [ "2026-09-29" ], "description": "Schedule date, for example 2026-09-29. Defaults to today." }, "country": { "type": "string", "default": "United States", "examples": [ "United States" ], "description": "Country name or two-letter code, such as United States or US." }, "max_results": { "type": "integer", "default": 200, "maximum": 500, "minimum": 1, "description": "Maximum number of episodes, for example 200." }, "include_streaming": { "type": "boolean", "default": true, "description": "Include local and worldwide streaming releases, for example true." } }}Output schema
{ "type": "object", "required": [ "episodes" ], "properties": { "episodes": { "type": "array", "items": { "type": "object", "properties": { "genres": { "type": "array", "items": { "type": "string" } }, "runtime": { "type": [ "string", "null" ] }, "show_id": { "type": [ "integer", "null" ] }, "show_name": { "type": [ "string", "null" ] }, "episode_id": { "type": [ "integer", "null" ] }, "air_datetime": { "type": [ "string", "null" ] }, "episode_link": { "type": [ "string", "null" ] }, "episode_title": { "type": [ "string", "null" ] }, "season_number": { "type": [ "integer", "null" ] }, "episode_number": { "type": [ "integer", "null" ] }, "runtime_minutes": { "type": [ "integer", "null" ] }, "network_or_streaming_service": { "type": [ "string", "null" ] } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
tvmaze.com/get_tv_schedule- Returns
- air time, show, season/episode, title, network or streaming service, runtime, genres, links and IDs
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method tvmaze.com/get_tv_schedule with the inputs above.
Ask your agent
- What TV episodes are airing in the United States on 2026-09-29?
- Show me tonight's broadcast schedule for the UK, limited to 50 episodes.
- Which streaming releases come out in Canada on 2026-10-03, excluding regular broadcasts?
- On TVmaze, what shows air on 2026-09-30 in Germany with their network and runtime?
- I need the first 100 episodes scheduled for the US next Friday, including streaming drops, with season and episode numbers.
See more
All TVmaze methodsLooks up a TV show by name or TVmaze link and returns its status, schedule, rating, next and previous episodes, and optionally the full episode list including specials.
tvmaze.com/get_showFinds a TV show on TMDB by exact name or TMDB show link and returns its details, cast, seasons, the last aired and next scheduled episodes, and the streaming services listed for a chosen country.
themoviedb.org/get_tv_showLists upcoming AniList anime episodes ordered by air time, with air times in the chosen time zone and available streaming links.
anilist.co/get_airing_scheduleLists movies scheduled for theatrical release in a country over the coming three weeks, soonest first, from TMDB's country-specific release calendar, with genres, overview and user score.
themoviedb.org/list_upcoming_moviesLists MLB games and scores for a date or up to seven days, optionally for one team. Start times are shown in the requested time zone.
mlb.com/get_scoresFinds a movie on TMDB by exact title (optionally its release year) or by TMDB movie link, and returns its details, cast, crew, trailers, and the release date, age rating and streaming services for a chosen country.
themoviedb.org/get_movieFinds a movie's showtimes at nearby US theaters on Fandango, with formats, local times and ticket links.
fandango.com/get_movie_showtimesLists recently added movies and show seasons on streaming services in a country, newest first, from JustWatch listings.
justwatch.com/list_new_arrivals