Pull captions from any TikTok video
POST a TikTok URL — full share link or vm.tiktok.com short link — and get a
JSON transcript with millisecond-precision timestamps. Purpose-built for viral hook analysis,
trend research, and repurposing at scale.
Three steps to a transcript
vm.tiktok.com short link — both work. segments for every line. POST /api/tiktok/transcript
Base URL: https://api.transcriptmagic.com. Authenticate with a Bearer token in the Authorization header.
curl -X POST https://api.transcriptmagic.com/api/tiktok/transcript \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.tiktok.com/@charlidamelio/video/7123456789012345678"}' import requests
response = requests.post(
"https://api.transcriptmagic.com/api/tiktok/transcript",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"url": "https://www.tiktok.com/@charlidamelio/video/7123456789012345678"},
)
data = response.json()
print(data["transcript"]) const response = await fetch("https://api.transcriptmagic.com/api/tiktok/transcript", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ url: "https://www.tiktok.com/@charlidamelio/video/7123456789012345678" }),
});
const data = await response.json();
// The opening 3 seconds — the viral hook:
console.log(data.segments.slice(0, 2)); What you get back
A compact JSON object sized for short-form content — typically 5–30 segments for a standard TikTok.
{
"transcript": "Wait, you've been doing this wrong your whole life. Here's what nobody tells you about morning routines...",
"segments": [
{
"text": "Wait, you've been doing this wrong your whole life.",
"startMs": "0",
"endMs": "2800",
"startTimeText": "0:00"
},
{
"text": "Here's what nobody tells you about morning routines.",
"startMs": "2800",
"endMs": "5640",
"startTimeText": "0:02"
}
],
"credits": 2998
} transcript Full spoken content joined as a single stringsegments Line-level array with startMs, endMs, startTimeTextcredits Your remaining credit balance after this callWhat the API handles
Standard videos
Any public TikTok at tiktok.com/@user/video/…. Works across the full length range from 3 seconds to 10 minutes.
Short share links
vm.tiktok.com/… redirects are auto-resolved server-side — paste the link you copied from the share sheet and go.
Voiceovers & dialogue
Any spoken audio is transcribed: creator voiceovers, dialogue, interviews, on-camera talking, and green-screen reactions.
Burned-in captions
When TikTok exposes creator-added captions, those come back too — useful for videos where the creator leaned on text-on-screen instead of voiceover.
One credit per call
Every successful API request uses 1 credit. Monthly credits roll over, cancel anytime.
- SRT exports
- All platforms supported
No credit card required
- Download HD videos
- SRT, TXT, PDF exports
- AI summaries
- Talk to transcripts
- Repurpose content
- 40+ language translations
Credits rollover. Cancel anytime
- All Plus features
- Batch processing
Credits rollover. Cancel anytime
Running 10K+ videos a month? Email [email protected] for volume pricing.
What developers build with it
Viral hook research
Pull the first 3 seconds of top-performing videos across a niche. Build a library of winning hooks your team can study.
Trend monitoring
Ingest daily batches of trending videos, extract language, and alert when new phrases spike.
Competitor tracking
Watch what competitors are saying across their TikTok catalog and surface patterns in their messaging.
Cross-platform repurposing
Turn a TikTok into a YouTube Short script, an Instagram Reel caption, and a tweet thread — all from one API call.
Influencer analysis
Transcribe a creator's back catalog, run it through an LLM, and surface topic mix, brand mentions, and tonal shifts.
Ad-copy pipelines
Feed winning TikTok scripts into an LLM prompt to draft ad variants that match proven tone and structure.
Questions developers ask
Do short links like vm.tiktok.com work?
Yes. Any TikTok URL that resolves to a public video works — full @user/video/ID URLs, vm.tiktok.com short links, and desktop share links. The API follows the redirect for you.
Can the API transcribe TikTok Stories or private accounts?
No. The API can only fetch public videos. Stories, private accounts, and friends-only content are not supported because the upstream data simply isn't reachable.
Does it work on TikTok slideshows (photo posts)?
Slideshow posts return any caption text TikTok has indexed, but there's no spoken audio track to transcribe. For video posts with voiceovers, dialogue, or spoken captions, the API returns the full timed transcript.
Are non-English videos supported?
Yes. The API returns the caption track TikTok exposes — which covers every major language creators post in. If you need translation, run the transcript through an LLM after fetching.
Are the timestamps accurate enough for hook analysis?
Yes. Segments include millisecond-precision startMs and endMs. That's what makes this API useful for scripting viral-hook research, hook-length A/B tests, and jump-to-moment dashboards.
What about region-locked videos?
If the video is viewable somewhere, our upstream infrastructure can usually fetch the captions regardless of your client's geography. Truly blocked-everywhere videos return a 400.