Sign InSign Up
Developer API

Programmatic Access to YouTube Transcripts

Integrate YouTube transcript extraction into your applications with our simple REST API. Extract transcripts from videos, channels, and playlists with just a few lines of code.

Get Started FreeView Documentation

10 free credits • No credit card required • API access included in all plans

Quick Start Example

bash
# Get a single video transcript
curl -X POST "https://api.youtubetranscripts.fbetteo.com/api/v1/transcripts/single" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://youtube.com/watch?v=dQw4w9WgXcQ",
    "include_timestamps": false
  }'

# Download entire channel (async)
curl -X POST "https://api.youtubetranscripts.fbetteo.com/api/v1/transcripts/channel" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "@mkbhd",
    "max_videos": 10,
    "options": {
      "include_timestamps": false,
      "include_video_title": true
    }
  }'

Why Choose Our API?

Built for developers who need reliable, fast, and scalable transcript extraction

Lightning Fast

Parallel processing and background jobs deliver transcripts from entire channels in under a minute.

Secure & Reliable

Enterprise-grade security with API key authentication and rate limiting. 99.9% uptime SLA.

Simple Integration

RESTful API with comprehensive documentation. Get started in minutes with examples in Python, JavaScript, and more.

Flexible Scaling

Pay only for what you use with our credit-based system. Scale from 100 to 100,000 transcripts seamlessly.

Full Documentation

Detailed API reference, code examples, and error handling guides. Everything you need to integrate successfully.

Easy Management

Create, revoke, and monitor API keys from your dashboard. Track usage and manage multiple keys for different projects.

Built for Your Use Case

From AI training to content analysis, our API powers diverse applications

🤖 AI & Machine Learning

Train language models, build chatbots, or create AI assistants with large-scale YouTube transcript datasets.

  • Bulk transcript extraction for training data
  • Multiple format support (JSON, TXT)
  • Background processing for large datasets

📊 Content Research

Analyze content trends, perform sentiment analysis, or extract insights from video content at scale.

  • Extract from entire channels or playlists
  • Structured data for analysis
  • Fast parallel processing

🔧 Automation Tools

Build SaaS products, browser extensions, or workflow automation tools with transcript extraction capabilities.

  • RESTful API for easy integration
  • Webhook support for async jobs
  • Rate limiting and quota management

📱 Mobile & Desktop Apps

Integrate transcript features into your mobile or desktop applications with our cross-platform API.

  • Works from any platform
  • Simple authentication
  • Comprehensive error handling

Simple, Powerful API

Get started in minutes with our intuitive API design

Authentication

Include your API key in the X-API-Key header. Get your API key from the dashboard.

Authentication Header

text
X-API-Key: YOUR_API_KEY

Base URL

https://api.youtubetranscripts.fbetteo.com/api/v1

Key Endpoints

POST

/transcripts/single

Get transcript for a single video (synchronous)

POST

/transcripts/channel

Download channel transcripts (async, returns job_id)

GET

/jobs/:job_id

Check job status and progress

GET

/jobs/:job_id/download

Download completed job results

Python Example

import requests
import time

API_KEY = "your_api_key"
BASE_URL = "https://api.youtubetranscripts.fbetteo.com/api/v1"

headers = {"X-API-Key": API_KEY}

# Get single video transcript (synchronous)
response = requests.post(
    f"{BASE_URL}/transcripts/single",
    headers=headers,
    json={
        "video_url": "https://youtube.com/watch?v=dQw4w9WgXcQ",
        "include_timestamps": False
    }
)

if response.status_code == 200:
    transcript = response.text
    print(transcript)

# Download channel (asynchronous)
response = requests.post(
    f"{BASE_URL}/transcripts/channel",
    headers=headers,
    json={
        "channel": "@mkbhd",
        "max_videos": 10,
        "options": {
            "include_timestamps": False,
            "include_video_title": True
        }
    }
)

if response.status_code == 200:
    data = response.json()
    job_id = data["job_id"]
    
    # Check job status
    while True:
        status = requests.get(
            f"{BASE_URL}/jobs/{job_id}",
            headers=headers
        ).json()
        
        if status["status"] == "completed":
            # Download results
            download_url = f"{BASE_URL}/jobs/{job_id}/download"
            print(f"Download: {download_url}")
            break
        
        time.sleep(5)  # Poll every 5 seconds

JavaScript Example

const API_KEY = "your_api_key";
const BASE_URL = "https://api.youtubetranscripts.fbetteo.com/api/v1";

const headers = { "X-API-Key": API_KEY };

// Get single video transcript (synchronous)
const response = await fetch(
  `${BASE_URL}/transcripts/single`,
  {
    method: "POST",
    headers: { ...headers, "Content-Type": "application/json" },
    body: JSON.stringify({
      video_url: "https://youtube.com/watch?v=dQw4w9WgXcQ",
      include_timestamps: false
    })
  }
);

if (response.ok) {
  const transcript = await response.text();
  console.log(transcript);
}

// Download channel (asynchronous)
const channelResponse = await fetch(
  `${BASE_URL}/transcripts/channel`,
  {
    method: "POST",
    headers: { ...headers, "Content-Type": "application/json" },
    body: JSON.stringify({
      channel: "@mkbhd",
      max_videos: 10,
      options: {
        include_timestamps: false,
        include_video_title: true
      }
    })
  }
);

if (channelResponse.ok) {
  const data = await channelResponse.json();
  const jobId = data.job_id;
  
  // Poll for completion
  const checkStatus = async () => {
    const status = await fetch(
      `${BASE_URL}/jobs/${jobId}`,
      { headers }
    ).then(r => r.json());
    
    if (status.status === "completed") {
      console.log(`Download: ${BASE_URL}/jobs/${jobId}/download`);
    } else {
      setTimeout(checkStatus, 5000);
    }
  };
  
  checkStatus();
}

Credit-Based Pricing

API access is included in all plans. Pay only for the transcripts you extract.

1 Credit

= 1 Video Transcript

10 Free

Credits to Get Started

All Plans

Include Full API Access

View Pricing PlansFull Documentation

Ready to Get Started?

Sign up now and get 10 free credits to test the API. No credit card required.

Create Free AccountContact Sales

Product

FeaturesPricingDashboard

Connect

Questions? Email [email protected]

Follow me on @franbetteo

Not affiliated with YouTube or Google.
© 2025 downloadyoutubetranscripts.com