TikTok & YouTube Transcript API - Video to Text, Captions & OCR
Pricing
from $10.00 / 1,000 video transcripts
TikTok & YouTube Transcript API - Video to Text, Captions & OCR
Turn TikTok and YouTube videos and Shorts into text. Uses captions when present and speech recognition when not, so every video gets a transcript. Adds on-screen text (OCR), timed segments and the opening hook.
Pricing
from $10.00 / 1,000 video transcripts
Rating
0.0
(0)
Developer
Mayowa Ogedengbe
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
TikTok & YouTube Transcript Scraper
Get a clean transcript from any TikTok or YouTube video or Short, and the field other transcript tools miss: the on-screen text burned into the frames. Paste video URLs (or a channel or profile URL) and get back the spoken words, the words shown on screen, and a hook field for the opening seconds. No login, no cookies, no API key.
This Actor uses the platform caption when a video has one, and falls back to on-device speech recognition when it does not, so it returns a transcript even for videos that have no captions at all.
Sample output (real run)
| Platform | Video | Length | Source | Words | Hook (first seconds) |
|---|---|---|---|---|---|
| YouTube | 3Blue1Brown: But what is a neural network? | 18:40 | caption | 3,357 | "This is a 3." |
| TikTok | @cnn video 7688426985072119054 | 2:04 | caption | about 230 | "The girls told me he. He went taking a walk around the pond..." |
Each row carries the full text, timed segments (start, end, text), the opening hook, title, author, views, likes and duration. Videos without captions get a transcript from speech recognition, and transcript.source tells you which.
Why this one
| This Actor | Typical transcript Actor | |
|---|---|---|
| Videos with no captions | Transcribed by speech recognition | Empty row or error |
| TikTok and YouTube in one run | Yes | Usually one platform |
| On-screen text (OCR) | Optional | No |
| Channel or playlist URL | Expanded to its videos | Sometimes |
| Price per 1,000 videos | $5, no start fee | Varies |
What it costs: 1,000 transcripts = $5. A 200-video channel = $1.
Pricing
Pay-per-event pricing — you only pay for results you actually receive:
- Video transcript (caption) — charged once per video returned from the platform's own caption track. Cheapest option, and the default (Transcript source → Captions only).
- Speech recognition — charged once per video transcribed by on-device speech-to-text. Used only when you select Captions + speech recognition and the video has no caption. It downloads and processes the audio, so it costs more than a caption.
- On-screen text (OCR) — charged once per video when you turn on Read on-screen text. It downloads the video and runs image recognition, the most expensive option, billed on top of the transcript.
- Actor start — a small per-run start fee.
To keep costs lowest, leave Transcript source on Captions only and turn on speech recognition or OCR only when you need them. Current per-event rates are shown in the Pricing section of this Actor's page.
What this Actor does
- Transcribes TikTok and YouTube videos and Shorts in one run.
- Uses the caption track when present (fast and exact), and speech recognition when the video has no caption.
- Reads the on-screen text with OCR, the captions and titles baked into the video that no subtitle file contains.
- Returns a hook field: the words from the opening seconds, which is what creative teams sort on.
- Gives timed segments, full text, language, author, view count and duration.
- Expands a YouTube channel or playlist URL into its recent videos.
- Exports to JSON, CSV, Excel, or straight to the Apify API.
What data can you extract?
| Group | Fields |
|---|---|
| Video | platform, id, url, title or caption text, duration, thumbnail |
| Author | name, profile URL, channel id |
| Engagement | view count, like count, comment count, share count |
| Transcript | source (caption or speech recognition), language, full text, hook, timed segments |
| On-screen text | text read from frames, per frame and combined |
How to get a transcript
- Paste TikTok or YouTube video URLs into Video URLs. You can also paste a YouTube channel or playlist URL.
- Leave Preferred language as
enor set another two-letter code, or clear it to auto-detect. - Turn on Read on-screen text if you want the words shown in the frames, not just the spoken ones.
- Click Start, then export the results as JSON, CSV or Excel.
Where the transcript comes from
Every row says how it was produced in the transcript.source field:
- caption: the video's own caption track, which is exact and fast.
- asr: on-device speech recognition, used when the video has no caption.
On-screen text is separate. Short-form video often carries the message as text burned into the frame rather than spoken aloud, so the on-screen text pass reads those words with OCR and returns them per frame and combined.
How much does it cost?
Pay-per-event pricing, so you pay for the results you receive.
| Event | Price |
|---|---|
| Video transcript | $0.005 |
| On-screen text | $0.04 |
A transcript for 1,000 videos costs about $5. Adding on-screen text for those 1,000 videos costs about $40 more, because reading the frames is heavier than reading a caption. Tier discounts lower both for higher-volume plans, and the Apify free plan includes monthly credits to test the output.
Input example
{"startUrls": [{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" },{ "url": "https://www.tiktok.com/@cnn/video/7688426985072119054" }],"includeOnScreenText": true,"language": "en"}
Output example
{"platform": "tiktok","id": "7688426985072119054","url": "https://www.tiktok.com/@cnn/video/7688426985072119054","author": { "name": "cnn" },"durationSecs": 124,"viewCount": 18400,"transcript": {"source": "caption","language": "eng-US","wordCount": 246,"hook": "The girls told me he. He went taking a walk around the pond","text": "The girls told me he. He went taking a walk around the pond, but I...","segments": [{ "start": 0.5, "end": 3.74, "text": "The girls told me he." }]},"onScreenText": {"text": "CALEB FLYNN'S DAUGHTERS APPEARED 'NERVOUS' AFTER SPEAKING WITH HIM","frames": [{ "time": 0.5, "text": "CALEB FLYNN'S DAUGHTERS APPEARED" }]}}
Who uses this Actor
- Creative and content teams reverse-engineering what works, and sorting on the hook.
- Agencies building swipe libraries of ads and top-performing videos.
- AI teams that need short-form video as clean text for retrieval and training.
- Researchers and analysts studying trends across TikTok and YouTube.
Related scrapers
- TikTok Transcript Scraper for TikTok only.
- YouTube Shorts Transcript Scraper for Shorts only.
- An Instagram Reels Transcript Scraper is on the way.
Frequently asked questions
Do I need to log in or supply an API key?
No. There is no login, cookie or API key. You only need an Apify account.
What if a video has no captions?
The Actor runs speech recognition on the audio and returns that transcript, marked with source: asr. If a video has neither speech nor captions, turn on on-screen text to read what is shown in the frames.
Which languages are supported?
Captions come back in the language the video provides. Speech recognition auto-detects the language, or you can set a preferred one. On-screen text works for any language the frames show.
Can I transcribe a whole channel?
Yes. Paste a YouTube channel or playlist URL and it expands into the recent videos, up to your max videos limit.
What formats can I export?
JSON, CSV, Excel, XML and RSS, plus the Apify API and integrations such as Google Sheets, Make and Zapier.
Use it as an API
Run it from your own code and get the results back in one call. Replace YOUR_TOKEN with your Apify API token.
curl -X POST "https://api.apify.com/v2/acts/headply~tiktok-youtube-transcript-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url": "https://www.youtube.com/watch?v=aircAruvnKk"}, {"url": "https://www.tiktok.com/@cnn/video/7688426985072119054"}], "maxVideos": 100}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run_input = {'startUrls': [{'url': 'https://www.youtube.com/watch?v=aircAruvnKk'},{'url': 'https://www.tiktok.com/@cnn/video/7688426985072119054'}],'maxVideos': 100}run = client.actor("headply/tiktok-youtube-transcript-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
It also works from Make, Zapier, n8n, Google Sheets and as a tool for AI agents through the Apify MCP server.
More data tools from the same developer
- Threads Scraper & API: posts, reply trees, profiles and keyword search from Threads
- Yelp Scraper & API: every business in a city with phones, websites and all reviews
- Google Trends Scraper & API: hundreds of keywords on one scale, daily history
- Airbnb & Vrbo Scraper: listings, calendars, occupancy and revenue
- Jumia Scraper & API: prices and sellers across 8 African countries