Video Transcript Scraper: TikTok, Instagram, YouTube & X
Pricing
from $1.60 / 1,000 transcript from subtitles
Video Transcript Scraper: TikTok, Instagram, YouTube & X
Get transcripts from TikTok, Instagram Reels, YouTube videos and Shorts, and X videos. Native subtitles first, Whisper speech-to-text when a video has none. Timestamped segments, language, author, caption and stats. Pay only for transcripts.
Pricing
from $1.60 / 1,000 transcript from subtitles
Rating
0.0
(0)
Developer
Scrape Lads
Maintained by CommunityActor stats
1
Bookmarked
34
Total users
15
Monthly active users
16 hours ago
Last modified
Categories
Security
Limited permissionsShare
What does Video Transcript Scraper do?
Video Transcript Scraper turns TikTok, Instagram Reels, YouTube videos and Shorts, and X (Twitter) videos into clean text transcripts with timestamps. Paste video links, or a creator's profile to get their latest videos, and get one row per video. Each row has the full transcript, timestamped segments, the detected language, the author, caption, duration and engagement stats.
It reads the platform's own subtitles first (TikTok's captions and YouTube's captions), which are fast and cheap. When a video has none (every Instagram Reel, X videos, and TikToks without captions), it transcribes the audio with Whisper speech-to-text. Every row says which method was used.
Run it in Apify Console, call it from the API, schedule it, or connect it to Make, Zapier, n8n, Google Sheets or your own code. Apify takes care of proxies, retries and monitoring.
What data can you extract from a video?
| 📝 Full transcript | ⏱️ Timestamped segments | 🗣️ Language |
|---|---|---|
| 📱 Platform | 👤 Author | 📰 Title and caption |
| ⏳ Duration | 🔢 Word count | 🎙️ Captions or speech-to-text |
| 👀 Views | ❤️ Likes | 💬 Comments |
| 🔁 Shares | 📅 Published at | 🖼️ Thumbnail |
Why use this video transcript scraper?
- One actor for four platforms. You get a TikTok transcript, an Instagram transcript, a YouTube transcript and an X video transcript in the same format, with no extra tools.
- Reels transcript without subtitles. Instagram doesn't publish captions, so most tools give up. This one transcribes the speech.
- Cheap when subtitles exist. Native subtitles cost less than speech-to-text, and you only pay for speech-to-text when it is actually needed.
- Pay only for transcripts. Private, deleted or silent videos are free.
Common uses:
- AI and RAG: feed creator videos into a knowledge base or a GPT, or summarize them.
- Content research: see what top creators actually say in their hooks, scripts and calls to action.
- Repurposing: turn short videos into blog posts, newsletters and captions.
- Brand and ad monitoring: search spoken mentions of products, competitors or claims.
- Accessibility and translation: start subtitles or translations from an accurate transcript.
TikTok transcript, Instagram transcript, YouTube transcript and X video transcript
All four platforms come back in the same row format. TikTok and YouTube use their own captions when they exist. An Instagram Reels transcript and an X video transcript always come from speech-to-text, because those platforms publish no subtitles.
How to get transcripts from TikTok, Instagram, YouTube and X
- Click Try for free and open the Input tab.
- Paste video URLs into Video URLs, or creators into Profiles or channels, and set how many of the latest videos to take.
- Leave Speech-to-text on "Fallback" (recommended), pick "Replace automatic captions" for the most exact wording (billed as speech-to-text for those videos), or "Never" for subtitles only.
- Click Start. A few videos take seconds.
- Download the results as JSON, CSV, Excel or HTML, or read them through the API.
Input
Everything is set on the Input tab. Example:
{"urls": ["https://www.tiktok.com/@garyvee/video/7696603359335288078","https://www.instagram.com/reel/Dd-VQPnRz0t/","https://www.youtube.com/shorts/aNI2jv7lBPQ","https://x.com/elonmusk/status/1585341984679469056"],"profiles": ["https://www.tiktok.com/@garyvee", "https://www.youtube.com/@MrBeast/shorts"],"maxVideosPerProfile": 10,"speechToText": "fallback","language": "","includeSegments": true}
| Field | What it does |
|---|---|
urls | Video links. Accepted: TikTok videos and short links, Instagram Reels and video posts, YouTube videos, Shorts and youtu.be links, and X/Twitter posts with a video. |
profiles | Creators whose latest videos you want: tiktok.com/@name, instagram.com/name, youtube.com/@channel (add /shorts for the Shorts tab). |
maxVideosPerProfile | How many of the newest videos to take per profile (Instagram serves at most 12 without a login). |
speechToText | fallback (subtitles first, speech-to-text when there are none), replaceAutoCaptions (also use speech-to-text instead of automatic captions, billed as speech-to-text for those videos), always, or never. |
language | Optional two-letter code. Picks the matching subtitle track and tells Whisper which language is spoken. |
includeSegments | Include the timestamped segments (on by default). |
maxSpeechToTextSec | Longest video sent to speech-to-text (default 1,800 s). |
Output
One row per video. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
{"url": "https://www.instagram.com/reel/Dd-VQPnRz0t/","platform": "instagram","status": "success","author": "feelgoodfoodie","caption": "As soon is fall rolls around, I love to start roasting spaghetti squash...","durationSec": 30,"language": "en","transcript": "If you want an easier way to cut spaghetti squash, microwave it first for three minutes. Then it's so much easier to cut in half...","segments": [{ "start": 0, "end": 2.5, "text": "If you want an easier way to cut spaghetti squash," },{ "start": 2.5, "end": 4.4, "text": "microwave it first for three minutes." }],"wordCount": 100,"transcriptSource": "speech-to-text","subtitleKind": null,"stats": { "views": 171362, "likes": 2831, "comments": 357, "shares": null },"fromProfile": null,"errorCode": null,"charged": true}
The Output tab has three views: Transcripts, Videos and stats, and Status per URL.
Data fields
| Field | Description |
|---|---|
url, platform, videoId | The video and where it lives (tiktok, instagram, youtube, x). |
author, authorName, authorUrl | Creator handle, display name and profile link. |
title, caption | YouTube title, or the post caption or description. |
durationSec, publishedAt, thumbnailUrl | Video length, publish date (when available), cover image. |
transcript | Full transcript as one text. |
segments | { start, end, text } with times in seconds. |
language | Two-letter language of the transcript. |
transcriptSource | subtitles (platform captions) or speech-to-text (Whisper). |
subtitleKind | creator (written by the creator) or auto (platform speech recognition). |
stats | Views, likes, comments and shares, when the platform shows them. YouTube gives views only. |
wordCount, fromProfile | Transcript length; the profile the video came from. |
status, errorCode, message | success, no_transcript or failed, with a reason such as private_or_removed, no_speech or too_long. |
charged | Whether this row was billed. |
How much does it cost to get video transcripts?
Pay per result, with no subscription:
- $2 per 1,000 subtitle transcripts (TikTok and YouTube videos that have captions).
- $5 per 1,000 speech-to-text transcripts (Instagram Reels, X videos, and videos without captions), covering the first minute of audio. Longer videos add $0.0025 per extra started minute (a 3-minute video costs $0.01).
- A small $0.005 start fee per run.
Failed, private, removed and silent videos are free. Example: 1,000 TikTok transcripts plus 1,000 Instagram Reels under a minute cost about $7. The free Apify plan's monthly credit covers hundreds of transcripts.
Which price applies depends on the Speech-to-text setting. Every row's transcriptSource says how it was made and billed (subtitles or speech-to-text):
| Speech-to-text setting | Videos with captions | Videos without captions |
|---|---|---|
| Fallback (default) | $2 per 1,000 | $5 per 1,000 |
| Replace automatic captions | $2 per 1,000 if the creator wrote the captions, $5 per 1,000 if they are automatic | $5 per 1,000 |
| Always | $5 per 1,000 | $5 per 1,000 |
| Never | $2 per 1,000 | free (skipped) |
Example: 1,000 TikToks with automatic captions cost $2 on Fallback and $5 on Replace automatic captions.
Automatic captions or speech-to-text?
TikTok and YouTube make most captions automatically. In our test of 500 recent TikTok and YouTube videos (November 2026), automatic captions missed about 1 meaningful word in 120 compared with speech-to-text. 62% of videos lost no meaningful word, but 7% lost 5% or more of their words (10% on TikTok), and YouTube's automatic captions censor swearing. Speech-to-text makes mistakes too, so neither is perfect. Replace automatic captions is for when exact wording matters (quotes, research, subtitles), at the speech-to-text price for those videos.
Tips
- Use Fallback mode for the lowest price. TikTok and YouTube captions are the cheapest source, and speech-to-text fills the gaps.
- Choose Replace automatic captions when exact wording matters more than price. Captions written by the creator are still used, at the subtitle price.
- Choose Never to get subtitles only. Videos without them come back free with
no_subtitles. - Set Language when you need a specific subtitle track (for example
es), or to help Whisper with a less common language. - Turn off Include timestamped segments if you only need the plain text.
- Lower Longest video for speech-to-text to stop long uploads from adding extra-minute charges.
Video Transcript Scraper API: use it in your app or SaaS
Add this data to your own product without building or maintaining a scraper, for example in AI note-takers, content repurposing tools, social listening dashboards or a RAG pipeline. Your backend calls the Apify API, the Actor does the scraping, proxies and retries, and you get clean JSON back. You pay per result, so your cost grows with your usage and you can price your own plans on top. It also covers what the official APIs don't: TikTok, Instagram and X have no public transcript API, and YouTube only gives captions to the video owner.
One request, results back
For small jobs, the synchronous endpoint runs the Actor and returns the dataset rows in the same HTTP response (it waits up to 5 minutes):
curl -X POST "https://api.apify.com/v2/acts/scrape-lads~video-transcript-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls":["https://www.tiktok.com/@garyvee/video/7696603359335288078","https://www.youtube.com/shorts/aNI2jv7lBPQ"],"includeSegments":false}'
Get your token under Settings > API & Integrations in Apify Console, and keep it on your server, never in a browser or mobile app.
Python and JavaScript
With the official apify-client package (pip install apify-client or npm install apify-client):
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("scrape-lads/video-transcript-scraper").call(run_input={"urls": ["https://www.tiktok.com/@garyvee/video/7696603359335288078","https://www.youtube.com/shorts/aNI2jv7lBPQ"],"includeSegments": False})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["transcript"])
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('scrape-lads/video-transcript-scraper').call({"urls": ["https://www.tiktok.com/@garyvee/video/7696603359335288078","https://www.youtube.com/shorts/aNI2jv7lBPQ"],"includeSegments": false});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((item) => console.log(item.transcript));
The API tab on this page has the same snippets for other languages, with your token filled in.
Long jobs: start a run and get a webhook
For bigger batches, start the run with POST https://api.apify.com/v2/acts/scrape-lads~video-transcript-scraper/runs and return right away. Add a webhook for ACTOR.RUN.SUCCEEDED so Apify calls your server when the run ends, then read the rows from https://api.apify.com/v2/datasets/<defaultDatasetId>/items. Add ?format=csv (or xlsx, jsonl) to get another format.
Handling results and failures in your code
Every video link you send comes back as exactly one row (a profile adds one row per video), so you can match results to your own records by url. Check status on each row: success, no_transcript or failed. Rows that are not success carry an errorCode (invalid_url, private_or_removed, no_subtitles, no_speech, too_long, budget_reached) and a readable message you can show your user. They are free (charged: false), so a bad link from your user costs you nothing.
Cost at volume
$2 per 1,000 subtitle transcripts and $5 per 1,000 speech-to-text transcripts (first minute of audio; each extra started minute adds $0.0025), plus a $0.005 start fee per run. Send many links in one run rather than one run per link: you pay the start fee once and the run reads them in parallel (5 at a time by default, up to 20 with maxConcurrency). To cap what one run can spend, pass maxTotalChargeUsd when you start it (for example ?maxTotalChargeUsd=5); the run stops cleanly at that amount. Your Apify plan sets how many runs can go at once.
Run it on a schedule
Save your input as a task, then open Schedules in Apify Console and pick how often it runs. Daily on a creator's profile picks up each new video's transcript. Each run creates a new dataset, so you can compare runs over time.
To send results somewhere automatically, use the Integrations tab: Google Sheets, Slack, Make, Zapier, n8n and webhooks are built in. AI agents such as Claude or ChatGPT can run it as a tool through the Apify MCP server.
Use it with Claude, ChatGPT or Cursor (MCP)
Add this Actor as a tool in Claude, ChatGPT, Cursor, VS Code or any other MCP client. Use this server URL:
https://mcp.apify.com?tools=scrape-lads/video-transcript-scraper
Sign in with your Apify account when asked. Then ask your agent in plain words, for example:
Get the transcripts of these TikTok, YouTube and Instagram videos:
The agent runs this Actor and reads the results for you. Runs are billed to your Apify account at this Actor's prices.
In Claude Code, add it with one command:
$claude mcp add --transport http video-transcript-scraper "https://mcp.apify.com?tools=scrape-lads/video-transcript-scraper"
Related actors
| Actor | What it does |
|---|---|
| Recipe Extractor | Turns cooking videos and recipe pages into structured recipe JSON. |
| TikTok Scraper Pro | TikTok hashtags, profiles, keyword search, comments and followers. |
| YouTube Shorts Scraper & Channel Email Finder | YouTube Shorts, channel videos and creator contact emails. |
| Instagram Scraper | Instagram posts, profiles, hashtags and comments. |
| Reddit Scraper | Reddit posts, comments, search results and users. |
FAQ, limits and support
Is it legal to scrape video transcripts? The actor only reads public videos that anyone can watch without logging in. You are responsible for how you use the data: respect copyright, platform terms and privacy laws such as the GDPR, and don't republish creators' content without permission.
Which videos can't be transcribed? Private or deleted videos, age-restricted posts, and Instagram posts with embedding turned off. Music-only videos come back as no_speech and are free.
How accurate is speech-to-text? It uses Whisper large-v3 turbo, which handles 90+ languages and is very accurate on clear speech. Background music and heavy slang lower accuracy.
Facebook and Douyin videos? Public Facebook video links are read here too and billed like any other video. Douyin links need a connection this actor does not have, so use the Douyin Transcript Scraper for those. The Facebook Video Transcript Scraper is the focused version for Facebook.
Found a problem or need a field? Open an Issue on the actor page. We fix things fast. For a custom pipeline, such as transcripts sent straight into your database or an AI summary per video, get in touch through the Issues tab.
Does TikTok, Instagram, YouTube or X have an official API? Why use this instead? YouTube's Data API only lets video owners download captions, and TikTok, Instagram and X have no public transcript API at all. This Actor reads public subtitles where they exist and transcribes the speech when they do not, for all four platforms in one format.
What are the alternatives to this Actor? You can use a browser extension one video at a time, upload files to a paid transcription service, or download and transcribe videos yourself. None of these takes a list of links across platforms. This Actor does, and you pay per transcript.
Privacy
To see which searches are useful, this Actor sends anonymous run inputs (such as keywords, hashtags and usernames) and a hashed account ID to the developer. Tokens, cookies and proxy settings are never sent. Nothing from your results is collected.