--- id: ZeroPointRepo/youtube-skills/youtube-data version: "ee7f37bf" license: MIT install: manual updated: 2026-05-20 --- # youtube-data — YouTube Data retrieves transcripts, video metadata, search results, channel upload history, and playlist contents through TranscriptAPI, bypassing Google API rate limits and authentication overhead. Access video details, channel information, and structured YouTube content with simple API calls and a free tier of 100 credits. Publisher: ZeroPointRepo · Stars: 388 · Updated: 2026-05-20 Install (manual): `git clone https://github.com/ZeroPointRepo/youtube-skills` ## SKILL.md # 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, read [references/auth-setup.md](references/auth-setup.md) and follow the instructions there to get and store the key. ## Required Headers Every request needs two headers: - **Authorization:** `Bearer $TRANSCRIPT_API_KEY` - **User-Agent:** your agent's name and version if known (e.g. `HermesAgent/0.11.0`, `ClaudeCode/1.0`). Version is optional — agent name alone is fine. Do not omit this header or send a bare default — Cloudflare will return a 403 (error code 1010) and block the request. ## API Reference Full OpenAPI spec: [transcriptapi.com/openapi.json](https://transcriptapi.com/openapi.json) — consult this for the latest parameters and schemas. ## 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" \ -H "User-Agent: YourAgent/1.0" ``` **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" \ -H "User-Agent: YourAgent/1.0" ``` **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 Channel endpoints accept `channel` — an `@handle`, channel URL, or `UC...` ID. No need to resolve first. **Resolve handle to ID (free):** ```bash curl -s "https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY" \ -H "User-Agent: YourAgent/1.0" ``` Returns: `{"channel_id": "UCsT0YIqwnpJCM-mx7-gSA4Q", "resolved_from": "@TED"}` **Latest 15 videos with exact stats (free):** ```bash curl -s "https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY" \ -H "User-Agent: YourAgent/1.0" ``` 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=@NASA" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY" \ -H "User-Agent: YourAgent/1.0" ``` 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=@TED&q=QUERY&limit=30" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY" \ -H "User-Agent: YourAgent/1.0" ``` ## Playlist Data — 1 credit/page Accepts `playlist` — a YouTube playlist URL or playlist ID. ```bash curl -s "https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_ID" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY" \ -H "User-Agent: YourAgent/1.0" ``` 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 | Meaning | Action | | -------- | ---------------- | ---------------------------------------------- | | 401 | Bad API key | Check key | | 402 | No credits | transcriptapi.com/billing | | 403/1010 | Cloudflare block | Add or fix User-Agent header | | 404 | Not found | Resource doesn't exist | | 408 | Timeout | Retry once | | 422 | Validation error | Check param format | Free tier: 100 credits, 300 req/min. [View on SkillFed](https://skillfed.io/ZeroPointRepo/youtube-skills/youtube-data) · [View on GitHub](https://github.com/ZeroPointRepo/youtube-skills)