Web Search
youtube-data
Access YouTube video data — transcripts, metadata, channel
---
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](https://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.
```bash
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):
```bash
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):
```bash
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](https://transcriptapi.com/signup) → Dashboard → API Keys.
## Video Data (transcript + metadata) — 1 credit
```bash
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:**
```json
{
"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
```bash
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):**
```bash
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):**
```bash
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):**
```bash
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):**
```bash
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
```bash
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.
web search
By
Comments
Sign in to leave a comment