{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Transcript Extractor: Text, SRT, VTT, $3/1K",
    "description": "Get YouTube transcripts and subtitles from videos, Shorts, channels, playlists or searches as plain text, timed segments, SRT or VTT, with title, channel, views, duration and caption languages. Pick languages, manual or auto. No login, no API key.",
    "version": "0.1",
    "x-build-id": "E5tOFVG1KZOMd3LdP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/transparent_meteorite~youtube-transcript-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-transparent_meteorite-youtube-transcript-extractor",
        "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/transparent_meteorite~youtube-transcript-extractor/runs": {
      "post": {
        "operationId": "runs-sync-transparent_meteorite-youtube-transcript-extractor",
        "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/transparent_meteorite~youtube-transcript-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-transparent_meteorite-youtube-transcript-extractor",
        "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": {
          "startUrls": {
            "title": "YouTube URLs",
            "type": "array",
            "description": "Video (watch, youtu.be, Shorts, live), channel (@handle, /channel/UC...), playlist or search-results URLs. Channels, playlists and searches are expanded to their videos.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "videoIds": {
            "title": "Video IDs",
            "type": "array",
            "description": "Optional: bare 11-character video IDs, e.g. dQw4w9WgXcQ.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search words",
            "type": "array",
            "description": "Optional: YouTube searches, e.g. \"sourdough bread recipe\". The top videos of each search are extracted.",
            "items": {
              "type": "string"
            }
          },
          "maxVideosPerSource": {
            "title": "Videos per channel / playlist / search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many videos to take from each channel, playlist or search (newest first for channels).",
            "default": 10
          },
          "channelTab": {
            "title": "Channel tab",
            "enum": [
              "videos",
              "shorts",
              "streams"
            ],
            "type": "string",
            "description": "Which tab of a channel URL to read videos from.",
            "default": "videos"
          },
          "maxItems": {
            "title": "Max transcripts in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many transcripts (cost cap). 0 = no cap.",
            "default": 0
          },
          "languages": {
            "title": "Preferred languages",
            "type": "array",
            "description": "Caption language codes in order of preference, e.g. en, es, pt-BR. \"pt\" also matches pt-BR. Default: en.",
            "items": {
              "type": "string"
            }
          },
          "fallbackToAnyLanguage": {
            "title": "Fall back to any language",
            "type": "boolean",
            "description": "If none of your languages exists, return the video's own captions (manual first, else auto-generated). Off = such videos return status no_transcript (free).",
            "default": true
          },
          "transcriptType": {
            "title": "Transcript type",
            "enum": [
              "any",
              "manual",
              "auto"
            ],
            "type": "string",
            "description": "Human-made captions are more accurate; auto-generated exist on most videos.",
            "default": "any"
          },
          "translateTo": {
            "title": "Translate to (best effort)",
            "type": "string",
            "description": "Optional language code, e.g. de. Uses YouTube's own machine translation. YouTube often rate-limits translation; when it refuses, you get the original language and a translationError field (same price)."
          },
          "outputFormats": {
            "title": "Output formats",
            "type": "array",
            "description": "Which transcript fields each row carries: transcript (text), segments (start, duration, end, text), srt, vtt.",
            "items": {
              "type": "string",
              "enum": [
                "text",
                "segments",
                "srt",
                "vtt"
              ],
              "enumTitles": [
                "Plain text",
                "Timed segments (JSON)",
                "SRT subtitles",
                "WebVTT subtitles"
              ]
            },
            "default": [
              "text",
              "segments"
            ]
          },
          "textWithTimestamps": {
            "title": "Timestamps in plain text",
            "type": "boolean",
            "description": "Plain text as one line per caption with [m:ss] in front, instead of one paragraph.",
            "default": false
          },
          "includeExtendedMetadata": {
            "title": "Extra video details",
            "type": "boolean",
            "description": "Also read the watch page for publish date, category, like count and comment count (one extra request per video, same price).",
            "default": false
          },
          "includeVideosWithoutTranscript": {
            "title": "Rows for videos without a transcript",
            "type": "boolean",
            "description": "Output a free row with status no_transcript / unavailable / failed and the reason, so you can see what was skipped.",
            "default": true
          },
          "monitorMode": {
            "title": "Monitor mode: only new videos",
            "type": "boolean",
            "description": "Remember extracted video IDs between runs and skip them next time. Schedule a channel daily to transcribe only new uploads.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Use a different name per project to keep separate memories.",
            "default": "youtube-transcripts-monitor"
          },
          "language": {
            "title": "Interface language",
            "type": "string",
            "description": "YouTube interface language (hl).",
            "default": "en"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country (gl) for search results.",
            "default": "US"
          },
          "videoConcurrency": {
            "title": "Videos in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many videos are processed at the same time.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed normally: requests go direct. Pick a proxy only if your runs get blocked."
          },
          "autoProxyFallback": {
            "title": "Switch to residential proxy when blocked",
            "type": "boolean",
            "description": "If YouTube refuses a request twice, retry it through Apify residential proxy (only when your plan includes it).",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}