YTAPI.devDocs

Platform Overview & Quickstart

Enterprise-grade YouTube Data & AI Ingestion Cloud with sub-400ms latency, word-level precision, and zero YouTube Data API quota consumption.

Last updated Sep 13, 2026
||MarkdownView as Markdown|Agent setup

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


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:

HeaderDescription
X-CacheHIT or MISS — whether served from cache
X-Cache-TierL1_MEMORY (sub-10ms) or L2_PERSISTENT
X-Track-TypeASR (auto-generated) or MANUAL (creator-uploaded)
X-Language-CodeNegotiated ISO language code (e.g. en, zh-Hans)
X-Duration-SecondsExtraction latency in seconds
X-Credits-To-DeductCredits consumed for this request

Core Capabilities

CapabilityHighlight
Wire-Speed TranscriptsSub-400ms median extraction with automatic language negotiation and multi-tier edge caching
AI-Native Markdownformat=markdown produces structured paragraphs with timestamp references optimized for LLM context windows
Word-Level Precisionword_level=true provides millisecond-accurate word offsets for speech sync and video editing
Playlists & SeriesComplete playlist details, video listings, and opaque cursor continuation pagination
Channels & StreamsVerified channel profiles, subscriber counts, live/past streams, and created playlists
Zero-Quota SearchFull-text search across YouTube without consuming Google Cloud API quotas
Concurrent BatchUp to 10 parallel extraction tasks in a single HTTP request

On this page