{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Channel & Playlist Transcripts",
    "description": "Transcripts for every video on a YouTube channel or playlist. Paste @handles, channel or playlist URLs and get transcript, timestamps, date and views per video. At no extra cost: likes, tags, chapters, channel stats, SRT, VTT, LLM text, chapter chunks. Only-new mode. $3 per 1,000, failures free.",
    "version": "1.0",
    "x-build-id": "dpye0hwCpAPJGgGsb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/heyitsgautham~youtube-channel-transcripts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-heyitsgautham-youtube-channel-transcripts",
        "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/heyitsgautham~youtube-channel-transcripts/runs": {
      "post": {
        "operationId": "runs-sync-heyitsgautham-youtube-channel-transcripts",
        "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/heyitsgautham~youtube-channel-transcripts/run-sync": {
      "post": {
        "operationId": "run-sync-heyitsgautham-youtube-channel-transcripts",
        "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",
        "required": [
          "sources"
        ],
        "properties": {
          "sources": {
            "title": "Channels and playlists",
            "minItems": 1,
            "type": "array",
            "description": "YouTube channel or playlist URLs. Accepts @handle, /channel/UC..., /c/... and /user/... links, playlist links with list=..., and bare @handles, UC channel IDs or PL playlist IDs.",
            "items": {
              "type": "string"
            }
          },
          "maxVideosPerSource": {
            "title": "Max videos per source",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "How many videos to take from each channel or playlist. Channels go newest first, playlists in playlist order. 0 means all videos.",
            "default": 100
          },
          "includeShorts": {
            "title": "Include Shorts",
            "type": "boolean",
            "description": "Channels only. Off: regular videos and past live streams. On: every upload, Shorts included.",
            "default": false
          },
          "language": {
            "title": "Transcript language",
            "type": "string",
            "description": "ISO 639-1 code such as en, es, hi or de. Uses captions in this language when the video has them. Otherwise returns the video's original captions and sets requestedLanguageFound to false.",
            "default": "en"
          },
          "includeTimestamps": {
            "title": "Include timestamped segments",
            "type": "boolean",
            "description": "Adds a segments array with start time, duration and text for each caption line. The plain transcript is always included.",
            "default": true
          },
          "includeVideoDetails": {
            "title": "Include video details",
            "type": "boolean",
            "description": "Adds likeCount, commentCount, category, description, tags, thumbnailUrl and chapters (from the description's timestamps, each with a url that opens the video there) to each transcript row, at no extra cost. Emails and phone numbers in descriptions are replaced with [email removed] and [phone removed].",
            "default": false
          },
          "includeChannelStats": {
            "title": "Include channel stats",
            "type": "boolean",
            "description": "Adds channelSubscriberCount (rounded the way YouTube shows it), channelVideoCount, channelViewCount and channelJoinedDate to each transcript row, at no extra cost. Read once per channel.",
            "default": false
          },
          "outputFormats": {
            "title": "Output formats",
            "uniqueItems": true,
            "type": "array",
            "description": "Extra fields on each transcript row, at no extra cost. text: plainText, the captions as paragraphs, one per line. llm: llmText, Markdown with the title, channel, date and URL on top, chapter headings, a [m:ss] stamp per paragraph and sound cues such as [Music] removed. srt and vtt: the subtitle file as text. chunks: a chunks array for RAG, one chunk per YouTube chapter, long chapters split evenly, or even pieces when the video has no chapters, each with start, end, text, wordCount and a url that opens the video at that second.",
            "items": {
              "type": "string",
              "enum": [
                "text",
                "llm",
                "srt",
                "vtt",
                "chunks"
              ],
              "enumTitles": [
                "Plain text in paragraphs",
                "LLM-ready Markdown",
                "SRT subtitles",
                "VTT subtitles",
                "RAG chunks by chapter"
              ]
            },
            "default": []
          },
          "chunkSizeWords": {
            "title": "Chunk size (words)",
            "minimum": 50,
            "maximum": 5000,
            "type": "integer",
            "description": "Used by the chunks format. A chunk holds at most about this many words, cut between caption lines. Chapters shorter than this stay one chunk.",
            "default": 300
          },
          "onlyNewSinceLastRun": {
            "title": "Only new since the last run",
            "type": "boolean",
            "description": "For scheduled runs. Returns only videos this actor has not returned a transcript for before, from the same channel or playlist, and nothing older than the newest one it returned last time. Videos that had no captions yet are checked again. The first run returns the usual results and remembers them. The memory is a key-value store named youtube-channel-transcripts-monitor in your Apify account.",
            "default": false
          },
          "publishedAfter": {
            "title": "Published after",
            "pattern": "^$|^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2})?)?$|^\\d+\\s*(minute|hour|day|week|month|year)s?(\\s+ago)?$",
            "type": "string",
            "description": "Only videos published on or after this date. Use a date such as 2026-10-01, an ISO time such as 2026-10-01T12:00:00Z (UTC), or a relative value such as 7 days, meaning the last 7 days. Uses each video's exact publish time. On channels the listing stops once videos are older, and Max videos per source then counts only videos inside the window."
          },
          "publishedBefore": {
            "title": "Published before",
            "pattern": "^$|^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2})?)?$|^\\d+\\s*(minute|hour|day|week|month|year)s?(\\s+ago)?$",
            "type": "string",
            "description": "Only videos published before this date. Same formats as Published after. Combine both for a window, such as 2026-01-01 to 2026-04-01."
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many videos to fetch in parallel.",
            "default": 10
          },
          "useProxy": {
            "title": "Use residential proxy",
            "type": "boolean",
            "description": "Leave on. YouTube blocks cloud IPs.",
            "default": true
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}