| name | youtube-data |
| description | Access YouTube video data — transcripts, metadata, channel info, search, and playlists. A lightweight alternative to Google's YouTube Data API with no quota limits. Use when the user needs structured data from YouTube videos, channels, or playlists without dealing with Google API setup, OAuth, or daily quotas. |
| homepage | https://transcriptapi.com |
| metadata | {"moltbot":{"emoji":"📊","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY"}} |
YouTube Data
YouTube data access via TranscriptAPI.com — lightweight alternative to Google's YouTube Data API.
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, generate a secure password.
node ./scripts/tapi-auth.js register --email USER_EMAIL --password SECURE_PASS --json
→ OTP sent to email. Ask user: "Check your email for a 6-digit verification code."
⚠️ SAVE THE PASSWORD — you need it again in Step 2!
Step 2 — Verify: Once user provides the OTP (use SAME password from Step 1):
node ./scripts/tapi-auth.js verify --email USER_EMAIL --password SECURE_PASS --otp CODE --json
→ Returns api_key (starts with sk_).
Step 3 — Save: Store the key (auto-configures agent + shell):
node ./scripts/tapi-auth.js save-key --key API_KEY --json
→ Ready to use. Agent runtime picks up the key automatically.
Manual option: transcriptapi.com/signup → Dashboard → API Keys.
Video Data (transcript + metadata) — 1 credit
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=VIDEO_URL&format=json&include_timestamp=true&send_metadata=true" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Response:
{
"video_id": "dQw4w9WgXcQ",
"language": "en",
"transcript": [
{ "text": "We're no strangers to love", "start": 18.0, "duration": 3.5 }
],
"metadata": {
"title": "Rick Astley - Never Gonna Give You Up",
"author_name": "Rick Astley",
"author_url": "https://www.youtube.com/@RickAstley",
"thumbnail_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg"
}
}
Search Data — 1 credit
curl -s "https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Video result fields: videoId, title, channelId, channelTitle, channelHandle, channelVerified, lengthText, viewCountText, publishedTimeText, hasCaptions, thumbnails
Channel result fields (type=channel): channelId, title, handle, url, description, subscriberCount, verified, rssUrl, thumbnails
Channel Data
Resolve handle to ID (free):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@mkbhd" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Returns: {"channel_id": "UCBcRF18a7Qf58cCRy5xuWwQ", "resolved_from": "@mkbhd"}
Latest 15 videos with exact stats (free):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/latest?channel_id=UC_ID" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Returns: channel info, results array with videoId, title, published (ISO), viewCount (exact number), description, thumbnail
All channel videos (paginated, 1 credit/page):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/videos?channel_id=UC_ID" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Returns 100 videos per page + continuation_token for pagination.
Search within channel (1 credit):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/search\
?channel_id=UC_ID&q=QUERY&limit=30" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Playlist Data — 1 credit/page
curl -s "https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist_id=PL_ID" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Returns: results (videos), playlist_info (title, numVideos, ownerName, viewCount), continuation_token, has_more
Credit Costs
| Endpoint | Cost | Data returned |
|---|
| transcript | 1 | Full transcript + metadata |
| search | 1 | Video/channel details |
| channel/resolve | free | Channel ID mapping |
| channel/latest | free | 15 videos + exact stats |
| channel/videos | 1/page | 100 videos per page |
| channel/search | 1 | Videos matching query |
| playlist/videos | 1/page | 100 videos per page |
Errors
| Code | Action |
|---|
| 402 | No credits — transcriptapi.com/billing |
| 404 | Not found |
| 408 | Timeout — retry once |
| 422 | Invalid param format |
Free tier: 100 credits, 300 req/min.