TikTok Transcript Scraper: Captions & Audio to Text avatar

TikTok Transcript Scraper: Captions & Audio to Text

Pricing

from $1.39 / 1,000 transcripts

Go to Apify Store
TikTok Transcript Scraper: Captions & Audio to Text

TikTok Transcript Scraper: Captions & Audio to Text

Get TikTok transcripts even when captions are missing. Extract original-language native subtitles or transcribe video audio in batches. Export text and available native SRT/VTT, with a clear outcome for every processed video.

Pricing

from $1.39 / 1,000 transcripts

Rating

0.0

(0)

Developer

Zen Studio

Zen Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

TikTok transcripts. Built for accuracy. Original speech. Original language.

From Zen Studio, creators of Douyin Transcripts and TikTok Shop Reviews.

TikTok transcripts, built for accuracy

Original speech. Original language. Get transcripts from public TikTok video links. Automatic mode retrieves suitable native captions first and transcribes the video audio when captions are missing or unusable.

  • Coverage beyond captions. Transcribe spoken audio and intelligible singing, including videos without native subtitles. No TikTok account or audio upload needed.
  • Useful exports. Get transcript text and a TXT file; native caption results also include real cue times and optional SRT/WebVTT files.
  • Clear batch results. Each processed video reports a transcript, no speech, an error or a skip. Recognition errors and restricted videos stay visible.

Audio-generated transcripts are untimed. SRT/VTT exports require native caption timing. Recognition can make mistakes, especially with accents, overlapping voices and mixed-language speech; review text before relying on exact wording.

Get your TikTok transcript

Try one English video

Open the actor's input page, switch to JSON and paste this example. Starting the run processes up to one video; audio recognition adds a duration charge if native captions cannot be used.

{
"videoUrls": [
"https://www.tiktok.com/@hankgreen1/video/7047596209028074758"
],
"maxVideos": 1,
"mode": "auto",
"includeSubtitleFiles": true
}
Zen Studio · Video and creator research
Douyin Transcripts
Transcripts for Douyin videos
Douyin Search
Find videos by keyword
RedNote Search
Discover posts and creators

Copy to your AI assistant

zen-studio/tiktok-transcript-scraper on Apify turns public TikTok URLs or IDs into original-language transcripts. Use mode=auto for native captions then audio, nativeOnly to avoid recognition charges, or transcribe for fresh audio text. SRT/VTT require native timing and includeSubtitleFiles=true; audio output is untimed. Set maxVideos explicitly (default20,max500); maximum video length600s. Transcripts and started audio minutes are separate charges; start and dataset fees also apply. Free-plan trial:3 runs,3 videos/run,180s/video. Check status per row. Current contract: https://api.apify.com/v2/actors/zen-studio~tiktok-transcript-scraper/builds/default and https://apify.com/zen-studio/tiktok-transcript-scraper; prices: https://apify.com/zen-studio/tiktok-transcript-scraper/pricing. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: feature requests, a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.

Inputs and transcript modes

InputDefaultBehavior
videoUrlsRequired unless startUrls is suppliedPublic video URLs, TikTok app share links or numeric IDs; up to 500 entries. Canonical duplicates are removed before work. Other links resolving to the same video produce a skipped duplicate result.
maxVideos20Maximum distinct input entries attempted, including unavailable videos. Range 1–500; zero is invalid.
modeautoauto: suitable original native captions, then audio. nativeOnly: no audio recognition. transcribe: always recognize the actual video audio.
maxDurationSeconds600Skip longer videos. Range 1–600 seconds. This limits accepted length; it does not trim the recording.
includeSubtitleFilestrueCreate SRT and WebVTT when native cues exist. TXT accompanies transcript results.

Use a real video URL when possible. Private, deleted, login-restricted, region-restricted or temporarily blocked videos may be unavailable. Posts without a usable video audio track are unsupported. Source captions may be automatic and can contain errors. Machine-translated caption tracks are not substituted for original speech.

For API integrations, startUrls is accepted when videoUrls is omitted, using URL strings or {"url": "..."} objects. If both keys are supplied, videoUrls takes precedence. An empty primary list is an input error; it does not fall back to the alias.

Results and exports

The default dataset holds one row per processed input, in completion order. Use inputIndex, input and videoId to match results. The SUMMARY key-value record distinguishes attempted, delivered, unfinished and unattempted inputs. A budget or deadline stop is reported as partial, with its stop reason; inputs beyond the run/free-plan/budget limits may never be attempted.

StatusMeaningCustom charge
transcriptNonempty transcript from native captions or audio.One Transcript; audio results also pay started minutes.
no_speechAudio was classified as containing no intelligible speech or singing, or was digitally silent.Audio minutes if recognition ran; no Transcript charge.
errorRetrieval or transcription failed.No custom charge.
skippedDuration/budget limit or duplicate resolved video.No custom charge.

Automatic start and dataset-item charges are separate and may apply to runs with errors or skipped rows. A no-speech classification is an estimate, not a guarantee that quiet speech is absent.

source, captionProvenance, languageBasis and timingSource show where the text and timing came from. Native language labels follow TikTok's codes (for example deu-DE); audio labels are estimates. segments contains genuine native cues or an empty array. transcriptUrl, srtUrl and vttUrl are null when a file is unavailable. An optional file-save failure leaves the dataset text intact and adds a warning.

Video metadata includes creator identity, description, creation time and available engagement counts. availableCaptionLanguages lists tracks discovered on the source, including languages not chosen. warnings and the structured error explain limitations without confusing failure with silence.

Example output

Actual hosted validation output for the example video. Only the first two of 15 cues are shown; all top-level and nested field shapes are retained.

{
"inputIndex": 0,
"input": "https://www.tiktok.com/@swr3online/video/7696397581496110368",
"videoId": "7696397581496110368",
"videoUrl": "https://www.tiktok.com/@swr3online/video/7696397581496110368",
"status": "transcript",
"source": "native",
"text": "du bist gut genug\nSusanne Daubner in Hamburg schönen guten Morgen\nguten Morgen zur Tagesschau\nda da wird noch aufgeräumt in Hamburg\neinen schönen guten Morgen\nmeine Damen und Herren\ntschuldigung in meinem Kalender steht's auch richtig\n09.10 Gundula gause Cosplay\n10.10 Jugendwort 11.10 GTA 6 überraschungsrelease\nsorry Leute ich komme morgen noch mal\ndicker und yolo hatten wir doch schon oft genug\nund wieso ist eigentlich daubnern nicht dabei\ndautnern klingt gar nicht schlecht\ndas tut Mir jetzt echt leid\noh Mann",
"languageCodes": [
"deu-DE"
],
"languageBasis": "native_track",
"audioType": null,
"durationSeconds": 58,
"captionProvenance": "automatic_original",
"availableCaptionLanguages": [
"deu-DE"
],
"timingSource": "native",
"segments": [
{
"start": 0.04,
"end": 1.44,
"text": "du bist gut genug"
},
{
"start": 3.16,
"end": 7.24,
"text": "Susanne Daubner in Hamburg schönen guten Morgen"
}
],
"transcriptUrl": "https://api.apify.com/v2/key-value-stores/rAbTdY0Q3mtscIkRm/records/TRANSCRIPT_0_7696397581496110368.txt?signature=UC9MSpuQ9jUxS4zba4ge",
"srtUrl": "https://api.apify.com/v2/key-value-stores/rAbTdY0Q3mtscIkRm/records/TRANSCRIPT_0_7696397581496110368.srt?signature=1c9qTqkSgfXApI8erQiDr",
"vttUrl": "https://api.apify.com/v2/key-value-stores/rAbTdY0Q3mtscIkRm/records/TRANSCRIPT_0_7696397581496110368.vtt?signature=ieUVUPhHp6LyCfIeg71i",
"author": {
"id": "6693033825812890629",
"username": "swr3online",
"name": "SWR3"
},
"description": "Welcher ist euer Lieblingsmoment? Mit ihrer Art, das Jugendwort des Jahres zu präsentieren, hat Susanne Daubner das Internet einfach komplett durchgespielt. Aber auch abseits davon sorgt die Tagesschau-Moderatorin immer wieder für einzigartige Momente, die zeigen, warum sie das Netz so liebt. #SusanneDaubner #Lachflash #Bestof #Memes #Tagesschau",
"createTime": "1791957209",
"stats": {
"diggCount": 30300,
"shareCount": 3770,
"commentCount": 288,
"playCount": 221100,
"collectCount": "2328"
},
"noSpeechBasis": null,
"warnings": [],
"error": null,
"processedAt": "2026-10-16T15:01:44.399737+00:00"
}

This second hosted result used audio recognition. The excerpt shows the fields that differ from native captions:

{
"videoUrl": "https://www.tiktok.com/@tagesschau/video/7696587528509443350",
"status": "transcript",
"source": "audio",
"languageCodes": [
"de"
],
"languageBasis": "audio_estimate",
"audioType": "speech",
"timingSource": null,
"segments": [],
"srtUrl": null,
"vttUrl": null,
"warnings": [
"Audio transcription has no verified timestamps; subtitle files are available only for native caption results."
]
}

Download JSON, CSV, Excel or other dataset formats from Apify. Use the individual TXT/SRT/VTT links for text and subtitle files; their availability follows the run's storage retention.

Pricing

Transcript charges start at $1.99 per 1,000 delivered transcripts on Free plans; Bronze pays $1.89, Silver $1.69, and Gold or higher $1.39. When recognition is used, each started audio minute additionally costs $2.99 per 1,000 minutes on Free, $2.79 on Bronze, $2.49 on Silver, or $2.09 on Gold and higher. A 61-second audio result uses two audio-minute events; native text uses none.

The automatic start charge is $0.002 per GB of assigned memory, minimum one event. At the default 512 MB, that is $0.002 per run. The automatic dataset-item charge is $0.01 per 1,000 rows, as shown on the pricing page. Transcript/subtitle file exports have no extra custom charge.

For example, one 60-second audio transcript on Bronze has $0.00189 Transcript + $0.00279 Audio minute + $0.002 start =$0.00668, plus $0.00001 for the dataset row: $0.00669 total at default memory. Batching shares the start charge across the run. Your selected Apify plan and run budget determine the effective event rates and limits.

Free-plan trial: up to3 lifetime runs,3 videos per run, and180 seconds per video. This is a usage limit; standard Apify credits and event charges still apply. Paid-plan users can use the full input limits.

Frequently asked questions

Can it transcribe a TikTok without subtitles?

Yes. Use auto to fall back to audio when suitable native captions are absent, ortranscribe to request fresh recognition even if captions exist. An unavailable video still needs to be retrieved successfully first.

Does every transcript include timestamps or SRT?

Native caption results include the source's cue timing. Audio-generated text has no verified timestamps, so it does not produce SRT or WebVTT. This actor does not invent cue times or offer speaker diarization.

Does it translate videos or read text shown on screen?

No. It preserves the original spoken language and intelligible singing. Text burned into the picture is not a downloadable subtitle track, and this actor does not perform OCR or translation. Mixed-language videos can contain recognition errors or incomplete language labels.

Why did a video return an error or no speech?

Check status,error.code and warnings. Restricted or removed videos, missing audio and temporary source failures are distinct errors. Instrumental music can correctly returnno_speech. Try again for errors markedretryable; use a different public URL for access restrictions. Recognition failure does not become an empty successful transcript.

Can I use it in an automated workflow?

Run the actor through the Apify API or Python client. Send a bounded list of video URLs, wait for completion, and read the default dataset. With n8n, pass new video URLs into the actor and route transcript rows into your document index or content analysis. Check each row's status before downstream use.

For recurring collections, schedule your discovery workflow and send only new video IDs to this actor. Deduplication is per run; repeating a video in a later run performs new work and can charge again. See Apify schedules.

Support

Report an issue through the actor's Issues tab, including a public video URL, run ID, expected language and the problem. Avoid sharing credentials or private recordings. You can also include a feedback note in the next run.

Use retrieved text in ways that respect the video's rights and applicable terms. This actor is an independent tool and is not affiliated with TikTok. The hero shows a frame and caption excerpt from the public demonstration video.