Platform Overview & Quickstart
Enterprise-grade YouTube Data & AI Ingestion Cloud with sub-400ms latency, word-level precision, and zero YouTube Data API quota consumption.
Welcome to the YouTube Transcript & Data API — the fastest way to extract transcripts, metadata, and engagement data from YouTube. Purpose-built for AI agents, LLM pipelines, video intelligence, and content indexing.
Base URL
All API endpoints are versioned under the /v1 prefix.
Production: https://api.ytapi.dev/v1
Direct Node: https://cx33.ytapi.dev/v1
Explore the API
Transcripts
Multi-format extraction with word-level timestamps and AI-native Markdown.
Video Metadata
Fast video metadata, view counts, and channel attribution.
Playlists
Complete playlist details, video listings, and cursor pagination.
Channels
Channel profile metadata, subscriber counts, live streams, and playlists.
Search
Zero-quota YouTube search with live autocomplete suggestions.
Batch Processing
Up to 10 parallel extraction tasks in a single request.
Pricing
Credit packs. Credits never expire.
Credits & Billing
Transparent per-request credit metering and error reference.
30-Second Quickstart
Get Your API Key
Generate an API key with transcripts:read permissions from the Developer Dashboard.
Make Your First Request
curl -X POST https://api.ytapi.dev/v1/transcripts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_id": "dQw4w9WgXcQ",
"format": "markdown"
}'import requests
response = requests.post(
"https://api.ytapi.dev/v1/transcripts",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"video_id": "dQw4w9WgXcQ",
"format": "markdown",
"word_level": False
}
)
print(response.json())const res = await fetch("https://api.ytapi.dev/v1/transcripts", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
video_id: "dQw4w9WgXcQ",
format: "markdown"
})
});
const data = await res.json();
console.log(data);package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
payload, _ := json.Marshal(map[string]any{
"video_id": "dQw4w9WgXcQ",
"format": "markdown",
})
req, _ := http.NewRequest("POST", "https://api.ytapi.dev/v1/transcripts", bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}Parse the Response
Every response includes telemetry headers for observability:
| Header | Description |
|---|---|
X-Cache | HIT or MISS — whether served from cache |
X-Cache-Tier | L1_MEMORY (sub-10ms) or L2_PERSISTENT |
X-Track-Type | ASR (auto-generated) or MANUAL (creator-uploaded) |
X-Language-Code | Negotiated ISO language code (e.g. en, zh-Hans) |
X-Duration-Seconds | Extraction latency in seconds |
X-Credits-To-Deduct | Credits consumed for this request |
Core Capabilities
| Capability | Highlight |
|---|---|
| Wire-Speed Transcripts | Sub-400ms median extraction with automatic language negotiation and multi-tier edge caching |
| AI-Native Markdown | format=markdown produces structured paragraphs with timestamp references optimized for LLM context windows |
| Word-Level Precision | word_level=true provides millisecond-accurate word offsets for speech sync and video editing |
| Playlists & Series | Complete playlist details, video listings, and opaque cursor continuation pagination |
| Channels & Streams | Verified channel profiles, subscriber counts, live/past streams, and created playlists |
| Zero-Quota Search | Full-text search across YouTube without consuming Google Cloud API quotas |
| Concurrent Batch | Up to 10 parallel extraction tasks in a single HTTP request |