HomeBlog

YouTube2Text API Usage Guide

YouTube2Text is a utility for extracting bare text transcriptions from YouTube videos (without subtitle timecodes and any other metadata) for analytics, insights, summaries, content generation, and other text processing applications.

Getting Started

To get started quickly, you can obtain a demo API key by visiting https://api.youtube2text.org. However, demo keys rotate frequently and have limited usage quotas. For production use or regular usage, consider subscribing to one of the available plans for a stable, dedicated API key with higher quotas.

Direct API Usage

The YouTube2Text API is available at https://api.youtube2text.org. The primary endpoint for transcription is /transcribe.

Basic CURL Request

Basic API Call
curl -X POST https://api.youtube2text.org/transcribe \
  -H "Content-Type: application/json" \
  -H "x-api-key: YT2TEXT_API_KEY" \
  -d '{
    "url": "https://www.youtube.com/watch?v=VIDEO_ID"
  }'

Input Parameters

url (required): The full YouTube video URL; maxChars (optional): Maximum characters to return (defaults to 150,000)

Response Structure

Success Response (200)

Success Response
{
  "result": {
    "videoId": "VIDEO_ID",
    "title": "Video Title",
    "pubDate": "2025-06-30T08:45:04-07:00",
    "content": "The full video transcription text without timestamps...",
    "contentSize": 12345,
    "truncated": false
  }
}

Error Response (400/401/404/429/500)

Error Response
{
  "error": {
    "code": "ERROR_CODE",
    "message": "Error description",
    "status": 400,
    "retryAfterSeconds": 3600,
    "details": "Additional error details"
  }
}

Response Codes

Error Codes

MCP Integration

YouTube2Text supports Model Context Protocol (MCP) for seamless integration with various AI models.

Anthropic Claude

Claude MCP Integration
import anthropic
from anthropic.types.beta import BetaRequestMCPServerURLDefinitionParam, BetaMessageParam

default_key = "ANTHROPIC_API_KEY"
client = anthropic.Anthropic(api_key=default_key)
server = BetaRequestMCPServerURLDefinitionParam(
    name="youtube2text",
    type="url",
    url="https://api.youtube2text.org/mcp",
    authorization_token="YT2TEXT_API_KEY"
)

prompt_message = BetaMessageParam(role="user", content="Please use the tools from the remote MCP server to help me. Provide the transcription of https://www.youtube.com/watch?v=DCv5p_eJTlU")

response = client.beta.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=10000,
    messages=[prompt_message],
    # Direct MCP server connection - no manual tool definition needed!
    mcp_servers=[server],
    # Required beta header for MCP connector
    extra_headers={
        "anthropic-beta": "mcp-client-2025-04-04",
    }
)

print(response.content)

OpenAI

OpenAI MCP Integration
from openai import OpenAI
from openai.types.responses.tool_param import Mcp
import os

os.environ["OPENAI_API_KEY"] = "OPENAI_API_KEY"

client = OpenAI()

youtube_transcribe_mcp = Mcp(
    type="mcp",
    server_label="youtube2text",
    server_url="https://api.youtube2text.org/mcp",
    require_approval="never",
    headers={"Authorization": "Bearer YT2TEXT_API_KEY"}
)

resp = client.responses.create(
    model="gpt-4.1",
    tools=[youtube_transcribe_mcp],
    input="Please use the tools from the remote MCP server to help me. Provide the transcription of https://www.youtube.com/watch?v=DCv5p_eJTlU",
)

print(resp.output_text)

Google Gemini

Gemini Integration
import google.generativeai as genai
import requests

genai.configure(api_key="GEMINI_API_KEY")

YOUTUBE_TRANSCRIPT_API_URL = "https://api.youtube2text.org/mcp"
YOUTUBE_TRANSCRIPT_API_TOKEN = "YT2TEXT_API_KEY"

# Define the External Tool (Function)
def get_youtube_transcription(video_url: str):
    """
    Retrieves the transcription of a YouTube video from a given URL.

    Args:
        video_url: The full URL of the YouTube video.
    """
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {YOUTUBE_TRANSCRIPT_API_TOKEN}"
    }
    payload = {"url": video_url}
    try:
        response = requests.post(YOUTUBE_TRANSCRIPT_API_URL, headers=headers, json=payload)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        return {"error": str(e)}

# Set up the Gemini Model with the Tool
model = genai.GenerativeModel(
    model_name='gemini-2.5-flash',
    tools=[get_youtube_transcription]
)

# Start a Chat Session and Send the Prompt
chat = model.start_chat(enable_automatic_function_calling=True)
prompt = "Please provide the transcription of https://www.youtube.com/watch?v=DCv5p_eJTlU"
response = chat.send_message(prompt)

print(response.text)

Automation Platform Integration

Zapier Integration

YouTube2Text can be integrated with Zapier through MCP connections. Zapier's AI Actions feature supports MCP servers, allowing you to create automated workflows that trigger video transcriptions. Search for "Zapier MCP integration" or "Zapier AI Actions MCP" in the Zapier documentation to learn how to connect external MCP servers like YouTube2Text to your workflows.

n8n Integration

n8n supports MCP integration through custom nodes and HTTP request nodes. You can connect YouTube2Text's MCP endpoint to n8n workflows for automated video processing pipelines. Search for "n8n MCP integration" or "n8n HTTP Request node MCP" in the n8n community documentation to find detailed setup instructions for connecting MCP servers to your automation workflows.

Additional Examples

For more implementation examples, advanced usage patterns, and integration guides, visit the project repository for comprehensive documentation and code samples.