🌟Youtube Transcript Pro
Pricing
from $0.00005 / actor start
Go to Apify Store
🌟Youtube Transcript Pro
One YouTube video transcript from captions, with SRT, chunks, translation and metadata. Failed, filtered and duplicate videos are free.
🌟Youtube Transcript Pro
Pricing
from $0.00005 / actor start
One YouTube video transcript from captions, with SRT, chunks, translation and metadata. Failed, filtered and duplicate videos are free.
You can access the 🌟Youtube Transcript Pro programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.0", "x-build-id": "b8O8pKU1PJg4w03gW" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/databuddy~youtube-transcript-pro/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-databuddy-youtube-transcript-pro", "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/databuddy~youtube-transcript-pro/runs": { "post": { "operationId": "runs-sync-databuddy-youtube-transcript-pro", "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/databuddy~youtube-transcript-pro/run-sync": { "post": { "operationId": "run-sync-databuddy-youtube-transcript-pro", "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": { "urls": { "title": "YouTube URLs", "type": "array", "description": "Videos (watch, youtu.be, Shorts, embed, live, m./music.youtube.com), channels (@handle, /channel/UC…, /c/…, /user/…), playlists, or plain 11-character video IDs. Channels and playlists are expanded into their videos.", "items": { "type": "string" } }, "searchQueries": { "title": "Search queries", "type": "array", "description": "Find videos by YouTube search, e.g. \"claude ai tutorial\". Each query is treated like a channel: up to \"Max videos per channel / playlist / search\" videos.", "default": [], "items": { "type": "string" } }, "maxVideosPerSource": { "title": "Max videos per channel / playlist / search", "minimum": 1, "type": "integer", "description": "How many videos to take from each channel, playlist or search query (newest first for channels).", "default": 20 }, "channelTab": { "title": "Channel tab", "enum": [ "videos", "shorts", "streams" ], "type": "string", "description": "Which channel tab to read. A tab in the URL (e.g. /@name/shorts) overrides this.", "default": "videos" }, "languages": { "title": "Preferred languages", "type": "array", "description": "Caption languages in order of preference, as codes: en, hi, es, fr, de, ja, pt-BR… \"en\" also matches en-US / en-GB.", "default": [ "en" ], "items": { "type": "string" } }, "fallbackToAnyLanguage": { "title": "Fall back to any language", "type": "boolean", "description": "If none of your languages exist, take the video's own caption track instead of skipping it.", "default": true }, "preferManualCaptions": { "title": "Prefer human-made captions", "type": "boolean", "description": "Use creator-uploaded captions over YouTube's auto-generated ones when both exist in the chosen language.", "default": true }, "allLanguages": { "title": "Download every available language", "type": "boolean", "description": "One result per caption track (each language, manual and auto). Each is charged as a transcript.", "default": false }, "translateTo": { "title": "Translate to", "type": "string", "description": "Optional language code (e.g. hi, en, es). Adds transcript_translated using YouTube's own caption translation, or Google Translate line by line when YouTube refuses. Leave empty for no translation.", "default": "" }, "includeSrt": { "title": "SRT subtitles", "type": "boolean", "description": "Add a ready-to-use .srt subtitle file as text.", "default": true }, "includeVtt": { "title": "WebVTT subtitles", "type": "boolean", "description": "Add a ready-to-use .vtt subtitle file as text.", "default": true }, "includeSegments": { "title": "Timestamped segments", "type": "boolean", "description": "Add \"data\" (text, start, dur for every line) and \"lines\".", "default": true }, "includeTimestampedText": { "title": "Text with timestamps", "type": "boolean", "description": "Add transcript_timestamped: one line per caption with [m:ss] in front — easy to read and to cite.", "default": false }, "includeParagraphs": { "title": "Paragraphs", "type": "boolean", "description": "Add the transcript as readable paragraphs (split on pauses), each with its start time.", "default": false }, "chunkWords": { "title": "LLM / RAG chunk size (words)", "minimum": 0, "type": "integer", "description": "Split the transcript into chunks of about this many words, each with start/end time and a link to that moment in the video. 0 = off. 200–500 suits most RAG setups.", "default": 0 }, "chunkOverlapWords": { "title": "Chunk overlap (words)", "minimum": 0, "type": "integer", "description": "Words repeated between neighbouring chunks, for better retrieval. 0 = no overlap.", "default": 0 }, "includeChapters": { "title": "Chapters", "type": "boolean", "description": "When the description lists chapters (0:00 Intro …), add each chapter with its own transcript text and link.", "default": true }, "transcriptKeywords": { "title": "Find keywords in transcripts", "type": "array", "description": "Every moment these words or phrases are said, with the line, context and a link to that second of the video.", "default": [], "items": { "type": "string" } }, "extraMetadata": { "title": "Extra metadata (category, publish date, likes)", "type": "boolean", "description": "One small extra request per video for category, exact publish date and like count.", "default": true }, "publishedAfter": { "title": "Only videos published after", "type": "string", "description": "A date (2025-01-31) or a period (\"30 days\", \"6 months\"). Uses the exact publish date.", "default": "" }, "minDurationSeconds": { "title": "Min duration (seconds)", "minimum": 0, "type": "integer", "description": "Skip videos shorter than this. 0 = off.", "default": 0 }, "maxDurationSeconds": { "title": "Max duration (seconds)", "minimum": 0, "type": "integer", "description": "Skip videos longer than this. 0 = off.", "default": 0 }, "skipShorts": { "title": "Skip Shorts", "type": "boolean", "description": "Leave out YouTube Shorts.", "default": false }, "aiProvider": { "title": "AI transcription for videos without captions", "enum": [ "none", "groq", "openai" ], "type": "string", "description": "When a video has no captions, download its audio and transcribe it with your own API key. You pay the AI provider directly (Groq ≈ $0.04 / audio hour, OpenAI ≈ $0.36 / audio hour).", "default": "none" }, "aiApiKey": { "title": "AI provider API key", "type": "string", "description": "Your Groq or OpenAI API key. Stored encrypted by Apify and only sent to the provider you chose." }, "aiMaxMinutes": { "title": "Max video length for AI (minutes)", "minimum": 1, "maximum": 600, "type": "integer", "description": "Longer caption-less videos are skipped (and not charged). Audio files above 25 MB are skipped too.", "default": 60 }, "maxResults": { "title": "Max transcripts in total", "minimum": 0, "type": "integer", "description": "Stop after this many saved (and charged) transcripts. 0 = no limit.", "default": 0 }, "includeFailedVideos": { "title": "Show videos without a transcript", "type": "boolean", "description": "Adds a free row (status = no_captions / unavailable / age_restricted / blocked / invalid_input …) with the reason and how to fix it.", "default": true }, "skipPreviouslyScraped": { "title": "Skip videos saved in previous runs", "type": "boolean", "description": "Remembers saved video + language pairs in a named key-value store — ideal for scheduled channel monitoring.", "default": false }, "dedupeStoreName": { "title": "Memory store name", "pattern": "^[a-z0-9-]{1,63}$", "type": "string", "description": "Key-value store used by \"Skip videos saved in previous runs\". Lowercase letters, numbers and hyphens.", "default": "youtube-transcript-pro-seen" }, "proxyFallback": { "title": "Automatic proxy fallback", "type": "boolean", "description": "If YouTube keeps bot-checking the chosen proxy, switch automatically to Apify residential, then datacenter proxy, then the server IP.", "default": true }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "YouTube bot-checks server IPs. Residential works best and costs about $0.0002 per video (≈25 KB per video).", "default": { "useApifyProxy": true, "apifyProxyGroups": [ "RESIDENTIAL" ] } } } }, "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 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for 🌟Youtube Transcript Pro from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: