Skill detail
youtube-api
Provides YouTube data access via TranscriptAPI without Google API quotas, covering transcripts, video metadata, channel info, search, and playlists.
Needs (stated): Network access
Inspect before use
Read the source instructions and check the requirements before you install this skill.
SKILL.md
The saved excerpt is a snapshot from when this skill was listed. The external source remains the complete and most current version.
---
name: youtube-api
description: "Use when YouTube data is needed without Google API quotas or OAuth setup: transcripts, video metadata, channel info, search results, playlists. Triggers on pasted YouTube links, creator names, @handles, topic research, video summaries, channel browsing, or any request where YouTube content would help — even if not mentioned explicitly. Not for uploads, account management, or written-source-only research."
version: "1.6.2"
user-invocable: true
compatibility: Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed.
required_environment_variables:
- name: TRANSCRIPT_API_KEY
prompt: Your TranscriptAPI key (starts with sk_)
help: Free account at https://transcriptapi.com — 100 credits, no card required. Or let the agent create one for you.
required_for: all API requests
metadata: {"openclaw":{"emoji":"▶️","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","transcripts","video","search","channels","playlists","api","no-quota"],"category":"media"}}
---
# YouTube API
YouTube data access via [TranscriptAPI.com](https://transcriptapi.com) — no Google API quota needed.
## 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.
## Endpoint Reference
All endpoints: `https://transcriptapi.com/api/v2/youtube/...`
Channel endpoints accept `channel` — an `@handle`, channel URL, or `UC...` ID. Playlist endpoints accept `playlist` — a playlist URL or ID.
| Endpoint | Method | Cost |
| -------------------------------------- | ------ | -------- |
| `/info?video_url=ID` | GET | **free** |
| `/video/metadata?video_url=ID` | GET | 1 |
| `/transcript?video_url=ID` | GET | 1 |
| `/search?q=QUERY&type=video` | GET | 1 |
| `/channel/resolve?input=@handle` | GET | **free** |
| `/channel/info?channel=@handle` | GET | 1 |
| `/channel/latest?channel=@handle` | GET | **free** |
| `/channel/videos?channel=@handle` | GET | 1/page |
| `/channel/search?channel=@handle&q=Q` | GET | 1 |
| `/channel/playlists?channel=@handle` | GET | 1/page |
| `/channel/posts?channel=@handle` | GET | 1/page |
| `/channel/sections?channel=@handle` | GET | 1 |
| `/playlist/videos?playlist=PL_ID` | GET | 1/page |
`search` also takes `type=playlist` or `type=movie`, plus first-page-only filters `sort` (`relevance`/`views`), `upload_date`, `duration`, and `features`. `channel/videos` takes `tab=videos` (default), `shorts`, or `streams`, plus an optional `sort` (`latest`/`popular`/`oldest`).
> **Naming:** `/video/metadata` was previously `/video/info`. The old path still works but is deprecated — use `/video/metadata`.
## Quick Examples
**Search videos:**
```http
GET https://transcriptapi.com/api/v2/youtube/search?q=python+tutorial&type=video&limit=10
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
```
**Get transcript:**
```http
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=dQw4w9WgXcQ&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
```
Read the full source on GitHub (opens external page)