YouTube Toolkit¶
The YouTube Toolkit extracts transcripts, video metadata, channel analytics, playlist data, and search results from YouTube — without requiring a Google API key or OAuth setup.
These pages are workflow guides. For the exact live request and response contract, use the API reference at https://youtube.toolkitapi.io/documentation and the OpenAPI spec at https://youtube.toolkitapi.io/openapi.json.
Base URL¶
https://youtube.toolkitapi.io/v1/youtube/
Browse by topic¶
Quick Start¶
Get a video transcript in one call:
curl "https://youtube.toolkitapi.io/v1/youtube/transcript?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ" \
-H "X-API-Key: YOUR_KEY"
import requests
r = requests.get(
"https://youtube.toolkitapi.io/v1/youtube/transcript",
headers={"X-API-Key": "YOUR_KEY"},
params={"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"},
)
transcript = r.json()
print(transcript.get("transcript", "")[:200])
const params = new URLSearchParams({ url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ" });
const r = await fetch(`https://youtube.toolkitapi.io/v1/youtube/transcript?${params}`, {
headers: { "X-API-Key": "YOUR_KEY" },
});
const data = await r.json();
console.log(data.transcript.substring(0, 200));
Browse all YouTube endpoints →
Core endpoint groups¶
Transcripts¶
| Endpoint | Description |
|---|---|
GET /v1/youtube/transcript |
Get captions and subtitles for a YouTube video |
POST /v1/youtube/transcript/batch |
Submit up to 20 URLs for async batch transcript extraction |
GET /v1/youtube/transcript/batch/{job_id} |
Poll the status and results of a batch job |
Example — fetch a transcript:
curl "https://youtube.toolkitapi.io/v1/youtube/transcript?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ" \
-H "X-API-Key: YOUR_KEY"
Video & Channel¶
| Endpoint | Description |
|---|---|
GET /v1/youtube/video |
Title, description, duration, stats, and thumbnail for a video |
GET /v1/youtube/channel |
Subscriber count, video count, description, and metadata for a channel |
GET /v1/youtube/channel/videos |
Paginated list of video IDs published by a channel |
Playlists & Search¶
| Endpoint | Description |
|---|---|
GET /v1/youtube/playlist |
Title, description, and video count for a playlist |
GET /v1/youtube/playlist/videos |
Ordered list of video IDs in a playlist |
GET /v1/youtube/search |
Search YouTube for videos, channels, and playlists |
Common patterns¶
- All endpoints accept a YouTube URL or ID — you do not need to pre-extract the video ID or channel handle.
- The
transcriptendpoint auto-detects available languages and falls back gracefully when a preferredlangis not found. - The batch transcript flow is async: submit with
POST, then pollGET .../batch/{job_id}untilstatusiscompleted. channelaccepts a channel ID (UCxxxxxx), a@handle, or a full channel URL interchangeably.
Common errors¶
| Scenario | Status | Detail |
|---|---|---|
| Missing or invalid API key | 401 | Unauthorized |
| Invalid or unparseable URL/ID | 400 | invalid-request error code |
| Transcript not available | 404 | transcript-not-found error code |
| Missing required parameter | 422 | Validation Error |
Keeping this section in sync¶
- the live OpenAPI spec is the source of truth for paths, methods, and schemas
- the detailed docs explain workflows and use cases rather than duplicating every field
- if you notice a mismatch, trust the API reference first and update this page second