TikTok Video Transcript Extractor - Captions, SRT avatar

TikTok Video Transcript Extractor - Captions, SRT

Pricing

from $16.00 / 1,000 extracted transcripts

Go to Apify Store
TikTok Video Transcript Extractor - Captions, SRT

TikTok Video Transcript Extractor - Captions, SRT

Extract TikTok video transcripts from native captions: clean text, timestamps, SRT, language selection (ISO codes), batch URLs, short links and bare video IDs. $0.001 per transcript — and unlike per-result competitors, videos without captions are never charged. No login, no cookies.

Pricing

from $16.00 / 1,000 extracted transcripts

Rating

0.0

(0)

Developer

Broke to Built

Broke to Built

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

12

Monthly active users

9 days ago

Last modified

Share

TikTok Transcript (Clean)

Send a TikTok video URL, get the spoken transcript as clean text, plus timestamps, SRT and the video stats.

You give itYou get backYou pay (Free plan)
TikTok video URLs, short links or bare video IDsTranscript text, word count, caption language, SRT, views/likes/author$0.001 per transcript

Pay per result only: no subscription, no start fee. Videos with no captions return their metadata and are not charged. No login or cookies needed. Paid Apify plans get Store discounts on the price above. Scheduled price change from 2026-10-08: extracted transcripts $0.001 → $0.02.

Try it in one click

The input form is already filled in with this example: Hank Green explaining redshift and how the James Webb Space Telescope's infrared images get their colors. Press Start and you get the output below.

{
"videoUrl": "https://www.tiktok.com/@hankgreen1/video/7120053846516190469",
"videoUrls": []
}

Real output from that exact input (run on 2026-09-24; long arrays shortened to a few entries and long text cut for display):

[
{
"videoId": "7120053846516190469",
"url": "https://www.tiktok.com/@hankgreen1/video/7120053846516190469",
"title": "Replying to @artemispbj #askhank (posted by @paytmitch)",
"author": "hankgreen1",
"authorName": "Hank Green",
"durationSeconds": 96,
"playCount": 228900,
"likeCount": 22200,
"commentCount": 405,
"shareCount": 149,
"createTime": "2022-07-14T02:45:25.000Z",
"ok": true,
"language": "eng-US",
"wordCount": 295,
"transcript": "A tiny bit technical here. Red shifting is what happens because the universe is expanding and that, along with the uni …",
"segments": [
{
"start": 0.4,
"timestamp": "00:00",
"text": "A tiny bit technical here."
},
{
"start": 2.28,
"timestamp": "00:02",
"text": "Red shifting is what happens because the universe is expanding"
}
],
"srt": "1\n00:00:00,400 --> 00:00:02,260\nA tiny bit technical here.\n\n2\n00:00:02,280 --> 00:00:04,639\nRed shifting is what happens…"
}
]

Extract TikTok video transcripts as clean, readable text — plain-prose paragraphs, per-line timestamps, and a ready-to-use SRT string, plus the video's full metadata (author, views, likes, music). Paste full links, share-sheet short links (vm.tiktok.com/…), or bare video IDs.

Why this one

  • Pay only for real transcripts. A meaningful share of TikTok videos have no captions at all — in an 11-video sample of popular TikToks we measured (2026-08-07), 3 of 11 had none: every dance, silent-comedy, and pre-2022 video in the sample, while 8 of 9 current speech videos were captioned. Actors that bill per result charge you for those empty, metadata-only records. This actor bills per transcript actually extracted — a caption-less video returns an uncharged record with the video's metadata and a clear reason.
  • Parsed, not raw. You get plain text, timestamped segments, and SRT — not a raw WEBVTT blob to post-process.
  • Native captions, exact wording. Transcripts come from TikTok's own caption tracks (including its auto-captions), not a re-transcription — what you get matches what viewers see.
  • Fast and robust. No browser, no login. A typical video takes well under a second. Bad URLs, deleted videos, and private videos produce clean per-item error records — one bad item never stops a batch.

Input

FieldDescription
videoUrlAny TikTok video URL, a vm.tiktok.com / tiktok.com/t short link, or a bare numeric video ID
videoUrlsBatch of videos in one run
languagePreferred caption language (en, es, de, …). Falls back to English, then the first available track; every record lists availableLanguages
formatparagraphs (readable prose, default) or raw (one block)
includeTimestampsAdds per-line timestamps and an SRT subtitle string (default true)
maxVideosSafety cap, 1–200 — also your budget cap since billing is per transcript

Output (one record per video)

{
"videoId": "7120053846516190469",
"url": "https://www.tiktok.com/@hankgreen1/video/7120053846516190469",
"ok": true,
"title": "Replying to @artemispbj #askhank (posted by @paytmitch)",
"author": "hankgreen1",
"authorName": "Hank Green",
"durationSeconds": 96,
"playCount": 228900,
"likeCount": 22200,
"createTime": "2022-07-14T02:45:25.000Z",
"music": { "title": "original sound", "author": "Hank Green" },
"language": "eng-US",
"isAutoGenerated": false,
"availableLanguages": ["eng-US", "eng-US"],
"cuesAfterDedup": 35,
"wordCount": 295,
"transcript": "A tiny bit technical here. Red shifting is what happens because the universe is expanding ...",
"segments": [{ "start": 0.4, "timestamp": "00:00", "text": "A tiny bit technical here." }],
"srt": "1\n00:00:00,400 --> 00:00:02,260\n..."
}

Videos without captions come back as { "ok": false, "error": "No captions on this video …" } with the metadata included — and are never charged.

Pricing

$0.001 per extracted transcript. The most-used alternative (scrape-creators/best-tiktok-transcripts-scraper, $0.001 per result) charges for every result including caption-less videos; this actor never charges a video that yields no transcript (measured 2026-08-07).

Common uses

  • Feed TikTok content to an LLM (summaries, trend analysis, RAG pipelines)
  • Subtitle files (SRT) for re-edits, translations, accessibility
  • Social listening and creator research with engagement metadata attached
  • Quote mining and content repurposing (video → blog/newsletter)

Notes and honest limits

  • TikTok generates captions only for videos with recognizable speech; silent or music-only videos legitimately have none — you are not charged for those.
  • Transcripts are TikTok's native tracks; if TikTok's own ASR misheard a word, the transcript reflects that.
  • Extraction reads TikTok's public web player data — no login, no cookies, and none of your account credentials are ever involved.

Use from code or AI agents

Run it from any HTTP client and get the transcripts back in the same call:

curl -X POST "https://api.apify.com/v2/acts/eliai~tiktok-transcript-clean/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videoUrl": "https://www.tiktok.com/@hankgreen1/video/7120053846516190469"}'

Or with the Apify JS client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('eliai/tiktok-transcript-clean').call({
videoUrls: ['https://www.tiktok.com/@hankgreen1/video/7120053846516190469', '7120053846516190469'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

AI agents can call this actor as a tool through Apify's MCP server — an MCP-enabled agent can discover it, read the input schema, and fetch TikTok transcripts autonomously.

FAQ

How do I get the transcript of a TikTok video? Paste the link into videoUrl and run — full links, vm.tiktok.com / tiktok.com/t share-sheet short links, and bare numeric video IDs all work. The transcript field is clean prose; segments and srt carry the timing.

Why did a video come back with "no captions"? TikTok generates captions only for videos with recognizable speech — dances, silent comedy, and music-only videos legitimately have none. You get the video's metadata anyway and are not charged for it.

Is this a re-transcription of the audio? No — transcripts come from TikTok's own caption tracks (including its auto-captions), so the wording matches exactly what viewers see on screen.

Can I get subtitles as an SRT file? Yes. With includeTimestamps on (the default), every result includes a ready-to-use srt string.

Do I need to log in or provide cookies? No — extraction reads TikTok's public web player data. No login, no cookies, no account credentials involved.

Can I transcribe a list of videos at once? Put up to 200 links in videoUrls — one captionless or deleted video never stops the rest, and you pay only per transcript actually extracted.

Which languages are supported? Whatever caption tracks the video carries — set language (e.g. es, de) to prefer one; every record lists availableLanguages so you can see what exists.

For AI agents

This Actor is built to be called by software, not just by people.

  • Mount it directly as an MCP tool — no Store search, no ranking, just this one tool: https://mcp.apify.com/?actors=eliai/tiktok-transcript-clean
  • Or call it over HTTP and get the results in the same request: POST https://api.apify.com/v2/acts/eliai~tiktok-transcript-clean/run-sync-get-dataset-items
  • Pay with x402, without an Apify account. This Actor is whitelisted for agentic payments, so an agent holding USDC on Base can buy a prepaid token and spend it here. The minimum purchase is $1, the token balance is an absolute spending cap, and it expires 14 days after purchase.
  • Costs are predictable before you call. Pricing is pay-per-event (see Pricing above), so an agent can budget a run in advance instead of discovering the bill afterwards.
  • Send only the field you mean. If you pass the bulk field, it is used on its own; the single-value field is a fallback, never merged into your request. You are charged for the items you sent and nothing else.

Changelog

  • 2026-09-24: The one-click example is now a Hank Green science explainer (redshift and the James Webb telescope) instead of a clip with strong language. Output, pricing and behaviour are unchanged.
  • 2026-09-24: New summary at the top of this page: what you send, what you get, the price, and a real output from the prefilled example.