TikTok Transcript Scraper — Video Subtitles & Captions by URL avatar

TikTok Transcript Scraper — Video Subtitles & Captions by URL

Pricing

from $3.00 / 1,000 transcript delivereds

Go to Apify Store
TikTok Transcript Scraper — Video Subtitles & Captions by URL

TikTok Transcript Scraper — Video Subtitles & Captions by URL

Get TikTok video transcripts by link or video ID: TikTok's own captions as clean text plus timed segments, with language, author and caption. $0.003 per transcript on every plan. No captions, no charge. No login, no cookies.

Pricing

from $3.00 / 1,000 transcript delivereds

Rating

0.0

(0)

Developer

Nicholas Cheng

Nicholas Cheng

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 hours ago

Last modified

Share

TikTok Transcript Scraper

Give it TikTok video links or IDs — get back what is said in each video, as clean text with timestamps. The transcript is TikTok's own caption track for the video, with its language and the creator's handle and caption. No login, no cookies, no proxy configuration. Accepts full links (tiktok.com/@name/video/…), share links (vm.tiktok.com/…, tiktok.com/t/…), or bare 19-digit video IDs.

You pay only for transcripts that came back. A video without captions, a photo post, or a deleted or private video produces an explanatory row and costs nothing.

InputVideo URLs, share links, or numeric video IDs — or a CSV / Google Sheet of them
OutputOne row per transcript: plain text + timed segments + language, author, caption, duration
Price$0.003 per transcript — the same on every Apify plan
Not chargedVideos without captions, photo posts, unavailable videos

What you get

Real output from a run (NASA, 7667244788046892319):

{
"inputOrder": 1,
"itemType": "transcript",
"videoId": "7667244788046892319",
"requestedAs": "7667244788046892319",
"url": "https://www.tiktok.com/@nasa/video/7667244788046892319",
"authorHandle": "nasa",
"authorNickname": "NASA",
"description": "Drop your questions below! 🚀",
"createdAt": "2026-07-27T16:25:49.000Z",
"durationSeconds": 13,
"transcriptLanguage": "eng-US",
"transcriptType": "auto-generated",
"transcript": "My name is Jared Isaacman. I'm the administrator of NASA. I don't know anything about TikTok, but my team's got it covered, and they say that you should drop your questions in the chat.",
"subtitles": [
{
"language": "eng-US",
"type": "auto-generated",
"text": "My name is Jared Isaacman. I'm the administrator of NASA. I don't know anything about TikTok, but my team's got it covered, and they say that you should drop your questions in the chat.",
"segments": [
{ "start": 0.02, "end": 1.46, "text": "My name is Jared Isaacman." },
{ "start": 1.461, "end": 3.181, "text": "I'm the administrator of NASA." },
{ "start": 3.182, "end": 5.501, "text": "I don't know anything about TikTok," },
{ "start": 5.502, "end": 6.901, "text": "but my team's got it covered," },
{ "start": 6.902, "end": 9.681, "text": "and they say that you should drop your questions in the chat." }
]
}
],
"subtitlesNote": null
}
  • transcript — the spoken-language track as one string.
  • subtitles — every caption track TikTok has for the video, each with timed segments; type is auto-generated (TikTok's speech recognition) or machine-translated.
  • transcriptLanguage — TikTok's label for the spoken language. It comes from TikTok's own language detection, which is occasionally wrong; check it before relying on it.

Input

{
"videoUrls": [
"https://www.tiktok.com/@nasa/video/7695090484124929293",
"https://vm.tiktok.com/ZMabc123/",
"7514320905909194030"
]
}
OptionNotes
videoUrlsFull links, share links (followed to the final URL), or bare video IDs. De-duplicated
listUrlA public .csv / .txt, or a Google Sheet shared as "Anyone with the link". With several columns, only TikTok links are read
maxConcurrencyVideos fetched at the same time, 1–10 (default 3)
maxItemsHard cap on transcripts for the run

Every row carries inputOrder (its position in your list) so results map back to your sheet. Long lists are a normal run: throttled videos are retried slowly at the end, and a migrated or resurrected run skips everything already delivered — never fetched or charged twice.


Pricing

$0.003 per transcript, on every Apify plan — Free, Bronze, Silver, Gold, Platinum, Diamond. Check the Pricing tab: all six columns are identical. No start fee, no per-minute fee.

Charged once per transcript delivered. A video that turns out to have no captions is a free row, so the price you see is the price per transcript you actually get.

What you are not charged for

What happens here
Videos without captionsOne row with chargedForThis: false and the reason. Common for music-only clips and videos without speech.
Photo postsNo audio, nothing to transcribe — free row.
Unavailable videosDeleted, private, or mistyped links — free row with TikTok's own reason.
The free planSame code path, same fields, same price. No demo mode, no row cap.

What this Actor cannot do

  • No speech recognition of our own. The transcript is the caption track TikTok generated for the video. If TikTok has none, you get none — we do not download the audio and transcribe it. In our own sample of 25 videos across eleven accounts, 15 had captions.
  • No video lists. You bring the links; for an account's videos, collect the links first.
  • For play, like, comment and share counts, use the TikTok Video Stats Scraper (it can include the transcript too, with includeSubtitles).

How it stays working

The video page is fetched exactly as a browser without cookies would fetch it; TikTok lists the video's caption tracks in the page data, and the caption file is downloaded the same way. There is no login to get banned and no signature to reverse-engineer. Measured from a datacenter address over three rounds: the same 15 of 25 videos had captions every round, and all 48 caption downloads returned text.


Integrating

curl -X POST "https://api.apify.com/v2/acts/nick.cheng~tiktok-transcript-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H 'Content-Type: application/json' \
-d '{"videoUrls":["https://www.tiktok.com/@nasa/video/7695090484124929293"]}'

Official clients exist for JavaScript and Python; results export as JSON, CSV or Excel; and the Actor is available as a tool to AI agents through Apify's MCP server.