Back to Blog
Tutorial

TikTok Transcript API: Extract Captions from Any Video

January 20, 2026
5 min read
S
By SociaVault Team
TikTokTranscriptAPICaptionsSubtitlesVideo

TikTok Transcript API: Extract Captions from Any Video

Need the text from a TikTok video? Whether you're repurposing content, doing research, or building an app—getting TikTok transcripts manually is tedious.

A TikTok transcript API extracts the spoken words from any video automatically. Here's how it works and why it's useful.

What is a TikTok Transcript?

A TikTok transcript is the text version of everything said in a video. It includes:

  • Spoken words - What the creator says
  • Auto-captions - TikTok's automatic subtitles
  • Timestamps - When each word/phrase appears
  • Language detection - What language is spoken

Think of it as turning a video into a document you can read, search, and analyze.

Why Extract TikTok Transcripts?

Content Repurposing

Turn viral TikToks into blog posts, tweets, or LinkedIn content. Extract the transcript, clean it up, and you have a content outline.

Research & Analysis

Analyze what top creators are saying. Find common phrases, topics, and hooks that perform well.

Accessibility

Create captions for videos that don't have them. Make content accessible to deaf/hard-of-hearing viewers.

SEO & Discovery

Video text isn't searchable—but transcripts are. Use transcripts to understand what content ranks for certain topics.

AI & Automation

Feed transcripts into AI tools for summarization, translation, or content generation.

How to Get TikTok Transcripts

Option 1: Manual (Slow)

  1. Open the TikTok video
  2. Turn on captions (if available)
  3. Pause and type out each line
  4. Repeat for every video

Time required: 5-10 minutes per video

Option 2: TikTok Transcript API (Fast)

Make one API call, get the full transcript:

const response = await fetch(
  'https://api.sociavault.com/v1/scrape/tiktok/transcript?url=https://tiktok.com/@user/video/123',
  { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);

const data = await response.json();
console.log(data.data.transcript);

Time required: 2-3 seconds

What You Get Back

{
  "success": true,
  "data": {
    "video_id": "7234567890123456789",
    "author": "creator_username",
    "transcript": "Hey everyone, today I'm going to show you...",
    "segments": [
      { "text": "Hey everyone", "start": 0.0, "end": 0.8 },
      { "text": "today I'm going to show you", "start": 0.8, "end": 2.1 }
    ],
    "language": "en",
    "duration": 45.5
  }
}

Use Cases

1. Turn TikToks into Blog Posts

async function tiktokToBlog(videoUrl) {
  // Get transcript
  const transcript = await getTikTokTranscript(videoUrl);
  
  // Get video info for context
  const videoInfo = await getTikTokVideo(videoUrl);
  
  return {
    title: videoInfo.data.description.split('#')[0].trim(),
    content: transcript.data.transcript,
    views: videoInfo.data.play_count,
    hashtags: videoInfo.data.hashtags
  };
}

2. Find Viral Hooks

Analyze the first 3 seconds of top-performing videos:

async function analyzeHooks(videos) {
  const hooks = [];
  
  for (const videoUrl of videos) {
    const transcript = await getTikTokTranscript(videoUrl);
    
    // Get first segment (the hook)
    const firstSegment = transcript.data.segments
      .filter(s => s.start < 3)
      .map(s => s.text)
      .join(' ');
    
    hooks.push(firstSegment);
  }
  
  return hooks;
}

3. Create Subtitles for Other Platforms

function transcriptToSRT(segments) {
  return segments.map((seg, i) => {
    const start = formatTime(seg.start);
    const end = formatTime(seg.end);
    return `${i + 1}\n${start} --> ${end}\n${seg.text}\n`;
  }).join('\n');
}

// Output: Standard SRT subtitle format

4. Search Within Videos

Build a searchable database of video content:

async function buildSearchIndex(videos) {
  const index = [];
  
  for (const video of videos) {
    const transcript = await getTikTokTranscript(video.url);
    
    index.push({
      videoId: video.id,
      url: video.url,
      text: transcript.data.transcript.toLowerCase(),
      author: transcript.data.author
    });
  }
  
  // Now you can search: index.filter(v => v.text.includes('keyword'))
  return index;
}

Python Example

import requests

API_KEY = 'your_api_key'

def get_tiktok_transcript(video_url):
    response = requests.get(
        'https://api.sociavault.com/v1/scrape/tiktok/transcript',
        params={'url': video_url},
        headers={'Authorization': f'Bearer {API_KEY}'}
    )
    return response.json()

# Usage
transcript = get_tiktok_transcript('https://tiktok.com/@user/video/123')
print(transcript['data']['transcript'])

Limitations

  • No audio = no transcript - Videos with only music won't have spoken text
  • Accuracy varies - Heavy accents or background noise can affect quality
  • Language support - Works best with major languages (English, Spanish, etc.)

Getting Started

  1. Sign up at sociavault.com
  2. Get 50 free credits to test
  3. Copy your API key
  4. Extract transcripts using the examples above

Frequently Asked Questions

Can I get transcripts from any TikTok video?

Yes, as long as the video is public and contains spoken words. Videos with only music or sound effects won't have meaningful transcripts.

How accurate are TikTok transcripts?

Accuracy is typically 90-95% for clear speech in supported languages. Background music, accents, or poor audio quality can reduce accuracy.

What languages are supported?

Major languages including English, Spanish, French, German, Portuguese, and more. The API detects the language automatically.

Can I get timestamps for each word?

Yes, the API returns segments with start and end timestamps, allowing you to sync text with specific moments in the video.

Is this the same as TikTok's auto-captions?

Similar, but our API works even if the creator didn't enable captions. We process the audio directly.


Related guides:

Found this helpful?

Share it with others who might benefit

Ready to Try SociaVault?

Start extracting social media data with our powerful API. No credit card required.