TikTok Transcript Scraper - Captions, Views & Likes
Pricing
from $0.68 / 1,000 transcript delivereds
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
3
Monthly active users
5 hours ago
Last modified
Categories
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
errorCodethat 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
languageempty you always get the language that is spoken in the video (TikTok's speech-to-text), never one of its machine translations.originalLanguageandavailableLanguagesshow what TikTok has. - "I need it in English (or Spanish, or Japanese)."
translateTotranslates 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 setmaxItemsonly 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_CAPTIONSrow 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."
coverUrlis 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."}, ...]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"]}
| Field | What it does |
|---|---|
videos | Video 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. |
language | Preferred 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. |
includeAllLanguages | Adds transcripts: every caption TikTok has for the video (original and its translations), each with text and the segments or files you chose. |
includeSegments | Adds segments with start, end, duration and text. |
subtitleFormats | srt and/or vtt: adds ready-to-use subtitle files as text fields. |
translateTo | Translate every transcript (text, segments, SRT/VTT) into this language: en, es, de, ja... |
maxItems | Stop after this many transcripts (empty or 0 = no limit). |
includeMetadataWhenNoCaptions | Free NO_CAPTIONS rows also carry the post caption, hashtags, date, duration, cover and author handle (no counts). |
startUrls | Same 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 field | Read as |
|---|---|
videos, postURLs, postUrls, videoUrls, urls, startUrls, tiktokUrl, tiktokUrls, bulkUrls, videoIds | Video links or ids (all merged, duplicates removed). bulkUrls and startUrls also accept a linked text file. |
language, languages, targetLanguage | Preferred caption language. |
translateToEnglish: true | Same as translateTo: "en". |
downloadSubtitlesOptions | DOWNLOAD_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). |
videoKvStoreIdOrName | The VTT file of every caption is also saved in this key-value store, with its download link in videoMeta.subtitleLinks[].downloadLink. |
maxItems, maxResults, limit | Maximum transcripts in the run. |
includeComments | Accepted 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
postURLsalso gettext(post caption),webVideoUrl,submittedVideoUrl,createTimeISO,diggCount,collectCount,authorMeta.name,authorMeta.nickName,authorMeta.fans,authorMeta.heart,authorMeta.videoandvideoMeta.subtitleLinks(language,source,downloadLinkto the VTT saved in the run's key-value store,tiktokLink). - Requests that use
tiktokUrlorbulkUrlsalso getvideoId,tiktokUrl,videoDescription,viewsCount,likesCount,commentsCount,sharesCount,collectCount,videoDuration,musicTitle,musicAuthor,authorUsername,authorDisplayName,followerCount,coverImageUrl,srtSubtitlesandvttSubtitles. transcriptis plain text, ready for an LLM. If your code expects the WebVTT text, add"subtitleFormats": ["vtt"]and read thevttfield.
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:
| errorCode | Meaning |
|---|---|
NO_CAPTIONS | TikTok 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_FOUND | The video does not exist, was deleted, is an ad-only post, or the short link expired. |
PRIVATE_VIDEO | The video is private. |
RESTRICTED_VIDEO | TikTok shows this video only to signed-in users (age-restricted or sensitive content). |
INVALID_URL | Not a TikTok video link or id (profile and search links are not supported). |
INVALID_INPUT | A field has a wrong value (the message says which). |
BLOCKED | TikTok did not answer after several attempts; run again. |
NOT_REACHED | The 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_VIDEOinstead ofNO_CAPTIONSfor age-restricted videos, captions found on more videos, a hint for videos posted in the last 72 hours, browser-safecoverUrl, 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.