YouTube Search Search YouTube and fetch transcripts via TranscriptAPI.com . Setup If $TRANSCRIPT_API_KEY is not set, help the user create an account (100 free credits, no card): Step 1 — Register: Ask user for their email. node ./scripts/tapi-auth.js register --email USER_EMAIL → OTP sent to email. Ask user: "Check your email for a 6-digit verification code." Step 2 — Verify: Once user provides the OTP: node ./scripts/tapi-auth.js verify --token TOKEN_FROM_STEP_1 --otp CODE API key saved to your shell profile and agent config. Ready to use. Manual option: transcriptapi.com/signup → Dashboard → API Keys. API Reference Full OpenAPI spec: transcriptapi.com/openapi.json — consult this for the latest parameters and schemas. GET /api/v2/youtube/search — 1 credit Search YouTube globally for videos or channels. curl -s "https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY " Param Required Default Validation q yes — 1-200 chars (trimmed) type no video video or channel limit no 20 1-50 Video search response: { "results" : [ { "type" : "video" , "videoId" : "dQw4w9WgXcQ" , "title" : "Rick Astley - Never Gonna Give You Up" , "channelId" : "UCuAXFkgsw1L7xaCfnd5JJOw" , "channelTitle" : "Rick Astley" , "channelHandle" : "@RickAstley" , "channelVerified" : true , "lengthText" : "3:33" , "viewCountText" : "1.5B views" , "publishedTimeText" : "14 years ago" , "hasCaptions" : true , "thumbnails" : [ { "url" : "..." , "width" : 120 , "height" : 90 } ] } ] , "result_count" : 20 } Channel search response ( type=channel ): { "results" : [ { "type" : "channel" , "channelId" : "UCuAXFkgsw1L7xaCfnd5JJOw" , "title" : "Rick Astley" , "handle" : "@RickAstley" , "url" : "https://www.youtube.com/@RickAstley" , "description" : "Official channel..." , "subscriberCount" : "4.2M subscribers" , "verified" : true , "rssUrl" : "https://www.youtube.com/feeds/videos.xml?channel_id=UC..." , "thumbnails" : [ ... ] } ] , "result_count" : 5 } GET /api/v2/youtube/channel/search — 1 credit Search videos within a specific channel. Accepts channel — an @handle , channel URL, or UC... ID. curl -s "https://transcriptapi.com/api/v2/youtube/channel/search\ ?channel=@TED&q=climate+change&limit=30" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY " Param Required Validation channel yes @handle , channel URL, or UC... ID q yes 1-200 chars limit no 1-50 (default 30) Returns up to ~30 results (YouTube limit). Same video response shape as global search. GET /api/v2/youtube/channel/resolve — FREE Convert @handle to channel ID: curl -s "https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY " Workflow: Search → Transcript
1. Search for videos
curl -s "https://transcriptapi.com/api/v2/youtube/search\ ?q=python+web+scraping&type=video&limit=5" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY "
2. Get transcript from result
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\ ?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY " Errors Code Action 402 No credits — transcriptapi.com/billing 404 Not found 408 Timeout — retry once 422 Invalid channel identifier Free tier: 100 credits, 300 req/min.