Apify Store
AS
Apify Store
/codepoetry/youtube-transcript-ai-scraper

YouTube Transcript Scraper Pro (Captions + AI Fallback)

Extract YouTube transcripts at scale without burning through your budget. It starts with free captions whenever they're available, then switches to AI only for videos that don't have them. You stay in control of costs, and the output — JSON, SRT, VTT, plain text, or LLM-ready format

liveasyncunknown~30s typical
AISOCIAL_MEDIAVIDEOS
$0.0020
per result + $0.01 call
plus $0.001 platform fee per run
Usage-based actor: event charges passed through at cost plus 25%
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 /codepoetry/youtube-transcript-ai-scraper for me.

Input

FieldTypeDescription
startUrls*arrayPaste one or more YouTube URLs — single videos, playlists, or channels. Supports watch URLs, short youtu.be links, and channel URLs.
maxResultsintegerMaximum number of videos to fetch from a playlist or channel. Single video URLs ignore this. Channels return newest videos first. default 10
languagesarrayLanguages to try, in order of preference. The first match on each video is used. Note: setting Caption source to Manual Only means auto-generated captions are ignored even if they exist in your requested language. default ["en"]
subTypestring (manual | auto | both)Manual = human-written captions only. Auto = YouTube's machine-generated captions only. Both = tries manual first, falls back to auto. Most videos only have auto-generated captions. default "both"
outputFormatsarrayPlain Text is the simplest — one block of words. JSON adds timestamps. LLM-Ready strips [Music] and filler tokens for AI pipelines. SRT and VTT are subtitle formats for video editors. default ["json","text","llm"]
wordLevelbooleanAdd per-word start and end times inside each JSON segment. default false
enableAiFallbackbooleanOff by default. Turn on to transcribe videos that have no native YouTube captions. Memory increases to 4 GB automatically and per-minute AI charges apply. default false
forceWhisperLanguagestring ( | af | am | ar | as | az)Force the AI model to a specific language and skip the 30-second detection window at the start of each video. Saves roughly 20% of AI transcription time per video. Leave empty to auto-detect.
maxAiMinutesintegerHard cap on total AI transcription minutes for this run. When reached, remaining caption-free videos are skipped and the run continues. Set to 0 for unlimited. default 30
skipAiFallbackIfLongerThanintegerSkip AI transcription for any video longer than this many minutes. Useful when a channel mixes short clips with long recordings. Set to 0 to disable. default 0

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":"/codepoetry/youtube-transcript-ai-scraper","input":{"startUrls":[],"maxResults":10,"languages":["en"],"subType":"both","outputFormats":["json","text","llm"],"wordLevel":false,"enableAiFallback":false,"maxAiMinutes":30,"skipAiFallbackIfLongerThan":0},"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 /codepoetry/youtube-transcript-ai-scraper -i '{"startUrls":[],"maxResults":10,"languages":["en"],"subType":"both","outputFormats":["json","text","llm"],"wordLevel":false,"enableAiFallback":false,"maxAiMinutes":30,"skipAiFallbackIfLongerThan":0}' -w 120
mcp
run_tool({ provider: "apify", endpoint: "/codepoetry/youtube-transcript-ai-scraper", input: {"startUrls":[],"maxResults":10,"languages":["en"],"subType":"both","outputFormats":["json","text","llm"],"wordLevel":false,"enableAiFallback":false,"maxAiMinutes":30,"skipAiFallbackIfLongerThan":0}, wait: false })

Try it

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