# Video URL to Text Transcriber

> Video to text from a link: transcribe TikTok, Instagram Reels, X, Facebook or YouTube videos. Get timestamps and SRT or VTT subtitles. No API key.

URL: https://cliqtomedia.com/actors/video-to-text/

Category: Video, audio & streaming · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Paste a video link and get the spoken words as text. It works with TikTok, Reels, X, Facebook and YouTube. You also get timestamps and subtitles.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `https://archive.org/download/gettysburg_johng_librivox/getty…` in Video or audio links. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Video URL to text with timestamps. Paste public TikTok, Instagram Reels, X, Facebook or YouTube links, or direct MP3/MP4 files, and get the transcript, timed segments and SRT or VTT subtitles.

- Input: up to 100 links per run. A link can be a video post page (TikTok, Instagram Reel, X post, Facebook video, YouTube video or Short, SoundCloud track and other public video sites) or a direct media file (MP3, MP4, M4A and other common audio and video formats).
- Output: the transcript `text`, timed `segments`, optional SRT or WebVTT `subtitles`, `language`, `title`, `platform`, `durationSec` and the charged minutes.
- Languages: Whisper detects the spoken language (about 100 languages). You can also choose it.
- Privacy: media is processed inside the run and deleted. Only the text rows and the run summary are saved.

### Good for

- Get the words of TikTok, Reels and Shorts videos for content research, captions or repurposing.
- Make SRT or VTT subtitles for a public video or your own media file.
- Turn interviews, talks and podcasts on YouTube into searchable text for notes, search or an AI pipeline.
- Mix links from different sites in one run and get one table.

### Not a good fit

- No private, login-only, paid, age-restricted or DRM-protected videos. The Actor never logs in.
- No live streams or upcoming premieres.
- No playlists, channels or profiles: use the link of one video. A playlist link returns `UNSUPPORTED_URL`.
- No speaker labels (who said what) and no translation.
- Whisper can misspell names and rare words. Check important quotes against the video.

## Price

Prices will be shown after release.

## Questions

### Do I need a TikTok or YouTube account?

No. It works without login. So private videos are not supported.

### Which languages work?

Whisper supports about 100 languages. Quality is best for widely spoken ones.

### Are the videos stored?

No. The audio is transcribed and deleted. Only the text is saved.

### How many links can I add?

Up to 100 links per run, up to 180 minutes each.

### Do I need an OpenAI or other API key?

No. The Whisper model runs inside the Actor. You only pay the events above.

### Why does a YouTube minute cost more?

YouTube blocks data-center servers, so the Actor downloads YouTube audio through a residential proxy. The YouTube price includes that traffic.

## Data fields

- `url` (string): The link as given in the input.
- `platform` (string): Where the audio came from: tiktok, instagram, x, facebook, youtube, ... or direct for a media file link.
- `title` (string): Video title or post caption from the page, when available.
- `status` (string): complete (whole video), partial (only the first part: Max minutes, your cost cap, run timeout or an interrupted download), not_found (removed or missing) or error (see the error field).
- `durationSec` (number): Length of the video or file in seconds, when known.
- `transcribedSec` (number): Seconds of audio transcribed; charged minutes are this rounded up to whole minutes.
- `truncated` (boolean): true when only the first part was transcribed.
- `language` (string): Language code used (detected or chosen).
- `languageProbability` (number): Confidence of automatic language detection, 0-1; null when you chose the language.
- `model` (string): Whisper model used: tiny or base.
- `text` (string): Full transcript text.
- `wordCount` (integer): Number of words in text. 0 for videos with music only.
- `segments` (array): Timed segments {start, end, text} in seconds.
- `subtitles` (string): SRT or WebVTT file content when Subtitles is srt or vtt.
- `chargedMinutes` (integer): Minutes charged for this link (0 on errors).
- `processingSec` (number): Time spent on this link in seconds.
- `error` (object): {code, message}: e.g. NOT_FOUND, LOGIN_REQUIRED, DRM_PROTECTED, LIVE, BLOCKED, UNSUPPORTED_URL, INVALID_URL, BLOCKED_ADDRESS (private or local address), NOT_MEDIA, NO_AUDIO, FILE_TOO_LARGE, DOWNLOAD_ERROR, DOWNLOAD_TIMEOUT, NETWORK_ERROR, TOO_SLOW, PROXY_UNAVAILABLE, INTERNAL_ERROR, TRUNCATED (partial), CHARGE_LIMIT, RUN_TIME_LIMIT, ABORTED, SKIPPED_BLOCKED and SKIPPED_SLOW_SOURCES (not requested, not charged); null when none.
- `fetchedAt` (string): When the row was produced, ISO 8601 UTC.

## Input settings

- `urls` (array, required): Up to 100 public links: a video post page (TikTok, Instagram Reel, X post, Facebook video, YouTube video or Short, SoundCloud and other public video sites) or a direct file link (MP3, MP4, M4A and other audio or video files). Private, login-only and DRM-protected videos are not supported. Duplicates are processed once.
- `language` (string): Detect automatically listens to the first 30 seconds. Choose the language when you know it: short clips with music often get a wrong guess.
- `model` (string): Both models run on CPU and cost the same per minute.
- `outputFormat` (string): Every row has the full text and timed segments {start, end, text}. srt or vtt also adds a ready subtitle file in the subtitles field.
- `maxDurationMinutes` (integer): Only the first N minutes of each video or file are downloaded, transcribed and charged; longer ones return status partial.

## Step by step on Apify

1. Open the Input tab.
2. In Video or audio links (`urls`), keep the example LibriVox file or paste your own links, one per line.
3. Keep the defaults: language `auto`, model `base`, subtitles `none`.
4. Click Start.
5. Open the Transcripts view in the Output tab and read the Transcript column.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Content research on short videos | TikTok, Reels, Shorts links | one row per video | `text`, `title`, `platform`, `language` | send `text` to a summary, tagging or search tool |
| Subtitles for a video | one link + `outputFormat: srt` | one row | `subtitles`, `segments` | save `subtitles` as a `.srt` file |
| Quotes from interviews and talks | YouTube or X links | one row per video | `segments`, `text` | find a quote and jump to its `start` second |
| Text for an AI agent or RAG | any mix of links | one row per link | `text`, `wordCount`, `url` | index `text` with the `url` as the source |

## Tips

- Set the spoken language if you know it.
- Use the tiny model for very long videos to save time.
- Index the text with the video link as the source for AI tools.

## Limits



- Up to 100 links per run and up to 180 minutes per link (`maxDurationMinutes`). We tested YouTube videos up to 104 minutes and a 3-hour audiobook file with `tiny` (about 20 minutes). With `base`, 3 hours of audio take about 50 minutes, so raise the timeout to 4500 seconds or use `tiny`.
- Media files up to 1.5 GB.
- The default run timeout is 3600 seconds. A 90-minute YouTube video with `base` takes about 27 minutes. For several long videos, use `tiny`, raise the timeout, or use 4096 MB memory.
- When the timeout comes near, the current link is saved as `partial` and the next links get `RUN_TIME_LIMIT`.
- If one site refuses or does not answer 3 links in a run, or 3 video links in a row get no answer from any sites, the next video links are skipped with `SKIPPED_BLOCKED` and are not charged.

## Sample result

```json
{
  "url": "https://archive.org/download/gettysburg_johng_librivox/gettysburg_address.mp3",
  "platform": "direct",
  "title": null,
  "status": "complete",
  "durationSec": 157.88,
  "transcribedSec": 157.88,
  "truncated": false,
  "language": "en",
  "languageProbability": 0.999,
  "model": "base",
  "text": "This is a Libravox recording. All Libravox recordings are in the public domain. … The Gettysburg Address by Abraham Lincoln. …",
  "wordCount": 303,
  "segments": [
    {"start": 0.05, "end": 5.05, "text": "This is a Libravox recording. All Libravox recordings are in the public domain."},
    {"start": 5.05, "end": 10.05, "text": "For more information or to volunteer, please visit Libravox.org."},
    {"start": 10.05, "end": 17.29, "text": "The Gettysburg Address by Abraham Lincoln."}
  ],
  "subtitles": null,
  "chargedMinutes": 3,
  "processingSec": 18.3,
  "error": null,
  "fetchedAt": "2026-10-16T02:14:22Z"
}
```

## Use cases with this tool

- [One piece of content, ten new posts](https://cliqtomedia.com/actors/use-cases/content-repurposing/): Turn videos, podcasts, PDFs and articles into clean text. Make posts, notes and AI drafts from it.

## Similar tools

- [Audio & Podcast Transcriber (Speech to Text)](https://cliqtomedia.com/actors/audio-video-transcriber/)
- [YouTube Subtitles & Transcript Scraper API](https://cliqtomedia.com/actors/youtube-transcript-scraper/)
- [YouTube Comments Scraper](https://cliqtomedia.com/actors/youtube-comments-scraper/)
- [Apple Podcast Directory & RSS Contacts Scraper](https://cliqtomedia.com/actors/podcast-directory-rss-contacts-scraper/)
- [Social Video Downloader: TikTok, Instagram, X - No Login](https://cliqtomedia.com/actors/social-video-downloader/)
- [YouTube Search Results Scraper — No Login](https://cliqtomedia.com/actors/youtube-search-scraper/)
