TikTok Transcript Scraper - Captions, Views & Likes avatar

TikTok Transcript Scraper - Captions, Views & Likes

Pricing

from $0.68 / 1,000 transcript delivereds

Go to Apify Store
TikTok Transcript Scraper - Captions, Views & Likes

TikTok Transcript Scraper - Captions, Views & Likes

Get the transcript of any TikTok video from its link, short link, share text or id: TikTok's captions as text, segments, SRT or VTT, in any language or translated to yours. Views, likes and author in the same row. No limit per run. No captions, private or restricted = free. US$ 0.80 per 1,000.

Pricing

from $0.68 / 1,000 transcript delivereds

Rating

0.0

(0)

Developer

Scrapewise Data

Scrapewise Data

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

3

Monthly active users

5 hours ago

Last modified

Share

TikTok Transcript Scraper: captions as text, SRT or VTT, with views, likes and author

Get the transcript of any public TikTok video from its link or id: the captions TikTok itself generated (speech-to-text) or machine-translated, as plain text, timestamped segments, SRT or WebVTT, in the language you ask for, in every language available, or translated into any language. No account, no cookies, no browser.

Each row also carries the video's views, likes, comments, shares, saves, publish date, duration, caption, hashtags, music and public author data (handle, display name, verified badge, followers), at no extra cost.

Built for AI and RAG pipelines, content repurposing, trend and competitor research, subtitle workflows and social listening on TikTok.

US$ 0.80 per 1,000 transcripts. No start fee, no monthly fee. Videos without captions, deleted, private or restricted videos, invalid links and duplicates are free.

What it fixes

Problems people report with TikTok transcript tools, and what this Actor does about each one:

  • "The run failed and I got nothing." One bad link never stops the run. Every input gets a row: the transcript, or a free row with an errorCode that says exactly why (no captions, private, deleted, restricted, invalid link). A blocked request is retried several times before it is reported.
  • "The transcript came back in English, but the video is in German." With language empty you always get the language that is spoken in the video (TikTok's speech-to-text), never one of its machine translations. originalLanguage and availableLanguages show what TikTok has.
  • "I need it in English (or Spanish, or Japanese)." translateTo translates the transcript, segments and SRT/VTT into any language: TikTok's own translation when it has one, machine translation otherwise. Same price.
  • "Short share links fail." vt.tiktok.com, vm.tiktok.com, tiktok.com/t/..., embed and player links, links with tracking parameters, bare ids, and even the whole text the app copies when you tap Share all work.
  • "I can only send 10 videos at a time." There is no limit per run. Paste hundreds of links, upload or link a text file with one link per line (startUrls), and set maxItems only if you want a cap.
  • "Transcript is null for a video posted today." TikTok usually adds auto-captions within 24 to 48 hours of upload. The free NO_CAPTIONS row says how many hours ago the video was posted, so you know to run it again later instead of guessing.
  • "The caption and cover image are missing for music-only videos." Turn on includeMetadataWhenNoCaptions: videos without speech still come back free, with the post caption, hashtags, date, duration, cover image and author handle.
  • "The thumbnail is a HEIC file my browser downloads instead of showing." coverUrl is always an image browsers display (JPEG when TikTok's own cover would be HEIC).
  • "Export fails: the dataset does not have a schema." The dataset has a schema and a ready table view; export to JSON, CSV, Excel or HTML works from the Output tab and the API.
  • "Payment required" errors from a third-party API. Nothing here depends on another paid API: you pay only the per-transcript price below.

At a glance

  • Price per 1,000 videos, Free plan: US$ 0.80
  • Charged when the video has no captions: No
  • Transcript as plain text: Yes
  • Timestamped segments, SRT, VTT: All three
  • Choose the language / every language / translate to any language: Yes / Yes / Yes
  • Short links (vt.tiktok.com, vm.tiktok.com, tiktok.com/t/) and bare ids: Yes
  • Views, likes, comments, shares, saves in the same row: Yes
  • Music, hashtags, duration, author: Yes
  • Videos per run: No limit
  • Transcribes videos that have no TikTok captions: No (see Limitations)

One real row

From a cloud test run on 2026-09-28 (empty input, which uses a National Geographic video). coverUrl and the long transcript are shortened here:

{
"id": "7549930445127896333",
"url": "https://www.tiktok.com/@natgeo/video/7549930445127896333",
"language": "en",
"languageCode": "eng-US",
"source": "ASR",
"isAutoGenerated": true,
"isMachineTranslated": false,
"transcript": "Digging a hole to the other side of the world. Let me show you where you'll end up. [...] Where's your antipode? Let us know.",
"wordCount": 251,
"requestedLanguageFound": null,
"availableLanguages": [{"language": "en", "languageCode": "eng-US", "source": "ASR"}],
"caption": "Ever wondered where you'd end up if you started digging a hole through the Earth? [...]",
"hashtags": [],
"createTime": "2025-09-14T13:07:07Z",
"timestamp": 1757855227,
"durationSeconds": 74,
"playCount": 1400000,
"likeCount": 98900,
"commentCount": 710,
"shareCount": 2353,
"saveCount": 13661,
"repostCount": 0,
"textLanguage": "en",
"locationCreated": "BO",
"isAd": false,
"coverUrl": "https://p16-common-sign.tiktokcdn.com/...",
"musicMeta": {"id": "7549930669510609677", "title": "original sound", "author": "National Geographic",
"album": null, "isOriginalSound": true},
"authorMeta": {"uniqueId": "natgeo", "nickname": "National Geographic", "verified": true,
"url": "https://www.tiktok.com/@natgeo", "followers": 9600000, "following": 62,
"totalLikes": 54800000, "videoCount": 1516},
"sourceUrl": "https://www.tiktok.com/@natgeo/video/7549930445127896333",
"scrapedAt": "2026-09-29T00:16:29Z",
"error": null,
"errorCode": null
}

With includeSegments each row adds segments:

[{"start": 0.46, "end": 2.3, "duration": 1.84, "text": "Digging a hole to the other side of the world."}, ...]
(seconds). With subtitleFormats it adds srt and/or vtt with the whole file. source is ASR (TikTok's speech-to-text in the spoken language) or MT (a machine translation of it). With translateTo the row adds translatedTo, translationSource (tiktok or google_translate) and originalLanguage. locationCreated is the country code TikTok records for the post.

Input

Every field is optional. An empty input returns the transcripts of two public videos from the National Geographic and BBC News accounts.

{
"videos": [
"https://www.tiktok.com/@natgeo/video/7549930445127896333",
"https://vt.tiktok.com/XXXXXXXXX/",
"7652791912868482326"
],
"language": "en",
"includeSegments": true,
"subtitleFormats": ["srt"]
}
FieldWhat it does
videosVideo links (tiktok.com/@handle/video/<id>, also with ?lang= and other parameters), photo post links, short share links (vt.tiktok.com/..., vm.tiktok.com/..., tiktok.com/t/...), embed and player links, numeric video ids, or the text the app copies when you tap Share.
languagePreferred language: en, es, pt, pt-BR, fr, eng-US... If the video has no caption in it, you get the original-language caption, then the first one available; requestedLanguageFound says which case happened.
includeAllLanguagesAdds transcripts: every caption TikTok has for the video (original and its translations), each with text and the segments or files you chose.
includeSegmentsAdds segments with start, end, duration and text.
subtitleFormatssrt and/or vtt: adds ready-to-use subtitle files as text fields.
translateToTranslate every transcript (text, segments, SRT/VTT) into this language: en, es, de, ja...
maxItemsStop after this many transcripts (empty or 0 = no limit).
includeMetadataWhenNoCaptionsFree NO_CAPTIONS rows also carry the post caption, hashtags, date, duration, cover and author handle (no counts).
startUrlsSame as videos, in the Apify start URLs format; also accepts a link to a text file with one video link per line.

Switching from another TikTok transcript actor? Your existing input works

Paste the JSON you already send. These field names are read as follows:

Your fieldRead as
videos, postURLs, postUrls, videoUrls, urls, startUrls, tiktokUrl, tiktokUrls, bulkUrls, videoIdsVideo links or ids (all merged, duplicates removed). bulkUrls and startUrls also accept a linked text file.
language, languages, targetLanguagePreferred caption language.
translateToEnglish: trueSame as translateTo: "en".
downloadSubtitlesOptionsDOWNLOAD_SUBTITLES: TikTok's captions, as always. The two transcription values are accepted: videos with TikTok captions get them, videos without come back as free NO_CAPTIONS rows (see Limitations).
videoKvStoreIdOrNameThe VTT file of every caption is also saved in this key-value store, with its download link in videoMeta.subtitleLinks[].downloadLink.
maxItems, maxResults, limitMaximum transcripts in the run.
includeCommentsAccepted and ignored with a log line: TikTok only shows comments to signed-in sessions.

The output keeps the names you already parse, on top of the fields shown above:

  • Requests that use postURLs also get text (post caption), webVideoUrl, submittedVideoUrl, createTimeISO, diggCount, collectCount, authorMeta.name, authorMeta.nickName, authorMeta.fans, authorMeta.heart, authorMeta.video and videoMeta.subtitleLinks (language, source, downloadLink to the VTT saved in the run's key-value store, tiktokLink).
  • Requests that use tiktokUrl or bulkUrls also get videoId, tiktokUrl, videoDescription, viewsCount, likesCount, commentsCount, sharesCount, collectCount, videoDuration, musicTitle, musicAuthor, authorUsername, authorDisplayName, followerCount, coverImageUrl, srtSubtitles and vttSubtitles.
  • transcript is plain text, ready for an LLM. If your code expects the WebVTT text, add "subtitleFormats": ["vtt"] and read the vtt field.

Price

  • US$ 0.80 per 1,000 transcripts (US$ 0.0008 each). One charge per video, whatever the number of languages, segments, files or translations you ask for. No fee per run.
  • Never charged: videos without captions, deleted, private, restricted or ad-only videos, invalid links, blocked requests and duplicates.
  • Examples: 100 videos with captions = US$ 0.08. 10,000 = US$ 8.00.

You can set a maximum cost per run in Apify: the Actor stops when the limit is reached and keeps what it saved.

Errors you may see

Every error is a row with id, url, sourceUrl, error and errorCode, and is never charged:

errorCodeMeaning
NO_CAPTIONSTikTok has no captions for this video: no speech (music-only clips are common), captions turned off, a photo post, or a video posted in the last day or two (the message says how many hours ago; run it again later).
VIDEO_NOT_FOUNDThe video does not exist, was deleted, is an ad-only post, or the short link expired.
PRIVATE_VIDEOThe video is private.
RESTRICTED_VIDEOTikTok shows this video only to signed-in users (age-restricted or sensitive content).
INVALID_URLNot a TikTok video link or id (profile and search links are not supported).
INVALID_INPUTA field has a wrong value (the message says which).
BLOCKEDTikTok did not answer after several attempts; run again.
NOT_REACHEDThe run timeout arrived before this video.

Good to know

  • In our tests 23 of 39 existing videos from brand and news accounts had captions (59%). Talking videos almost always have them; music, dance and silent clips usually do not. You pay only for the ones that do.
  • 41 videos took 53 seconds in one cloud run.
  • Proxy is included: you pay only the per-transcript price above.
  • Public author data only: handle, display name, verified badge, followers, following, total likes and video count. The author's bio, email, phone and links to other networks are never collected, and any email address, phone number or WhatsApp/Telegram link written in a caption or spoken in a transcript is replaced by [contact removed].

Limitations

  • Only captions TikTok generated. The Actor returns the captions TikTok itself created (auto-generated speech-to-text and its machine translations). It does not run its own speech recognition, so videos without TikTok captions come back as NO_CAPTIONS (free).
  • No search, no profiles, no hashtags. Give it video links or ids; it does not list the videos of a profile, a hashtag or a keyword search.
  • No comments. TikTok only shows comments to signed-in sessions.
  • Auto-generated captions can misspell names and brands, exactly as they appear in the TikTok app.
  • No video download (MP4).

FAQ

Do I need a TikTok account or cookies? No. Everything comes from TikTok's public video pages.

Which language will I get? With language empty, the original spoken language. With language set, that language if TikTok has it (often as a machine translation, source: "MT"), otherwise the original. With translateTo, always the language you asked for. Turn on includeAllLanguages to get all of TikTok's captions in one row.

Can I use it from n8n, Make, Zapier or my own code? Yes, like any Apify Actor: call it through the API with a list of links and read the dataset in JSON, CSV or Excel. See "Switching from another TikTok transcript actor" above for the field names it understands.

How do I get the transcripts of all videos of a creator? Collect the video links first (for example with a TikTok profile scraper) and pass them in videos.

Something broke or a field is missing? Open an issue on the Actor page. Issues are answered within a day.

Changelog

  • 0.1 (8 Oct 2026): translateTo (any language), includeMetadataWhenNoCaptions, RESTRICTED_VIDEO instead of NO_CAPTIONS for age-restricted videos, captions found on more videos, a hint for videos posted in the last 72 hours, browser-safe coverUrl, embed/player links and pasted share text, link list files, and the input and output field names of other TikTok transcript actors.
  • 0.1 (28 Sep 2026): first version. Video links, short links and ids; preferred language or all languages; plain text, segments, SRT and VTT; views, likes, comments, shares, saves, date, duration, music, hashtags and public author data in the same row; videos without captions are free.