# TVMaze TV Shows Scraper (`parseforge/tvmaze-shows-scraper`) Actor

Search TV shows or browse the entire TVMaze catalog of 80,000+ titles. Returns name, poster, type, language, genres, status, runtime, network, country, premiere and end dates, IMDB/TheTVDB IDs, summary and rating. Optional embeds: full episode list, cast and alternate titles. Schedule mode included.

- **URL**: https://apify.com/parseforge/tvmaze-shows-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Marketing, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🎬 TVMaze TV Shows Scraper

> 🚀 **Search TV shows or browse the entire TVMaze catalog of 80,000+ titles.**

> 🕒 **Last updated:** 2026-05-06 · **📊 35 fields** per record · **80,000+ TV shows** · poster, cast, episodes, IMDB/TheTVDB IDs, network, schedule, ratings

The **TVMaze TV Shows Scraper** searches TV-show metadata or browses the full TVMaze catalog of **80,000+ titles**. Output includes name, poster, type, language, genres, status, runtime, network, country, premiere and end dates, IMDB/TheTVDB IDs, summary, and rating. Optional embeds add full episode lists, cast, and alternate-region titles.

Beyond search and browse, the Actor includes a Schedule mode that returns every episode airing on a given day in a given country, and a Streaming Schedule mode for web-only releases. Four modes in one Actor cover discovery, deep cataloging, and real-time TV scheduling.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Streaming app developers, TV recommendation engines, content marketers, journalists, TV researchers | Building TV discovery apps, recommendation engines, content marketing on shows, TV researcher workflows, data enrichment |

---

### 📋 What the TVMaze TV Shows Scraper does

Five filtering workflows in a single run:

- 🔍 **Search by name.** Find shows by title (capped at 10 results per query).
- 📚 **Browse mode.** Paginate the entire 80,000+ TVMaze catalog.
- 📅 **Schedule mode.** Every episode airing on a date in a country.
- 🌐 **Web schedule.** Streaming-only releases per date.
- 🎭 **Optional embeds.** Episodes, cast, and AKAs per show.

> 💡 **Why it matters:** clean, server-side filtering removes the parser-and-pagination work from your team and keeps your dataset fresh on every run.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Records to return. Free plan caps at 10, paid plan up to 1,000,000.</td></tr>
<tr><td><code>mode</code></td><td>string</td><td><code>"search"</code></td><td>`search`, `browse`, `schedule`, `webSchedule`.</td></tr>
<tr><td><code>query</code></td><td>string</td><td><code>"breaking bad"</code></td><td>Show name (search mode).</td></tr>
<tr><td><code>scheduleCountry</code></td><td>string</td><td><code>"US"</code></td><td>ISO country code (schedule mode).</td></tr>
<tr><td><code>scheduleDate</code></td><td>string</td><td><code>""</code></td><td>YYYY-MM-DD (schedule mode). Empty = today.</td></tr>
<tr><td><code>browseStartPage</code></td><td>integer</td><td><code>0</code></td><td>Start page (browse mode, 250 shows/page).</td></tr>
<tr><td><code>includeEpisodes</code></td><td>boolean</td><td><code>false</code></td><td>Embed full episode list (extra API call).</td></tr>
<tr><td><code>includeCast</code></td><td>boolean</td><td><code>false</code></td><td>Embed cast list per show.</td></tr>
<tr><td><code>includeAkas</code></td><td>boolean</td><td><code>false</code></td><td>Embed alternate-region titles.</td></tr>
</tbody>
</table>

**Example: search Breaking Bad with cast.**

```json
{
    "maxItems": 5,
    "mode": "search",
    "query": "breaking bad",
    "includeCast": true
}
````

**Example: browse 1,000 shows from page 0.**

```json
{
    "maxItems": 1000,
    "mode": "browse",
    "browseStartPage": 0
}
```

***

### 📊 Output

Each record contains **35 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🖼️ `imageUrl` | string | null | `"https://static.tvmaze.com/uploads/images/.../169.jpg"` |
| 🆔 `showId` | number | `169` |
| 📛 `name` | string | `"Breaking Bad"` |
| 🏷️ `type` | string | `"Scripted"` |
| 🌐 `language` | string | `"English"` |
| 🏷️ `genres` | array | `["Drama","Crime","Thriller"]` |
| 🟢 `status` | string | `"Ended"` |
| ⏱️ `runtime` | number | null | `60` |
| 📅 `premiered` | string | `"2008-01-20"` |
| 📅 `ended` | string | null | `"2013-09-29"` |
| 🌐 `networkName` | string | `"AMC"` |
| 🌍 `country` | string | `"United States"` |
| ⭐ `rating` | number | `9.2` |
| 🆔 `imdb` | string | `"tt0903747"` |
| 🆔 `thetvdb` | number | `81189` |
| 📝 `summaryText` | string | `"A high school chemistry teacher diagnosed with..."` |

#### 📦 Sample records

<details>
<summary><strong>🎬 Hit drama</strong></summary>

```json
{"showId":169,"name":"Breaking Bad","premiered":"2008-01-20","ended":"2013-09-29","networkName":"AMC","rating":9.2,"genres":["Drama","Crime","Thriller"],"imdb":"tt0903747"}
```

</details>

<details>
<summary><strong>📺 Streaming series</strong></summary>

```json
{"showId":1,"name":"Under the Dome","premiered":"2013-06-24","networkName":"CBS","rating":6.5,"genres":["Drama","Science-Fiction","Thriller"]}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 📚 | **Full TVMaze catalog.** 80,000+ shows including streaming-only and international titles. |
| 📅 | **Schedule modes.** Get every episode airing today, in any country, for any date. |
| 🎭 | **Rich embeds.** Episodes, cast, alternate titles in a single run. |
| 🆔 | **Cross-platform IDs.** IMDB and TheTVDB IDs included for joins. |
| ⚡ | **Fast.** 100 shows in under 30 seconds. |

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ This Actor** | $5 free credit | **80,000+** shows | Live per run | mode, query, schedule, embeds | ⚡ 2 min |
| TMDB API | Free + key | Larger movie + TV | Live | Yes | 🐢 API key |
| OMDb (IMDB-based) | $15/year | Movie-leaning | Stale | Limited | 🐢 Account |
| Custom HTTP scraping | Free | All | Live | DIY | 🐢 Days |

Pick this Actor when you want broad coverage, server-side filtering, and no pipeline maintenance.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the TVMaze TV Shows Scraper page on the Apify Store.
3. 🎯 **Set input.** Pick your filters and `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 📺 Streaming Apps

- Catalog enrichment with posters and ratings
- Recommendation engine inputs
- Schedule grids and EPGs
- Cross-platform ID resolution

</td>
<td width="50%" valign="top">

#### 📰 Content Marketing

- TV-show roundups and "what's new" newsletters
- Curated genre lists
- Episode-airing alerts for fan sites
- Season-finale countdowns

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 🤖 Recommendation & ML

- Train similarity embeddings on cast and genres
- Build show-discovery models
- Cross-train with IMDB/TheTVDB joins
- Predict show longevity

</td>
<td width="50%" valign="top">

#### 🎬 TV Research

- Track network programming patterns
- Survey international TV
- Compile show metadata for research
- Period studies of TV trends

</td>
</tr>
</table>

***

### 🔌 Automating TVMaze TV Shows Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Hourly, daily, or weekly refreshes keep downstream databases in sync automatically.

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- TV-studies research
- Cross-cultural programming research
- Reproducible catalog snapshots
- Course materials with show metadata

</td>
<td width="50%">

#### 🎨 Personal and creative

- Personal watchlists and dashboards
- Side projects on TV data
- Newsletter content
- Hobbyist TV trackers

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Public-broadcasting research
- Cultural-content cataloging
- Subtitle/translation projects
- Open metadata contributions

</td>
<td width="50%">

#### 🧪 Experimentation

- Train show-recommender models
- Prototype EPG-aware agents
- Build genre classifiers
- Test discovery UI concepts

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20TVMaze%20TV%20Shows%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20TVMaze%20TV%20Shows%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20TVMaze%20TV%20Shows%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20TVMaze%20TV%20Shows%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Pick a mode (search, browse, schedule, webSchedule). The Actor queries TVMaze and emits one record per show, optionally embedding episodes/cast/AKAs.

#### 🔍 Why does search cap at 10 results?

TVMaze's search endpoint limits any single query to ~10 results. For more, use browse mode (250 shows per page, paginated).

#### 📊 How many fields per record?

Up to 35 base fields, plus optional embeds for episodes, cast, and alternate titles.

#### 📅 What does schedule mode return?

Every episode airing on the given date in the given country, with the parent show metadata for each.

#### 🌐 Does it include international shows?

Yes. TVMaze covers shows from 100+ countries, with original-language titles and AKA entries.

#### 🔁 Can I schedule recurring runs?

Yes. Use Apify Schedules to track new shows, refresh ratings, or build daily EPGs.

#### ⚖️ Is this data public?

Yes. TVMaze publishes its API under a permissive license. Only public catalog data is collected.

#### 💳 Do I need a paid Apify plan?

No. The free plan covers preview runs. A paid plan unlocks higher item counts and scheduling.

#### 🆘 What if a run fails?

Apify retries transient errors. Partial datasets are preserved.

#### 🎭 Does it return cast photos?

Yes when `includeCast` is true. Cast records include `personImage` URLs.

***

### 🔌 Integrate with any app

TVMaze TV Shows Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes.

***

### 🔗 Recommended Actors

- [**🎙️ iTunes Podcast Search**](https://apify.com/parseforge/itunes-podcast-search-scraper) - Apple Podcasts catalog (5M+ shows)
- [**🎌 AniList Anime/Manga**](https://apify.com/parseforge/anilist-anime-manga-scraper) - Anime, manga, light novels
- [**🎨 Openverse Media**](https://apify.com/parseforge/openverse-media-scraper) - 800M+ openly licensed images and audio
- [**📰 Hacker News Search**](https://apify.com/parseforge/hackernews-algolia-scraper) - Every HN story since 2007
- [**🌐 Wikidata Entity Search**](https://apify.com/parseforge/wikidata-entity-search-scraper) - 100M+ open knowledge-graph entities

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more reference-data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by TVMaze or any television network or production company. All trademarks mentioned are the property of their respective owners. Only publicly available open data is collected.

# Actor input Schema

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `mode` (type: `string`):

Search mode finds shows by query (max ~10 per query). Browse mode paginates the entire TVMaze catalog (250 shows per page, ~80,000 total).

## `query` (type: `string`):

Show name to search. Required for search mode, ignored for browse.

## `scheduleCountry` (type: `string`):

Country code for schedule mode (e.g. 'US', 'GB', 'CA'). Default 'US'.

## `scheduleDate` (type: `string`):

Date for schedule mode (YYYY-MM-DD). Default = today.

## `browseStartPage` (type: `integer`):

Browse mode starting page (each page = 250 shows). Default 0.

## `includeEpisodes` (type: `boolean`):

If checked, includes the full episode list per show (extra API call per show).

## `includeCast` (type: `boolean`):

If checked, includes the cast list per show.

## `includeAkas` (type: `boolean`):

If checked, includes the show's alternate names per region.

## Actor input object example

```json
{
  "maxItems": 10,
  "mode": "search",
  "query": "breaking bad",
  "scheduleCountry": "US",
  "includeEpisodes": false,
  "includeCast": false,
  "includeAkas": false
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10,
    "mode": "search",
    "query": "breaking bad",
    "scheduleCountry": "US",
    "scheduleDate": "",
    "browseStartPage": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/tvmaze-shows-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxItems": 10,
    "mode": "search",
    "query": "breaking bad",
    "scheduleCountry": "US",
    "scheduleDate": "",
    "browseStartPage": 0,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/tvmaze-shows-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "mode": "search",
  "query": "breaking bad",
  "scheduleCountry": "US",
  "scheduleDate": "",
  "browseStartPage": 0
}' |
apify call parseforge/tvmaze-shows-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/tvmaze-shows-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TVMaze TV Shows Scraper",
        "description": "Search TV shows or browse the entire TVMaze catalog of 80,000+ titles. Returns name, poster, type, language, genres, status, runtime, network, country, premiere and end dates, IMDB/TheTVDB IDs, summary and rating. Optional embeds: full episode list, cast and alternate titles. Schedule mode included.",
        "version": "1.0",
        "x-build-id": "guw56FOKOntvAt1C1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~tvmaze-shows-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-tvmaze-shows-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~tvmaze-shows-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-tvmaze-shows-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~tvmaze-shows-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-tvmaze-shows-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "browse",
                            "schedule",
                            "webSchedule"
                        ],
                        "type": "string",
                        "description": "Search mode finds shows by query (max ~10 per query). Browse mode paginates the entire TVMaze catalog (250 shows per page, ~80,000 total).",
                        "default": "search"
                    },
                    "query": {
                        "title": "Search query (search mode only)",
                        "type": "string",
                        "description": "Show name to search. Required for search mode, ignored for browse."
                    },
                    "scheduleCountry": {
                        "title": "Schedule country (ISO 3166-1)",
                        "type": "string",
                        "description": "Country code for schedule mode (e.g. 'US', 'GB', 'CA'). Default 'US'."
                    },
                    "scheduleDate": {
                        "title": "Schedule date",
                        "type": "string",
                        "description": "Date for schedule mode (YYYY-MM-DD). Default = today."
                    },
                    "browseStartPage": {
                        "title": "Browse start page",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Browse mode starting page (each page = 250 shows). Default 0."
                    },
                    "includeEpisodes": {
                        "title": "Include episodes",
                        "type": "boolean",
                        "description": "If checked, includes the full episode list per show (extra API call per show).",
                        "default": false
                    },
                    "includeCast": {
                        "title": "Include cast",
                        "type": "boolean",
                        "description": "If checked, includes the cast list per show.",
                        "default": false
                    },
                    "includeAkas": {
                        "title": "Include AKAs (alternate titles)",
                        "type": "boolean",
                        "description": "If checked, includes the show's alternate names per region.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
