TikTok Transcript Scraper avatar

TikTok Transcript Scraper

Pricing

from $1.70 / 1,000 transcript (tiktok captions)s

Go to Apify Store
TikTok Transcript Scraper

TikTok Transcript Scraper

Get transcripts of all videos on a TikTok profile, or any list of TikTok links, in bulk. TikTok transcript API: TikTok captions or speech-to-text (transcriptSource says which), timestamped segments, text, language, hook, call to action, views, likes, shares, saves. Music-only videos free. No login.

Pricing

from $1.70 / 1,000 transcript (tiktok captions)s

Rating

0.0

(0)

Developer

API Mint

API Mint

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Get transcripts of all videos on a TikTok profile, or of any list of TikTok links, in one run. It works as a TikTok transcript API too: call it from code, n8n, Make or an AI agent and get JSON back.

  • Bulk TikTok transcripts: paste hundreds of video links, vm.tiktok.com short links, video IDs and profiles, mixed in one list.
  • TikTok profile transcripts: a whole profile, newest first, with a date range if you want only recent videos.
  • TikTok captions or speech-to-text: TikTok's own captions when the video has them (most talking videos do), speech-to-text when it doesn't. Each row says which (transcriptSource).
  • Every row: the transcript with timestamps, the hook (the opening line), the call to action, the language, plus the caption, views, likes, comments, shares, saves, posting date and sound. Optional SRT or WebVTT subtitle files.

Music-only videos are detected and never charged. Every video without a transcript gets a row that says why, and is never charged. No TikTok account, no API key, no cookies.

What you payFree planStarterScaleBusiness
Per 1,000 transcripts from TikTok's captions$2.50$2.30$2.00$1.70
Per 1,000 transcripts made by speech-to-text (first 3 minutes)$15$14$12.50$10
Per extra minute of a longer speech-to-text video$0.005$0.005$0.005$0.005

Proxy traffic and speech-to-text are included. Music-only videos, photo posts, private or deleted videos and anything blocked are free.

Works with: Instagram Reel Transcript Scraper (the same row format for Reels) and YouTube Transcript Scraper (channels, playlists and Shorts).

What you get

FieldExample
text, wordCountthe whole transcript as one string, 223
segments[{start: 0.1, end: 1.46, text: "If a skincare brand told you"}, …]
hook, hookEndSeconds"If a skincare brand told you that they wanted content for their Instagram, would you know what to send them?", 4.42
cta, ctaType"Follow for more.", follow
transcriptSource, captionType, languagetiktok-captions, auto, en
caption, hashtags, mentionsthe post caption and what's tagged in it
views, likes, comments, shares, saves9776, 839, 28, 27, 155
postedAt, durationSeconds, music2026-10-08T…, 46, {title: "original sound - GaryVee", isOriginalSound: true}
authorUsername, authorName, isAd, isAiGeneratedgaryvee, GaryVee, false, false
srt, vtt (optional)subtitle files as text
status, errorMessageok, or why there is no transcript

hook and cta are derived: the hook is what is said in the first seconds, completed to the end of the sentence; the call to action is the closing "comment…", "link in bio", "follow…", "DM me", "shop…" line found in the speech, else in the caption.

How to get TikTok transcripts in bulk

Paste video links into Videos or profiles, one per line: tiktok.com/@user/video/…, vm.tiktok.com/… or vt.tiktok.com/… short links (the ones TikTok's share button gives you), or bare video IDs.

TikTok profile transcripts

Paste a profile link (https://www.tiktok.com/@washingtonpost) or @handle. You get its newest videos first, up to Max videos per profile (0 = as many as TikTok lists). Add Posted after ("30 days", "2026-09-01") to keep only recent ones.

TikTok captions or speech-to-text

Transcript source decides. The default uses TikTok's captions when they exist (cheaper) and transcribes the rest from the audio. "Always speech-to-text" ignores TikTok's captions (useful when you want punctuation and our accuracy everywhere). "TikTok captions only" never transcribes: videos without captions get a free no-captions row. Every row's transcriptSource says which path it took, so you can see what you paid for.

Hooks and calls to action for competitor research

Run competitors' profiles and sort by views: the hook and cta columns show what top TikToks say first and what they ask viewers to do. The Transcripts view shows creator, hook, CTA and text side by side.

TikTok video to text for notes and AI

Turn off Timestamped segments to get plain text per video, ready for Notion, Obsidian, a summary prompt or a RAG index. Paste the share links straight from the app.

Subtitle files (SRT and WebVTT)

Pick SRT and/or WebVTT under Subtitle files. Each row then carries the transcript as subtitle text in srt or vtt, ready to save as a file.

Monitor profiles

Turn on Only new videos and run the Actor on a schedule (daily or weekly). Each run returns only videos it hasn't returned before for that profile, so you pay once per video. Send the results to Google Sheets, n8n, Make, Zapier or a webhook with Apify's integrations, and new transcripts arrive there on their own.

TikTok transcript API

Call the Actor over HTTP and get the transcripts back as JSON in the same request. The request waits up to 5 minutes, which suits small jobs; for whole profiles, start a run and read its dataset when it finishes.

curl -X POST "https://api.apify.com/v2/acts/apimint~tiktok-transcript-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://www.tiktok.com/@garyvee/video/7693664152295869710", "https://www.tiktok.com/@washingtonpost"], "maxVideosPerProfile": 10}'

Apify's JavaScript and Python clients, the n8n and Make integrations and Apify's MCP server for AI agents all take the same input.

Input example

{
"urls": [
"https://www.tiktok.com/@garyvee/video/7693664152295869710",
"https://vm.tiktok.com/ZN81NJUTF/",
"https://www.tiktok.com/@washingtonpost"
],
"maxVideosPerProfile": 30,
"postedAfter": "30 days",
"transcriptSource": "captions-first"
}

Switching from another TikTok Actor? Calls that use startUrls, postURLs, videoUrls, videos, profiles, usernames or resultsPerPage work as they are.

Output example

{
"videoId": "7693664152295869710",
"url": "https://www.tiktok.com/@garyvee/video/7693664152295869710",
"status": "ok",
"errorMessage": null,
"transcriptSource": "tiktok-captions",
"captionType": "auto",
"language": "en",
"text": "for everyone who's like wow wow wow and and all that and all cynical Elvis this is the key moment right now for everybody this is a good one I want everyone to call their most cynical negative parent aunt grandma whoever it is …",
"wordCount": 114,
"segments": [
{ "start": 0, "end": 4.12, "text": "for everyone who's like wow wow wow and and all that and all cynical" },
{ "start": 6.42, "end": 8.34, "text": "Elvis this is the key moment right now" }
],
"hook": "for everyone who's like wow wow wow and and all that and all cynical",
"hookEndSeconds": 4.12,
"cta": null,
"ctaType": null,
"speechDetected": true,
"caption": "Remember .. they can’t darken your light for too long … All of the dark is always temporary.. light 💡 🌞 always wins in the end !!!",
"hashtags": [],
"mentions": [],
"postedAt": "2026-10-09T00:00:00.000Z",
"durationSeconds": 41,
"views": 8410,
"likes": 380,
"comments": 35,
"shares": 12,
"saves": 45,
"music": { "title": "original sound - GaryVee", "author": "GaryVee", "isOriginalSound": true },
"authorUsername": "garyvee",
"authorName": "GaryVee",
"authorUrl": "https://www.tiktok.com/@garyvee",
"isAd": false,
"isAiGenerated": false,
"transcriptEngine": null,
"extraMinutes": 0,
"source": { "type": "video", "value": "https://www.tiktok.com/@garyvee/video/7693664152295869710" }
}

A video without a transcript:

{ "videoId": "7692472349475622174", "status": "no-speech", "errorMessage": "No speech: music or sound only", "transcriptSource": null, "text": "" }

How much does it cost to scrape TikTok transcripts?

JobFree planStarter
100 TikToks, TikTok captions only$0.25$0.23
1,000 videos from profiles, captions first (about 3 in 4 talking videos have TikTok captions)$5.40$5.00
100 TikToks, always speech-to-text (under 3 minutes each)$1.50$1.40
A 1,000-video profile, captions only$2.50$2.30

Set Max transcripts in total or a maximum cost per run in the run options, and the Actor stops cleanly when it's reached.

Status codes (none of them is charged)

StatusMeaning
no-speechMusic or sound only, nothing spoken
no-captionsTikTok has no captions and you chose "captions only"
no-audioThe video has no sound track
too-longNeeds speech-to-text and is longer than Skip videos longer than (minutes)
not-a-videoA photo post
privatePrivate video or private account
unavailableDeleted or not available
blockedTikTok kept refusing it on fresh IPs (rare; try again later)
errorSomething else went wrong; errorMessage says what

What TikTok doesn't give without a login

  • Private or friends-only videos, liked or saved videos, Stories, DMs.
  • Hashtag and keyword search (they need signed requests). Paste the video links instead.
  • Text written on the video, speaker names, word-by-word timing.
  • Translations: the transcript is in the language spoken.

FAQ

Is it legal to scrape TikTok transcripts? The Actor reads public TikToks the way a logged-out visitor sees them and returns text for analysis. What a creator says is their work: use transcripts for research and analysis, not to republish.

Why not the official TikTok API? TikTok's Research API is the only one with a speech-to-text field, and it is open to academic institutions only. The Display API has no transcript or caption field and lists only the videos of users who authorised your app. This Actor reads the public caption track every visitor gets, and transcribes the audio when there is none.

How accurate is it? TikTok's own captions are TikTok's speech recognition, usually without punctuation fixes. Our speech-to-text on paid plans is OpenAI's, with the caption's names (brands, products, @handles) used as spelling hints. On the Free plan it's an open-source Whisper model on the run's own computer: free for everyone, a little less accurate and slower (give the run 4 GB of memory for the best speed).

Which languages? The transcript is in the language spoken; it is never translated. Set Language hint to pick TikTok's caption track in another language when TikTok has one.

What if TikTok blocks the run? A few blocked requests are normal and retried on fresh IPs. If TikTok starts blocking most of them, the run stops early and tells you so, instead of grinding on. Blocked videos are never charged; try again later.

Can I use it from n8n, Make, Zapier, an API or an AI agent? Yes. Use the Apify integration or API with the input above (see "TikTok transcript API"), or connect it to an AI agent through Apify's MCP server.

How often should I run it? For a profile you follow, weekly with Only new videos on is enough for most creators; daily for news accounts. Results can go straight to Google Sheets or an n8n workflow.

How is it different from other TikTok transcript scrapers?

This ActorTypical
Profiles and video links in one runYesURLs only, one per run
TikTok captions first, speech-to-text only when neededYes, and the row says whichCaptions only, or AI on every video
Hook and call to actionYesNo
Music-only videosDetected, freeCharged, empty transcript
Reason for every missing transcriptYes, free rowEmpty result or failed run
Timestamps inlineYesOften in a side file
Only new videos for schedulesYesRare

Feedback

Found a video that should work but doesn't? Open an issue with the video URL and we'll look at it. Reviews help other people find the Actor. See the ./CHANGELOG.md for updates.