# Youtube API

Use when YouTube data is needed without Google API quotas or OAuth setup: transcripts...

- Repository: https://github.com/ZeroPointRepo/youtube-skills (1151 stars)
- Category: Writing
- License: MIT
- Last updated: 2026-10-27
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add ZeroPointRepo/youtube-skills --skill youtube-api -g -a claude-code -y`
Codex: `npx skills add ZeroPointRepo/youtube-skills --skill youtube-api -g -a codex -y`
Cursor: `npx skills add ZeroPointRepo/youtube-skills --skill youtube-api -g -a cursor -y`
Gemini CLI: `npx skills add ZeroPointRepo/youtube-skills --skill youtube-api -g -a gemini-cli -y`

## 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.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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   |

The rest: https://github.com/ZeroPointRepo/youtube-skills/blob/HEAD/clawhub/youtube-api/SKILL.md
