TikTok Transcript Scraper: Captions + AI Speech-to-Text
Pricing
from $1.50 / 1,000 video transcript rows
TikTok Transcript Scraper: Captions + AI Speech-to-Text
Extract TikTok video transcripts as clean text and timestamped segments. Uses TikTok captions and AI speech-to-text when none exist. Export CSV, Excel, JSON, XML.
Pricing
from $1.50 / 1,000 video transcript rows
Rating
0.0
(0)
Developer
ParseForge
Maintained by Apify PartnerActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share

🎙️ TikTok Transcript Scraper
🚀 Export TikTok video transcripts in seconds. Paste video links and get the spoken words of every video as clean text plus timestamped segments, next to 31 columns of video, author and engagement data. When TikTok has no captions for a video, AI speech-to-text listens to the audio and fills the gap. 5 videos take about 5 seconds.
This Actor opens each TikTok video the way a logged out visitor does, reads TikTok's own caption track when the video has one, and turns it into a plain transcript and a list of phrases with start and end seconds. The text sits directly in the dataset, so there are no subtitle files to download and parse. For videos TikTok never captioned, the Actor sends the audio to a speech-to-text model and returns the same structure, with the detected language.
That second step matters more than it sounds. In our tests only about a third of TikTok videos carried captions: music clips, short clips and videos using a licensed sound usually have none. Caption-only tools return empty rows for those. Every row here says where its text came from (TikTok auto-captions, TikTok creator captions or AI transcription), so you always know how far to trust it.
| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Content marketers and social media managers | Turn winning TikToks into blog posts, newsletters and scripts |
| Brand and trend analysts | See what creators actually say about a product or topic |
| AI and data teams | Feed clean, timestamped TikTok speech into LLM and RAG pipelines |
| Agencies and creators | Study the hooks and scripts of top performing videos in a niche |
| SEO and keyword researchers | Mine spoken keywords from high view videos |
| Researchers and journalists | Archive and quote spoken content from public TikTok accounts |
📋 What the TikTok Transcript Scraper does
- Accepts TikTok video links, one per line: full links, short
vm.tiktok.comshare links or bare video IDs. Duplicates are processed once. - Loads each public video page and reads the video, author, stats and sound data TikTok ships with it.
- Downloads TikTok's caption track when one exists (auto-generated or written by the creator) and converts it to a transcript and timestamped segments.
- For videos without captions, runs AI speech-to-text on the audio and returns the transcript, segments and detected language (mode TikTok captions, AI transcription when a video has none).
- Emits one row per video with the transcript first and the engagement stats beside it, and one free error row for every link that is deleted, private or region locked.
💡 Why it matters: a transcript tool is only as good as its coverage. TikTok publishes captions for a minority of videos, so a caption-only scraper silently hands back empty rows for most of a typical list. Here every video gets a transcript attempt, and the
transcriptSourcecolumn tells you which engine produced it.
🎬 Full Demo (🚧 Coming soon)
📊 Output
Each dataset row is one TikTok video. 31 columns per row.
| Field | Type | Description |
|---|---|---|
🖼 imageUrl | string | Video cover image |
📝 caption | string | The creator's post text, with hashtags and mentions |
🔗 url | string | Canonical video URL |
🆔 id | string | TikTok video ID |
🗣 transcript | string | Full spoken transcript as one clean text, or N/A when the video has no speech |
🎙 transcriptSource | string | TikTok auto-captions, TikTok creator captions, AI transcription or None |
🌐 transcriptLanguage | string | Language of the transcript (ISO 639-1, for example en, es) |
🔢 transcriptWordCount | number | Words in the transcript |
ℹ️ transcriptNote | string | Why a transcript is missing, when it is (No speech detected, TikTok has no captions for this video...) |
💬 hasTikTokCaptions | string | Yes when TikTok itself captioned the video |
🗂 captionLanguages | array | Caption tracks TikTok offers, such as eng-US |
⏱ durationSeconds | number | Video length |
📅 publishedAt | string | Upload date and time (ISO 8601) |
👤 authorUsername | string | Creator handle |
🪪 authorName | string | Creator display name |
✅ authorVerified | string | Yes or No |
👥 authorFollowers | number | Creator's follower count |
🔗 authorUrl | string | Creator profile URL |
👁 views | number | Play count |
❤️ likes | number | Like count |
💭 comments | number | Comment count |
🔁 shares | number | Share count |
🔖 saves | number | Times saved to favourites |
🔤 captionTextLanguage | string | Language TikTok detected for the post text |
🎵 musicTitle | string | Sound used in the video |
🎤 musicAuthor | string | Author of the sound |
🎧 isOriginalSound | string | Yes when the creator recorded the sound |
#️⃣ hashtags | array | Hashtags in the post |
⏲ segments | array | Phrases with start, end (seconds) and text |
🕒 scrapedAt | string | When the row was collected |
❌ error | string | Populated only on failed rows |
Real sample records
Three rows from a verification run: a video with TikTok auto-captions, a video with no captions transcribed by AI, and a longer captioned video.
{"imageUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-alisg-p-0037/oEfzYdICCJBwEAKi8ViqnEAUALANIwB6CLAKTA~tplv-tiktokx-origin.image?dr=9636&x-expires=1790438400&x-signature=WaPBrTXqbKKZSxiuCVI0QMLhp4A%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5","caption": "How cute 😍 Does anyone else have a staffy that use to be this small??? #staffy #puppy #adorable #cute #vet","url": "https://www.tiktok.com/@albionparkgerringongvet/video/7458054754124549384","id": "7458054754124549384","transcript": "Sweet, yummy. Oh, you're too cute.","transcriptSource": "TikTok auto-captions","transcriptLanguage": "en","transcriptWordCount": 6,"transcriptNote": "N/A","hasTikTokCaptions": "Yes","captionLanguages": ["eng-US"],"durationSeconds": 21,"publishedAt": "2025-01-09T23:01:36.000Z","authorUsername": "albionparkgerringongvet","authorName": "Albion Park and Gerringong Vet","authorVerified": "No","authorFollowers": 17000,"authorUrl": "https://www.tiktok.com/@albionparkgerringongvet","views": 7600000,"likes": 1200000,"comments": 7952,"shares": 132600,"saves": 76607,"captionTextLanguage": "en","musicTitle": "Come and Get Your Love","musicAuthor": "Redbone","isOriginalSound": "No","hashtags": ["staffy","puppy","adorable","cute","vet"],"segments": [{"start": 7,"end": 7.8,"text": "Sweet,"},{"start": 9.16,"end": 9.96,"text": "yummy."},{"start": 14.92,"end": 17.42,"text": "Oh, you're too cute."}],"scrapedAt": "2026-09-24T16:51:55.470Z","error": null}
{"imageUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/osPmQaUGeRkKsEGfQyALMPswIeK4ofIFdCL3PA~tplv-tiktokx-origin.image?dr=9636&x-expires=1790438400&x-signature=LGPpS2Gz0j2JLr2Oe9btZwdkp9E%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5","caption": "Watch these little fluffballs play, cuddle, and melt hearts instantly They are looking for loving families who can give them a safe and happy forever home Sweet, playful, and full of love - these babies are ready to bring joy into someone's life Serious adopters only - message for details #shitzupuppies #Shitzu #shihtzupuppy #PuppyLove #shitzulovers @Ignacio González @sandee❤️👑 @LollyKaye @Maggie @Kristal @GiGi @Lilo @Brooke @Michele Araújo @consuelo lozano @Evie 🌻","url": "https://www.tiktok.com/@shitzupuppies11/video/7642374094767279391","id": "7642374094767279391","transcript": "That's better, baby, there's a big smile. Let's all sit together for a while. You calm down, baby, you settle down, just to keep smiling, there's no need to frown.","transcriptSource": "AI transcription","transcriptLanguage": "en","transcriptWordCount": 30,"transcriptNote": "N/A","hasTikTokCaptions": "No","captionLanguages": [],"durationSeconds": 20,"publishedAt": "2026-05-21T15:54:51.000Z","authorUsername": "shitzupuppies11","authorName": "Shitzupuppies","authorVerified": "No","authorFollowers": 309,"authorUrl": "https://www.tiktok.com/@shitzupuppies11","views": 18700,"likes": 369,"comments": 53,"shares": 95,"saves": 35,"captionTextLanguage": "en","musicTitle": "original sound","musicAuthor": "Shitzupuppies","isOriginalSound": "Yes","hashtags": ["shitzupuppies","shitzu","shihtzupuppy","puppylove","shitzulovers"],"segments": [{"start": 1.46,"end": 6.85,"text": "That's better, baby, there's a big smile."},{"start": 6.85,"end": 10.96,"text": "Let's all sit together for a while."},{"start": 10.96,"end": 19.99,"text": "You calm down, baby, you settle down, just to keep smiling, there's no need to frown."}],"scrapedAt": "2026-09-24T16:51:57.881Z","error": null}
{"imageUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast2a-p-0037-euttp/a2dbd6095bc141b1893d396f8f29b152_1708531074~tplv-tiktokx-origin.image?dr=9636&x-expires=1790438400&x-signature=D9McojRi1LMpaG8MRIyQWXjK%2Fx8%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5","caption": "wanna work work with us? 🤔 #fyp #prague #praha #job #protebe","url": "https://www.tiktok.com/@apifylife/video/7338085038258457889","id": "7338085038258457889","transcript": "Hi, we're appetite. Of course it took us half a year to get what we actually do. Basically we were about the web scraping and browser animation tools. We're appetite. Of course. We have the best office in the center of crack. We're appetite. Of course we have a limited access to snacks, ice cream, why drinks, fruits and sauvagee. We're apple pie. Of course you can work anytime or anywhere. We're apple pie. Of course. We get free lunches daily. We're apple pie and we're hiring! Check out this link to see all the open positions!","transcriptSource": "TikTok auto-captions","transcriptLanguage": "en","transcriptWordCount": 97,"transcriptNote": "N/A","hasTikTokCaptions": "Yes","captionLanguages": ["eng-US"],"durationSeconds": 32,"publishedAt": "2024-02-21T15:57:51.000Z","authorUsername": "apifylife","authorName": "apifylife","authorVerified": "No","authorFollowers": 192,"authorUrl": "https://www.tiktok.com/@apifylife","views": 15200,"likes": 267,"comments": 18,"shares": 43,"saves": 117,"captionTextLanguage": "en","musicTitle": "original sound","musicAuthor": "apifylife","isOriginalSound": "Yes","hashtags": ["fyp","prague","praha","job","protebe"],"segments": [{"start": 0,"end": 1.88,"text": "Hi, we're appetite. Of course"},{"start": 1.88,"end": 4.12,"text": "it took us half a year to get what we actually do."},{"start": 4.12,"end": 5.44,"text": "Basically we were about the web"},{"start": 5.44,"end": 7.06,"text": "scraping and browser animation tools."},{"start": 7.24,"end": 8.56,"text": "We're appetite. Of course."},{"start": 8.56,"end": 10.4,"text": "We have the best office in the center of crack."},{"start": 10.4,"end": 11.46,"text": "We're appetite."},{"start": 11.48,"end": 13.88,"text": "Of course we have a limited access to snacks,"},{"start": 13.88,"end": 15.34,"text": "ice cream, why"},{"start": 16.68,"end": 19.98,"text": "drinks, fruits and sauvagee."},{"start": 20.24,"end": 21.08,"text": "We're apple pie."},{"start": 21.08,"end": 23.84,"text": "Of course you can work anytime or anywhere."},{"start": 23.84,"end": 27.1,"text": "We're apple pie. Of course. We get free lunches daily."},{"start": 27.52,"end": 29.22,"text": "We're apple pie and we're hiring!"},{"start": 29.56,"end": 31.66,"text": "Check out this link to see all the open positions!"}],"scrapedAt": "2026-09-24T16:51:55.441Z","error": null}
Notice the third record: TikTok's own auto-captions heard the company name "Apify" as "appetite" and "apple pie". The AI transcription for every video mode exists for exactly this case, when you need the most accurate text rather than TikTok's captions.
✨ Why choose this Actor
- The transcript is in the row. Plain text in
transcriptand phrase-level timing insegments, right in the dataset. No.vttfiles to download from a separate store and parse before you can use them. - Coverage beyond TikTok's captions. TikTok captioned roughly one video in three in our tests. AI speech-to-text transcribes the rest from the audio, with the language detected automatically (the sample runs included Spanish audio on an English captioned post).
- You always know the source.
transcriptSourceseparates TikTok auto-captions, creator-written captions and AI transcripts, andtranscriptNoteexplains every empty transcript. - Video context on every row. Views, likes, comments, shares, saves, publish date, duration, author, followers, sound and hashtags come with each transcript, so you can rank what was said by how it performed.
- Any link format. Full links,
vm.tiktok.comshare links and bare IDs, deduplicated by video ID. - Honest failures, never charged. Deleted, private and region locked videos come back as error rows with the reason, and error rows are free.
- Fast. Plain HTTP against TikTok's server rendered pages, several videos at a time. The 5 video verification run finished in about 5 seconds, and 34 caption-only videos took 11 seconds.
- No login and no cookies from you. Only public videos, read the way a logged out visitor sees them.
📈 How it compares to alternatives
| This Actor | Caption-only transcript tools | File-based transcript extractors | Manual copying | |
|---|---|---|---|---|
| Transcript text inside the dataset | Yes | Varies | No, links to .vtt/.txt files | Yes |
| Timestamped segments | Yes, per phrase | Sometimes | Inside the .vtt file | No |
| Videos without TikTok captions | AI transcription | Empty row | AI transcription | Type it yourself |
| Source of each transcript labelled | Yes | No | Partly | N/A |
| Detected language | Yes | Caption track language | Yes | N/A |
| Engagement and author data | 31 columns | Varies | Yes | No |
| Short links and bare IDs | Yes | Varies | Full URLs | N/A |
| Photo posts (slideshows) | Free error row, no audio | Varies | No text | N/A |
The public page exposes only the original language caption track. Translated caption tracks are not published to logged out visitors, so this Actor does not return them. AI transcripts reflect whatever can be heard, which can include the lyrics of a song playing in the video.
🚀 How to use
- Create a free Apify account. New accounts include $5 of free platform credit, which is plenty to try this out: console.apify.com/sign-up
- Open the Actor and go to the Input tab.
- Paste TikTok video links, one per line:
https://www.tiktok.com/@apifylife/video/7338085038258457889https://vm.tiktok.com/...share links work too
- Set how many videos to process with Max Items.
- Pick a Transcript source: TikTok captions with AI fallback (default), TikTok captions only, or AI for every video.
- Click Start. The log prints each video's word count and source as it lands.
- Open the Dataset tab and download as CSV, Excel, JSON or XML, or pull it from the API.
{"videoUrls": ["https://www.tiktok.com/@apifylife/video/7338085038258457889","https://www.tiktok.com/@albionparkgerringongvet/video/7458054754124549384"],"maxItems": 100,"transcriptionMode": "SUBTITLES_THEN_AI","includeSegments": true}
💼 Business use cases
Content repurposing at scale
Pick the 50 best performing videos of a creator or a campaign, run them through the Actor and hand transcript straight to your writers or an LLM. Each row keeps views, likes and shares, so you repurpose what actually worked instead of what was merely posted.
Hook and script research
The first segments of each video are its hook. Sort by views, read the first two or three entries of segments and you have a swipe file of openings that stopped the scroll in your niche, with the exact second each line lands.
Brand and product monitoring
Collect the videos that mention your product and read what creators say out loud, not only what they write in the caption. transcriptLanguage lets you route Spanish, Portuguese or German videos to the right team, and authorFollowers separates big voices from small ones.
AI and search pipelines
Clean text plus timed segments is the shape embedding and retrieval pipelines want. Load segments into a vector store and link each answer back to the second of the video it came from, with url and publishedAt for citations.
🔌 Automating TikTok Transcript Scraper
- Make and Zapier: trigger a run when a new TikTok link lands in a sheet or a form, then push the transcript into Notion, Airtable or your CMS.
- Slack: post the transcript of every new competitor video into a channel for the content team.
- Airbyte: sync datasets into Snowflake, BigQuery or Postgres and join them with your social analytics.
- GitHub: schedule runs from Actions and keep versioned transcript archives.
- Google Drive: drop a CSV or Google Sheet into a shared folder after every run.
- API and webhooks: every run emits a dataset ID. Subscribe to the run succeeded webhook and pull the rows into any system you already run.
🌟 Beyond business use cases
- Research: study language, misinformation or public health messaging in short form video with searchable, timestamped text.
- Personal: save the recipe, the workout or the tutorial someone explained in a video as text you can actually search.
- Non-profit: monitor how causes and campaigns are discussed on TikTok, in several languages.
- Experimentation: build a small corpus of spoken TikTok language for classification, summarisation or topic modelling experiments.
🤖 Ask an AI assistant about this scraper
Paste this into ChatGPT, Claude or any assistant to get help designing your run:
I am using the ParseForge TikTok Transcript Scraper on Apify. It accepts TikTok video URLs and returns one row per video with 31 fields, including transcript (plain text), segments (start, end, text), transcriptSource (TikTok auto-captions, TikTok creator captions, AI transcription or None), transcriptLanguage, views, likes, comments, shares, saves, publishedAt, durationSeconds, authorUsername, authorFollowers, musicTitle and hashtags. TikTok captions exist for only part of the videos; AI transcription covers the rest. Help me design a run and an analysis to answer this question: [your question here].
❓ Frequently Asked Questions
🔐 Do I need a TikTok account or cookies? No. The Actor reads public video pages exactly as a logged out visitor sees them. Private videos cannot be read.
🗣 What is the difference between captions and AI transcription?
Captions are the text track TikTok publishes with a video, either generated automatically or written by the creator. AI transcription is produced by this Actor from the video's audio when you choose a mode that includes it. Both come back in the same transcript and segments columns, labelled by transcriptSource.
📉 Why do so many videos have no TikTok captions? TikTok only captions part of its catalogue. In our tests about one video in three had a caption track. Music and dance clips, very short clips and videos using a licensed sound are the most likely to have none. That is why the default mode adds AI transcription.
🔇 Why is a transcript N/A?
Read transcriptNote: the video has no speech (No speech detected), TikTok has no captions and AI transcription was not requested, or the audio could not be retrieved. The row still carries all the video data.
🎵 Can song lyrics appear in an AI transcript? Yes. Speech-to-text transcribes what can be heard, and a song playing in the video is part of that. TikTok's own captions usually skip music.
🌍 Which languages are supported? TikTok captions come in the video's original language. AI transcription detects the spoken language automatically and transcribes it as spoken, without translating.
⏱ Are the timestamps exact? For TikTok captions they are TikTok's own timings. For AI transcripts they are the model's estimates and can drift by a second or so.
🖼 Do photo posts (slideshows) work? Photo posts have no spoken audio, so they return a free error row explaining that there is nothing to transcribe.
🌐 Do I need a proxy? No for normal runs: TikTok video pages load without one. For very large batches, or if a video is locked to a region, switch on Apify Proxy and pick a country.
⏳ How long can a video be?
TikTok captions work for any length. AI transcription handles videos up to 15 minutes; longer videos keep their captions if TikTok has them and are otherwise flagged in transcriptNote.
💵 How much does it cost? It is pay per event. Each video row costs $0.003 on the free Apify plan tier and less on higher tiers (down to $0.0005), with the TikTok captions included. AI speech-to-text, only when a video has no captions or you ask for it, adds $0.02 per started minute of video (down to $0.009). Error rows are free, and there is no run-start fee. Choose TikTok captions only to pay for the video rows alone.
📥 What export formats are supported? CSV, Excel, JSON, XML, plus direct API access and integrations with Make, Zapier, Airbyte, Slack, Google Drive and more.
⚖️ Is this legal? The Actor reads publicly available videos. You are responsible for how you use the transcripts, including copyright, privacy law and TikTok's terms where they apply to you.
🔌 Integrate with any app
Every run writes to an Apify dataset reachable through a REST API, so the output drops into whatever you already use. Native integrations cover Make, Zapier, Airbyte, Slack, Google Drive, GitHub, Google Sheets and webhooks, and the API covers everything else.
🔗 Recommended Actors
- TikTok Profile Scraper - Bio, Counts & Videos - collect a creator's video links, then transcribe them here.
- TikTok Comments Scraper - what viewers answered to what was said.
- TikTok Hashtag Scraper - View Counts & Top Posts - find the top videos of a hashtag to feed into this Actor.
- YouTube Transcript Scraper - Timestamped Segments - the same timestamped transcripts for YouTube videos.
- Instagram Reel Scraper - Views, Audio & Captions - short form video data from Instagram.
💡 Pro Tip: browse the complete ParseForge collection.
🆘 Need Help? Open our contact form
⚠️ Disclaimer: independent tool, not affiliated with TikTok or ByteDance; only publicly available data.