X Video Subtitle & Caption Transcript Converter avatar

X Video Subtitle & Caption Transcript Converter

Pricing

from $0.49 / 1,000 results

Go to Apify Store
X Video Subtitle & Caption Transcript Converter

X Video Subtitle & Caption Transcript Converter

Convert public X (Twitter) videos into timestamped transcripts and downloadable SRT/VTT subtitle files, using native captions when available and AI speech-to-text otherwise.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Nimbryxo-studio

Nimbryxo-studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Public X (Twitter) videos either already carry captions or need speech-to-text to become searchable text. This actor turns either case into a clean, timestamped transcript — reusing the video's own captions when they exist, and running AI speech-to-text when they don't — and can hand back ready-to-use SRT or WebVTT subtitle files, not just raw text. No login or cookies are needed.

What this actor does

  • Captions first: uses the video's own captions when the uploader or X provides them
  • Whisper AI fallback: automatically transcribes videos without captions, in any language
  • Three granularities: raw segments, sentences, or real per-word timings when available
  • Five output formats: timestamped segments, full text, both, SRT or WebVTT — with SRT/VTT files saved for download
  • Explicit outcomes: every post produces a row; posts with no transcript get transcriptAvailable: false and a clear message
  • Empty fields are omitted

Output per transcript

Each row has a type: video transcript when a transcript was produced, otherwise status.

FieldDescription
tweetUrl, tweetIdPost URL and ID
authorUsername, authorName, authorFollowersPost author details (when Include post details is on)
tweetText, publishedAtPost text and publish time (when Include post details is on)
engagementRateDerived engagement in percent (when Include post details is on)
languageDetected or requested language code
transcriptionMethodcaptions, ai or none
transcriptAvailabletrue when a transcript was produced
modelUsedWhisper model actually used for AI transcripts
modelNoteExplanation when a smaller model was substituted for memory reasons
segmentGranularitysegment, sentence or word — granularity actually applied
granularityRequestedPresent when the requested granularity could not be applied
granularityNoteExplanation when a granularity fell back to raw segments
segmentCountNumber of timed segments
segments[{index, start, end, text}]; includes real words[{word, start, end}] timings when available
fullTranscriptJoined transcript text
srt, srtUrlSRT subtitle text and a signed download link for the .srt file
vtt, vttUrlWebVTT subtitle text and a signed download link for the .vtt file
messageExplanation when no transcript could be produced
collectedAtUTC timestamp

Unavailable transcripts are status rows with transcriptAvailable: false, transcriptionMethod: "none" and a message explaining the reason. When the failure happens while resolving a profile input (instead of a post), the row carries profileUrl (and profileUsername, when known) instead of tweetUrl/tweetId.

Input

FieldTypeDefaultDescription
postUrlsarray–Required. Post links (x.com or twitter.com) that contain a video or GIF. Profile links or usernames are accepted too — the actor transcribes the profile's latest video post
profileUrlsarray–Additional profiles to transcribe (latest video post each)
transcriptionMethodstringautoauto (captions first, AI fallback), captions (skip videos without captions), ai (always Whisper)
whisperModelstringbasetiny, base, small, medium, large-v2
languagestring–Optional spoken-language hint for AI (e.g. en, es, ur); ignored for native captions
outputFormatstringsegmentssegments, fullText, both, srt, vtt
segmentGranularitystringsegmentsegment (raw cues), sentence, word (only when real word timings exist)
includeWordTimestampsbooleanfalseAdd real per-word start/end times to AI segments
includeTweetMetadatabooleantrueAttach author, post text and publish date to each row
proxyConfigurationobject–Optional, for large or repeated runs

Example: captions first, AI fallback

{
"postUrls": ["https://x.com/NASA/status/2107095768821576019"],
"transcriptionMethod": "auto",
"outputFormat": "both"
}

Example: always use AI with an English hint

{
"postUrls": [
"https://x.com/elonmusk/status/1519480761749016577",
"NASA"
],
"transcriptionMethod": "ai",
"whisperModel": "small",
"language": "en"
}

Example: SRT subtitle file

{
"postUrls": ["https://x.com/NASA/status/2107095768821576019"],
"outputFormat": "srt",
"segmentGranularity": "sentence"
}

Example: word-level timestamps

{
"postUrls": ["https://x.com/NASA/status/2107095768821576019"],
"transcriptionMethod": "ai",
"segmentGranularity": "word",
"includeWordTimestamps": true
}

Example record

{
"type": "video transcript",
"tweetUrl": "https://x.com/NASA/status/2107095768821576019",
"tweetId": "2107095768821576019",
"authorUsername": "NASA",
"authorName": "NASA",
"language": "en",
"transcriptionMethod": "ai",
"transcriptAvailable": true,
"modelUsed": "base",
"segmentGranularity": "segment",
"segmentCount": 1,
"segments": [
{
"index": 0,
"start": 0.0,
"end": 11.0,
"text": "One, booster ignition, and liftoff, the crew of Artemis II, now bound for the moon, humanity's next great voyage begins."
}
],
"fullTranscript": "One, booster ignition, and liftoff, the crew of Artemis II, now bound for the moon, humanity's next great voyage begins.",
"publishedAt": "2026-10-05T13:09:13+00:00",
"collectedAt": "2026-10-06T18:54:33+00:00"
}

Whisper models and memory

ModelSpeedAccuracyRecommended run memory
tinyFastestLowest1024 MB
baseFastGood (default)1024 MB
smallMediumBetter2048 MB
mediumSlowHigh4096 MB
large-v2SlowestBest8192 MB

Long videos are split into 10-minute chunks automatically, so there is no video length limit. The actor runs with 8192 MB by default and never below 2048 MB. If the selected model does not fit the available memory, it automatically uses the next smaller model and records the substitution in modelNote instead of crashing. Caption-only runs have no meaningful memory requirement.

Use cases

  • Content accessibility — produce subtitles (SRT/VTT) for public videos
  • Media monitoring — transcribe interviews, press clips and announcements into searchable text
  • Research — build text corpora from public video content for analysis
  • Newsrooms — quote-check and index video statements quickly
  • Podcast and clip workflows — repurpose spoken content into articles or show notes
  • Social listening — combine transcripts with engagement data to track narratives

FAQ

Do I need an account or cookies? No. There is no cookie input; public posts, captions and media are read without login.

What happens when a video has no captions? With transcriptionMethod: auto (the default) the actor transcribes the audio with Whisper, so you still get a transcript. With captions it emits a row with transcriptAvailable: false and a message.

Can I transcribe multiple videos in one run? Yes — add links to postUrls, or point the actor at profiles and it transcribes the latest video post of each.

Which output format should I choose? segments for timestamped lines, fullText for one clean block of text, both for both, and srt/vtt when you need subtitle files (both the subtitle text and a signed download link are returned).

When does word-level granularity work? Word rows are emitted only when real per-word timings exist — Whisper can produce them, and some X captions include them. When they are missing, the row falls back to raw segments and explains why in granularityNote. Timings are never invented.

Can I transcribe videos in other languages? Yes — native captions work in any language X provides them; for AI, add a language hint (for example es, fr, ur) or leave it empty to detect automatically.

Does this support Twitter Spaces? No — this actor handles video and GIF posts only, not live audio Spaces.

Why is a row missing segments or fullTranscript? outputFormat controls which fields are filled, and unavailable transcripts never contain transcript fields — they are status rows with a message.

Can a deleted or protected post be transcribed? No, only videos on public, currently-live posts can be read.

Is this affiliated with X? No. This is an independent tool and is not affiliated with, endorsed by, or sponsored by X Corp.