Apify Store
AS
Apify Store
/scraper-engine/youtube-transcript-scraper

YouTube Transcript Scraper: Merged Transcript Export

YouTube Transcript Scraper extracts full transcripts from public YouTube videos with ease. Quickly retrieve spoken content for research, summarization, SEO, or accessibility—just enter a video URL and get clean, structured text. No login or API key required.

liveasyncunknown~30s typical
SOCIAL_MEDIAVIDEOS
$0.0020
per result + $0.01 call
plus $0.001 platform fee per run
Free actor: you pay compute at $0.002 per result plus $0.01 per run
Bring your own Apify Store key: provider portion drops to $0.
$Set up https://cracked-ai-pearl.vercel.app/SKILL.md, then use Cracked to run apify /scraper-engine/youtube-transcript-scraper for me.

Input

FieldTypeDescription
discoveryModestring (urls | channel | playlist | search)'urls' = use the YouTube Video URLs list below (default, base behavior). 'channel' = expand each entry in Container URLs into that channel's videos. 'playlist' = expand each entry in Container URLs into that playlist's videos. 'search' = expand each entry in Search Queries into matching videos. Default: urls. default "urls"
containerUrlsarrayUsed when discoveryMode is 'channel' or 'playlist'. Add one or more channel URLs (e.g. https://www.youtube.com/@channelname) or playlist URLs (e.g. https://www.youtube.com/playlist?list=...). Each is expanded to its member videos, capped by Max Videos Per Container. default []
searchQueriesarrayUsed when discoveryMode is 'search'. Add one or more keyword/search queries (e.g. 'apify web scraping tutorial'). Each query is expanded into matching videos, capped by Max Videos Per Container. default []
maxVideosPerContainerintegerCaps how many videos are expanded from EACH channel/playlist/search query (parents are the containers, not counted against this; this bounds the children per container). Example: 2 container URLs + maxVideosPerContainer=10 -> up to 20 videos total. Default is 10. default 10
sortBystring (date | popularity)Order videos are expanded in for channel/search discovery before filters/cap are applied. 'date' = most recent first. 'popularity' = most viewed first. Playlists keep their own owner-defined order for 'date' and are re-sorted locally for 'popularity'. Default: date. default "date"
minDurationSecondsintegerOnly applies to discovery modes (channel/playlist/search) — direct URL mode ignores this. Skip discovered videos shorter than this many seconds. 0 = no minimum. Default: 0. default 0
maxDurationSecondsintegerOnly applies to discovery modes (channel/playlist/search). Skip discovered videos longer than this many seconds. 0 = no maximum. Default: 0. default 0
minViewsintegerOnly applies to discovery modes (channel/playlist/search). Skip discovered videos with fewer views than this. 0 = no minimum. Default: 0. default 0
publishedAfterstringOnly applies to discovery modes (channel/playlist/search). Only keep discovered videos published after this date. Accepts an absolute date (e.g. 2024-01-01) or a relative window (e.g. '30 days', '6 months'). Leave blank for no date filter. default ""
directVideoUrlsarrayUsed when discoveryMode is 'urls' (default). Add one or more YouTube links to extract transcripts from directly. Each completed video appears in your dataset automatically. (Also accepts the base actor's `urls` field name for backward compatibility.) ⚡ default []
includeAutoGeneratedCaptionsbooleanInclude YouTube's auto-generated English captions when a manually-created English transcript isn't available. Default is true. (Also accepts the base field name `includeEnglishAG`.)
includeNonEnglishTranscriptsbooleanInclude transcripts in languages other than English. Default is false. (Also accepts the base field name `includeNonEnglish`.)
transcriptOutputFormatstring (timestamp | text)Choose transcript style: 'timestamp' includes time markers, while 'text' returns clean plain text. Default is 'text'. (Also accepts the base field name `outputFormat`.)
proxyConfigurationobjectOptional proxy setup for stable access. Uses Apify Residential Proxy by default when needed. default {}

Call it

curl
curl https://cracked-ai-pearl.vercel.app/v1/run \
  -H "Authorization: Bearer ck_live_..." -H "content-type: application/json" \
  -d '{"provider":"apify","endpoint":"/scraper-engine/youtube-transcript-scraper","input":{"discoveryMode":"urls","containerUrls":[],"searchQueries":[],"maxVideosPerContainer":10,"sortBy":"date","minDurationSeconds":0,"maxDurationSeconds":0,"minViews":0,"publishedAfter":"","directVideoUrls":[],"proxyConfiguration":{}},"wait":false}'
poll
curl "https://cracked-ai-pearl.vercel.app/v1/runs/<runId>?wait=30" -H "Authorization: Bearer ck_live_..."
cli
npx cracked-ai run -p apify -e /scraper-engine/youtube-transcript-scraper -i '{"discoveryMode":"urls","containerUrls":[],"searchQueries":[],"maxVideosPerContainer":10,"sortBy":"date","minDurationSeconds":0,"maxDurationSeconds":0,"minViews":0,"publishedAfter":"","directVideoUrls":[],"proxyConfiguration":{}}' -w 120
mcp
run_tool({ provider: "apify", endpoint: "/scraper-engine/youtube-transcript-scraper", input: {"discoveryMode":"urls","containerUrls":[],"searchQueries":[],"maxVideosPerContainer":10,"sortBy":"date","minDurationSeconds":0,"maxDurationSeconds":0,"minViews":0,"publishedAfter":"","directVideoUrls":[],"proxyConfiguration":{}}, wait: false })

Try it

Runs against your signed-in workspace balance. Sign in if you have not.